@termix-it/cryptoclaw 1.0.4 → 1.0.6

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 (337) hide show
  1. package/README.md +276 -38
  2. package/dist/{accounts-DarjcXFz.js → accounts-BSIXwC37.js} +1 -1
  3. package/dist/{accounts-CucAhPu5.js → accounts-Bod7973i.js} +7 -7
  4. package/dist/{accounts-DjUjM_0M.js → accounts-D3YOECeq.js} +1 -1
  5. package/dist/{acp-cli-BKEdLWJH.js → acp-cli-CGC73qiP.js} +8 -8
  6. package/dist/{agent-scope-C5bklqr1.js → agent-scope-BGsA4zEf.js} +17 -17
  7. package/dist/{agents-C26D9541.js → agents-SpePW-me.js} +14 -14
  8. package/dist/{agents.config-BSkzwDQZ.js → agents.config-g0LyahNR.js} +2 -2
  9. package/dist/{api-key-rotation-DUAhkuoF.js → api-key-rotation-BoN0bfDN.js} +1 -1
  10. package/dist/{audio-preflight-DFpELnh5.js → audio-preflight-CN6L8zsG.js} +34 -34
  11. package/dist/{audio-transcription-runner-C1T1UDgG.js → audio-transcription-runner-D6NSiBUN.js} +23 -23
  12. package/dist/{audit-BJ5b9jj6.js → audit-C3kgCKKq.js} +29 -29
  13. package/dist/{auth-CgV_wGar.js → auth-BQOIUcK5.js} +1 -1
  14. package/dist/{auth-choice-DG-39eTP.js → auth-choice-ClGYfSky.js} +13 -13
  15. package/dist/{auth-choice-tnRPpsDE.js → auth-choice-pU5ch2o1.js} +11 -11
  16. package/dist/{auth-choice.apply-helpers-DAj6Co-H.js → auth-choice.apply-helpers-BF8uDNAl.js} +1 -1
  17. package/dist/{auth-profiles-CtYlKXxI.js → auth-profiles-yB_p54Kf.js} +16 -16
  18. package/dist/{auth-token-Ijqjdh1h.js → auth-token-C_wfhGFh.js} +1 -1
  19. package/dist/{banner-CY1oW10M.js → banner-C01HhkYN.js} +2 -2
  20. package/dist/{bonjour-discovery-ttcR8uJV.js → bonjour-discovery-DRbbMuPV.js} +1 -1
  21. package/dist/{browser-cli-DosaTN2z.js → browser-cli-t5Ko46IP.js} +12 -12
  22. package/dist/build-info.json +3 -3
  23. package/dist/{call-BHrnZxI1.js → call-CeJbHmC5.js} +10 -10
  24. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  25. package/dist/{channel-account-context-BjsJwBrl.js → channel-account-context-CZg6xYM_.js} +5 -5
  26. package/dist/{channel-activity-CudRDPXk.js → channel-activity-CtUzm0zi.js} +1 -1
  27. package/dist/{channel-options-DRQo8X5b.js → channel-options-DKP2et7c.js} +3 -3
  28. package/dist/{channel-selection-D2KncGab.js → channel-selection-BGFLNPuZ.js} +1 -1
  29. package/dist/{channel-web-BxqW0jAU.js → channel-web-CjBStv9j.js} +17 -17
  30. package/dist/{channels-cli-BgpYg0HG.js → channels-cli-B7QQDJC8.js} +93 -93
  31. package/dist/{channels-status-issues-JgPH8x7b.js → channels-status-issues-UpBSKB6j.js} +1 -1
  32. package/dist/{chrome-m5f8q2YK.js → chrome-NrlBIdcn.js} +4 -4
  33. package/dist/{clawbot-cli-CrkYNKVe.js → clawbot-cli-fmA08wJd.js} +11 -11
  34. package/dist/cli/daemon-cli.js +1 -1
  35. package/dist/{cli-2paqSkPz.js → cli-DO7xcifm.js} +73 -73
  36. package/dist/{client-BqLxmdBY.js → client-Kkj2aHgb.js} +2 -2
  37. package/dist/{command-registry-C3IdEOLg.js → command-registry-Ckb_NblW.js} +11 -11
  38. package/dist/{command-secret-targets-_FGz0zdz.js → command-secret-targets-CVAt80vu.js} +4 -4
  39. package/dist/{commands-CP-eujrx.js → commands-BYuioJO3.js} +1 -1
  40. package/dist/{commands-registry-BxWE_gts.js → commands-registry-DCOqmmUF.js} +3 -3
  41. package/dist/{completion-cli-D_Hp6T_X.js → completion-cli-3DXayCwj.js} +13 -13
  42. package/dist/{config-cli-DLVXpjXN.js → config-cli-DDe7yEGq.js} +7 -7
  43. package/dist/{config-guard-D9yUiM86.js → config-guard-DpzGAFpd.js} +3 -3
  44. package/dist/{config-validation-C-plaBVT.js → config-validation-BS6k_44h.js} +3 -3
  45. package/dist/{configure-idrmyczj.js → configure-M4LELgRU.js} +17 -17
  46. package/dist/{control-ui-assets-1CYoFkJQ.js → control-ui-assets-CYQNSPY0.js} +1 -1
  47. package/dist/{cron-cli-CxAxkYel.js → cron-cli-C0tDGxo5.js} +11 -11
  48. package/dist/{daemon-cli-Bntp6emS.js → daemon-cli-D7rQUQZq.js} +15 -15
  49. package/dist/{daemon-install-LNixC8Pb.js → daemon-install-C_ygPena.js} +4 -4
  50. package/dist/{daemon-install-helpers-CyjpUUrm.js → daemon-install-helpers-so86sfkZ.js} +11 -11
  51. package/dist/{deliver-HkPDAwY2.js → deliver-Bh8OdZ9H.js} +7 -7
  52. package/dist/deliver-runtime-DkDQPjmE.js +61 -0
  53. package/dist/deps-send-discord.runtime-DhhOEbEN.js +36 -0
  54. package/dist/deps-send-imessage.runtime-CeatZSyv.js +35 -0
  55. package/dist/deps-send-signal.runtime-xlqQXnR0.js +34 -0
  56. package/dist/deps-send-slack.runtime-m3yDRYug.js +32 -0
  57. package/dist/{deps-send-telegram.runtime-DUo2GPb7.js → deps-send-telegram.runtime-DhLKcoGf.js} +16 -16
  58. package/dist/deps-send-whatsapp.runtime-DZR3Tix2.js +119 -0
  59. package/dist/{devices-cli-DDu3iEJN.js → devices-cli-DKERiq8E.js} +8 -8
  60. package/dist/{diagnostic-3zN7XEY1.js → diagnostic-Dp-KkeSq.js} +1 -1
  61. package/dist/{diagnostics-Dys24A-s.js → diagnostics-Cuvdgf7E.js} +5 -5
  62. package/dist/{directory-cli-BgL_9wd5.js → directory-cli-DFN_WTag.js} +7 -7
  63. package/dist/{dns-cli-B0zPrZBi.js → dns-cli-DO8cd5zZ.js} +5 -5
  64. package/dist/{dock-BaM5oTqE.js → dock-DjC0vgOm.js} +4 -4
  65. package/dist/{docs-cli-4R8XltvA.js → docs-cli-GcB4tM-4.js} +4 -4
  66. package/dist/{doctor-completion-5TLzN3Se.js → doctor-completion-3P8WMHdK.js} +2 -2
  67. package/dist/{doctor-config-flow-DWHPUDqY.js → doctor-config-flow-WQpcISHd.js} +15 -15
  68. package/dist/{enable-BP58hyxE.js → enable-Di6fjV84.js} +1 -1
  69. package/dist/entry.js +2 -2
  70. package/dist/{exec-approvals-allowlist-CGQJSJfD.js → exec-approvals-allowlist-CSsG6lrG.js} +1 -1
  71. package/dist/{exec-approvals-cli-DmOSbNpe.js → exec-approvals-cli-BuZEm_3t.js} +16 -16
  72. package/dist/{exec-safe-bin-runtime-policy-nkIQWrRj.js → exec-safe-bin-runtime-policy-ukabtnTn.js} +2 -2
  73. package/dist/{fetch-qkXypRi6.js → fetch-DmaNytop.js} +3 -3
  74. package/dist/{fetch-guard-CS_3jTMA.js → fetch-guard-0V5i-cZz.js} +1 -1
  75. package/dist/{fs-safe-CYrszQI6.js → fs-safe-DTO6fZ7N.js} +24 -24
  76. package/dist/{gateway-cli-Ct4tgMMm.js → gateway-cli-VJJtBtt2.js} +153 -153
  77. package/dist/{gateway-rpc-eEkc-oSq.js → gateway-rpc-BLIo1-nR.js} +1 -1
  78. package/dist/{health-CWuNlSLA.js → health-Ry4jLJFh.js} +11 -11
  79. package/dist/{hooks-cli-DdEAtyWm.js → hooks-cli-CpYtmeh1.js} +81 -81
  80. package/dist/{hooks-status-NIiTaX__.js → hooks-status-C_u7irQ4.js} +1 -1
  81. package/dist/{image-ktIANJRi.js → image-5Dop2pwF.js} +5 -5
  82. package/dist/{image-ops-WJSAG5_7.js → image-ops-Ba5soKsa.js} +10 -10
  83. package/dist/image-runtime-vjBJe2FQ.js +55 -0
  84. package/dist/{inspect-DWaajebj.js → inspect-Bnp4NJm0.js} +4 -4
  85. package/dist/{install-safe-path-BmAf3bF5.js → install-safe-path-DgGlNCpx.js} +25 -25
  86. package/dist/{installs-DMDJeMmr.js → installs-Bjh1q5wQ.js} +9 -9
  87. package/dist/{ipv4-DIovCoyM.js → ipv4-BsIL6DPy.js} +1 -1
  88. package/dist/{ir-xdB7409t.js → ir-SEi7gUP9.js} +8 -8
  89. package/dist/{issue-format-DaXc0Ssz.js → issue-format-DEHEwGJB.js} +1 -1
  90. package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
  91. package/dist/{lifecycle-core-BinqEyma.js → lifecycle-core-t2Q34Tiu.js} +5 -5
  92. package/dist/{login-62iNga_2.js → login-DKh_sv9q.js} +3 -3
  93. package/dist/{login-qr-DMWPhIpQ.js → login-qr-9Wvtlmqz.js} +6 -6
  94. package/dist/{logs-cli-BN9aRZlE.js → logs-cli-BQTvPOds.js} +9 -9
  95. package/dist/{manager-DstlJwRR.js → manager-DKcbmdLj.js} +14 -14
  96. package/dist/{manager-runtime-DktggQQ7.js → manager-runtime-CdY_4s56.js} +9 -9
  97. package/dist/{manifest-registry-DjbHJw7g.js → manifest-registry-CzoQ4XAn.js} +1 -1
  98. package/dist/{memory-cli-B4tlY2Jz.js → memory-cli-CEZedlbs.js} +12 -12
  99. package/dist/{model-BLdajRK2.js → model-B2Sraf73.js} +2 -2
  100. package/dist/{model-catalog-DorZGOmy.js → model-catalog-B9Kd_iNy.js} +3 -3
  101. package/dist/{model-picker-Cn-yEB3e.js → model-picker-DyLoTKdE.js} +4 -4
  102. package/dist/{models-B_vCWO9r.js → models-CZbq8HGI.js} +17 -17
  103. package/dist/{models-cli-BBMBrNuk.js → models-cli-8aPPSLLl.js} +78 -78
  104. package/dist/{models-config-VlzOga1W.js → models-config-C7yYEUbY.js} +6 -6
  105. package/dist/{net-DFijUFfS.js → net-CfwQaj6f.js} +2 -2
  106. package/dist/{node-cli-BfSkX-wS.js → node-cli-BRIl5jr7.js} +33 -33
  107. package/dist/{node-command-policy-BMgJ81FO.js → node-command-policy-yJ_VpCHq.js} +1 -1
  108. package/dist/{node-service-BeDB4avc.js → node-service-9R10zILv.js} +1 -1
  109. package/dist/{nodes-cli-D0etQIcH.js → nodes-cli-CARJm2ko.js} +16 -16
  110. package/dist/{nodes-screen-DWVpmvMz.js → nodes-screen-DF7EBTLu.js} +7 -7
  111. package/dist/{npm-pack-install-BUyXXcPz.js → npm-pack-install-DdqL1Mh1.js} +18 -18
  112. package/dist/{npm-resolution-DSDaOY0G.js → npm-resolution-BaKXXkK7.js} +4 -4
  113. package/dist/{onboard-BEv6XhMg.js → onboard-C7cwcgUt.js} +6 -6
  114. package/dist/{onboard-channels-DAQmVNUf.js → onboard-channels-VhiLL846.js} +21 -21
  115. package/dist/{onboard-custom-BIY24QCh.js → onboard-custom-2gc6FKvI.js} +4 -4
  116. package/dist/{onboard-helpers-CPO08jBg.js → onboard-helpers-Mort99IL.js} +10 -10
  117. package/dist/{onboard-hooks-CK-gx645.js → onboard-hooks-DPho1fkd.js} +4 -4
  118. package/dist/{onboard-remote-SQzkLmdW.js → onboard-remote-BfScc2nM.js} +4 -4
  119. package/dist/{onboard-skills-B2UtgSDa.js → onboard-skills-CkZeXqxE.js} +4 -4
  120. package/dist/{onboarding-CWdu0f2f.js → onboarding-DyjqYKzZ.js} +14 -14
  121. package/dist/{onboarding.finalize-BD5_L4rw.js → onboarding.finalize-Rn8lrC90.js} +87 -87
  122. package/dist/{onboarding.gateway-config-CBJgsZvM.js → onboarding.gateway-config-D83188RW.js} +18 -18
  123. package/dist/{onboarding.secret-input-B_lhRVqi.js → onboarding.secret-input-CG_ZOH5i.js} +1 -1
  124. package/dist/{openai-model-default-OdIXYQox.js → openai-model-default-D1kdZKT2.js} +2 -2
  125. package/dist/{openclaw-root-BFfBQ6FD.js → openclaw-root-BU3lu8pM.js} +8 -8
  126. package/dist/{outbound-m-MM0HUr.js → outbound-BrhmfCk2.js} +3 -3
  127. package/dist/{outbound-attachment-BewsAqvJ.js → outbound-attachment-MWhTrPYa.js} +2 -2
  128. package/dist/{pairing-cli-CjrZxYPI.js → pairing-cli-BLxX0PoT.js} +8 -8
  129. package/dist/{pairing-labels-BU1EH5qm.js → pairing-labels-C1jblVNc.js} +1 -1
  130. package/dist/{pairing-store-CrEzWjmd.js → pairing-store-B_UHGVGM.js} +3 -3
  131. package/dist/{path-alias-guards-DbNvNQar.js → path-alias-guards-DhIwq92y.js} +3 -3
  132. package/dist/{path-safety-ClQO4BB6.js → path-safety-BjIM4N4t.js} +1 -1
  133. package/dist/{paths-BaZIBy3U.js → paths-CGf7Nrz-.js} +9 -9
  134. package/dist/{pi-embedded-helpers-CJZP0u_Y.js → pi-embedded-helpers-D9bQLeoK.js} +6 -6
  135. package/dist/{pi-model-discovery-IzndsQh-.js → pi-model-discovery-BmqY0Fxk.js} +1 -1
  136. package/dist/{pi-model-discovery-runtime-Bc-2_ZlP.js → pi-model-discovery-runtime-Ce9Tz7Qj.js} +5 -5
  137. package/dist/{pi-tools.before-tool-call.runtime-D4tLWmkM.js → pi-tools.before-tool-call.runtime-B3faxm6v.js} +5 -5
  138. package/dist/{pi-tools.policy-B72vqcZC.js → pi-tools.policy-B1sTh_x1.js} +5 -5
  139. package/dist/{plugin-auto-enable-BJfAN-kO.js → plugin-auto-enable-DFhRs_Ha.js} +3 -3
  140. package/dist/{plugin-registry-Coex6Pjp.js → plugin-registry-34ghMzQO.js} +3 -3
  141. package/dist/plugin-sdk/{accounts-C1nsQfAq.js → accounts-B9LsoWRN.js} +3 -3
  142. package/dist/plugin-sdk/{accounts-8MUKWeGv.js → accounts-UnMpt5N3.js} +2 -2
  143. package/dist/plugin-sdk/{accounts-CPoohfrp.js → accounts-raZ4ECkq.js} +2 -2
  144. package/dist/plugin-sdk/{active-listener-Degi0it3.js → active-listener-Eb16HTkk.js} +2 -2
  145. package/dist/plugin-sdk/{api-key-rotation-CbsZTTUf.js → api-key-rotation-CVee9nRS.js} +2 -2
  146. package/dist/plugin-sdk/{audio-preflight-De3ToOLv.js → audio-preflight-B82VQczF.js} +26 -26
  147. package/dist/plugin-sdk/{audio-transcription-runner-B99FfbzJ.js → audio-transcription-runner-qZ6rKQHs.js} +11 -11
  148. package/dist/plugin-sdk/{audit-membership-runtime-DS34hPU6.js → audit-membership-runtime-Re50ULXH.js} +2 -2
  149. package/dist/plugin-sdk/{channel-activity-DdXRr2be.js → channel-activity-DhjaEnHr.js} +3 -3
  150. package/dist/plugin-sdk/{channel-web-DyO5wH-M.js → channel-web-Cd9ofl4F.js} +18 -18
  151. package/dist/plugin-sdk/{chrome-D9S09VjY.js → chrome-DkRruWw9.js} +6 -6
  152. package/dist/plugin-sdk/{commands-registry-7sKgV6b6.js → commands-registry-DCIdoQuk.js} +4 -4
  153. package/dist/plugin-sdk/{config-hSLjGMqo.js → config-Dq7-4cgI.js} +7 -7
  154. package/dist/plugin-sdk/{deliver-CmBonhhr.js → deliver-BFO3PdBy.js} +10 -10
  155. package/dist/plugin-sdk/deliver-runtime-BWZ4MjCx.js +32 -0
  156. package/dist/plugin-sdk/deps-send-discord.runtime-DOOrRWmj.js +23 -0
  157. package/dist/plugin-sdk/deps-send-imessage.runtime-B5w4Zb7g.js +22 -0
  158. package/dist/plugin-sdk/deps-send-signal.runtime-NUsgzgnc.js +21 -0
  159. package/dist/plugin-sdk/deps-send-slack.runtime-30nkLxsY.js +19 -0
  160. package/dist/plugin-sdk/deps-send-telegram.runtime-D2BsaDBJ.js +24 -0
  161. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DMtrDoHb.js +57 -0
  162. package/dist/plugin-sdk/{diagnostic-XZ76ECg1.js → diagnostic-DiXA_NOk.js} +2 -2
  163. package/dist/plugin-sdk/{errors-C-TFeu_U.js → errors-x0EvNKYN.js} +1 -1
  164. package/dist/plugin-sdk/{fetch-guard-BNChovQk.js → fetch-guard-DHh-3Pq7.js} +2 -2
  165. package/dist/plugin-sdk/{fs-safe-B8jm0acc.js → fs-safe-Obb1u_C-.js} +3 -3
  166. package/dist/plugin-sdk/{image-BzikjBti.js → image-C2hwEt8m.js} +6 -6
  167. package/dist/plugin-sdk/{image-ops-DBR1x_FT.js → image-ops-C7Kt1ryv.js} +2 -2
  168. package/dist/plugin-sdk/image-runtime-Vtwamfai.js +25 -0
  169. package/dist/plugin-sdk/index.js +50 -50
  170. package/dist/plugin-sdk/{ir-CvW_AaoY.js → ir-DEyFvrC3.js} +7 -7
  171. package/dist/plugin-sdk/{local-roots-CW4yjHjO.js → local-roots-BS6aNMOU.js} +4 -4
  172. package/dist/plugin-sdk/{logger-z1vqlUc1.js → logger-COmHOvdm.js} +2 -2
  173. package/dist/plugin-sdk/{login-BzaOlpPR.js → login-C0QJfY7H.js} +4 -4
  174. package/dist/plugin-sdk/{login-qr-C0z_KRnC.js → login-qr-0qmwdPb0.js} +5 -5
  175. package/dist/plugin-sdk/{manager-DTf6k6ib.js → manager-8RgL4Sdy.js} +8 -8
  176. package/dist/plugin-sdk/manager-runtime-B7jfPrQb.js +15 -0
  177. package/dist/plugin-sdk/{outbound-attachment-BYR_GvCl.js → outbound-attachment-D2rmCK5Q.js} +2 -2
  178. package/dist/plugin-sdk/{outbound-DmES81b6.js → outbound-r2idzBjf.js} +5 -5
  179. package/dist/plugin-sdk/{path-alias-guards-CMpHLrQn.js → path-alias-guards-DlbgzmZl.js} +1 -1
  180. package/dist/plugin-sdk/{paths-NcyWgkDa.js → paths-B2ytnsaB.js} +1 -1
  181. package/dist/plugin-sdk/{pi-embedded-helpers-6BaZvTwA.js → pi-embedded-helpers-xCyAR479.js} +16 -16
  182. package/dist/plugin-sdk/{pi-model-discovery-DYyEobhW.js → pi-model-discovery-C31bQ9NT.js} +1 -1
  183. package/dist/plugin-sdk/pi-model-discovery-runtime-C5Suk1AS.js +8 -0
  184. package/dist/plugin-sdk/{pi-tools.before-tool-call.runtime-ocH9ttx6.js → pi-tools.before-tool-call.runtime-BPpgalFg.js} +4 -4
  185. package/dist/plugin-sdk/{plugins-B_UiQZHB.js → plugins-CRPN1AUk.js} +4 -4
  186. package/dist/plugin-sdk/{proxy-fetch-DxlXp4Yi.js → proxy-fetch-BZAtM2fT.js} +1 -1
  187. package/dist/plugin-sdk/{pw-ai-B-yFpAtd.js → pw-ai-kU3tw4ws.js} +9 -9
  188. package/dist/plugin-sdk/{qmd-manager-uz9PCVkw.js → qmd-manager-5TI5OD4_.js} +7 -7
  189. package/dist/plugin-sdk/{query-expansion-D8bZEHLi.js → query-expansion-miz9J0WR.js} +4 -4
  190. package/dist/plugin-sdk/{redact-DIGZ7dEc.js → redact-DZTeCKgA.js} +1 -1
  191. package/dist/plugin-sdk/{reply-DHKovUx3.js → reply-2zncCurP.js} +73 -73
  192. package/dist/plugin-sdk/{resolve-outbound-target-DAomg7DR.js → resolve-outbound-target-BZynpUy7.js} +2 -2
  193. package/dist/plugin-sdk/{run-with-concurrency-qFOkp49n.js → run-with-concurrency-BdEQVn3N.js} +1 -1
  194. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-BhSqT2c_.js +10 -0
  195. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-DrZrtcgL.js +19 -0
  196. package/dist/plugin-sdk/{send-DHx11WPi.js → send-BraCxR1K.js} +13 -13
  197. package/dist/plugin-sdk/{send-D7LHac9D.js → send-DDxJMLW5.js} +7 -7
  198. package/dist/plugin-sdk/{send-iL8NdxQL.js → send-DGJD5miT.js} +8 -8
  199. package/dist/plugin-sdk/{send-AAxixxac.js → send-DXAc8sNQ.js} +6 -6
  200. package/dist/plugin-sdk/{send-BikqI3_Q.js → send-srOsTG5v.js} +5 -5
  201. package/dist/plugin-sdk/{session-B8SERluE.js → session-DPtviLOH.js} +3 -3
  202. package/dist/plugin-sdk/{skill-commands-BBiGcASQ.js → skill-commands-9Q1xjzBv.js} +4 -4
  203. package/dist/plugin-sdk/{skills-uVCpkzHJ.js → skills-DibmdNLb.js} +6 -6
  204. package/dist/plugin-sdk/slack.js +2 -2
  205. package/dist/plugin-sdk/slash-commands.runtime-z1q_nPnV.js +13 -0
  206. package/dist/plugin-sdk/slash-dispatch.runtime-CR4I_6w5.js +52 -0
  207. package/dist/plugin-sdk/slash-skill-commands.runtime-BzB0BO-7.js +16 -0
  208. package/dist/plugin-sdk/{ssrf-BvmhOmnD.js → ssrf-C6DhX4-H.js} +1 -1
  209. package/dist/plugin-sdk/{store-CDD0KdbU.js → store-ZIdTTfE4.js} +2 -2
  210. package/dist/plugin-sdk/subagent-registry-runtime-UnNrLL2P.js +52 -0
  211. package/dist/plugin-sdk/{tables-DnzlEbCE.js → tables-BssKNJPW.js} +1 -1
  212. package/dist/plugin-sdk/{target-errors-BInUjyyh.js → target-errors-CXWbQSBp.js} +2 -2
  213. package/dist/plugin-sdk/{thinking-CLc4CsZU.js → thinking-DMfnE3HJ.js} +7 -7
  214. package/dist/plugin-sdk/{tokens-DuRErjk3.js → tokens-XT-8y62w.js} +1 -1
  215. package/dist/plugin-sdk/{tool-images-h8wHgEL8.js → tool-images-DbDPeOjK.js} +2 -2
  216. package/dist/plugin-sdk/web-D7S-5qkT.js +56 -0
  217. package/dist/plugin-sdk/{whatsapp-actions-BBLa4ciE.js → whatsapp-actions-DKfas9MG.js} +17 -17
  218. package/dist/{plugins-B4AetCpQ.js → plugins-DO_6iMZV.js} +2 -2
  219. package/dist/{plugins-cli-BC1OrfRZ.js → plugins-cli-CrVhFNFQ.js} +83 -83
  220. package/dist/{ports-BUQm2J6L.js → ports-D7wHAklC.js} +1 -1
  221. package/dist/{ports-BpZiRmiG.js → ports-jknVhOJa.js} +2 -2
  222. package/dist/{program-DP3cy7oT.js → program-DJShjgis.js} +81 -81
  223. package/dist/{prompt-select-styled-doOKqwJk.js → prompt-select-styled-BEQND6Pn.js} +40 -40
  224. package/dist/{provider-auth-helpers-DcmZK4IP.js → provider-auth-helpers-CHEChUx_.js} +5 -5
  225. package/dist/{proxy-env-BEfRNPmW.js → proxy-env-C61VbSzS.js} +1 -1
  226. package/dist/{push-apns-Duv_LH_E.js → push-apns-BPEC7SVy.js} +5 -5
  227. package/dist/{pw-ai-Ds5f7Rvv.js → pw-ai-BWsikzYD.js} +18 -18
  228. package/dist/{qmd-manager-4HixPUdU.js → qmd-manager-DefwbEao.js} +20 -20
  229. package/dist/{qr-cli-D4MiTFeD.js → qr-cli-CoXD6uPd.js} +2 -2
  230. package/dist/{query-expansion-DfWHFCTw.js → query-expansion-BlsKiJrV.js} +12 -12
  231. package/dist/{redact-snapshot-BE1hcZlN.js → redact-snapshot-M27Gs1s9.js} +1 -1
  232. package/dist/{register.agent-DFd8-wLc.js → register.agent-t529UsnC.js} +94 -94
  233. package/dist/register.configure-Dn11C-E_.js +165 -0
  234. package/dist/{register.maintenance-CouoMEPC.js → register.maintenance-FmxcJgcW.js} +95 -95
  235. package/dist/{register.message-g4CdwiKD.js → register.message-BCoDh2cF.js} +74 -74
  236. package/dist/{register.onboard-DlKw4xXK.js → register.onboard-DZar0J8o.js} +18 -18
  237. package/dist/{register.setup-kxCLJtkA.js → register.setup-D14CyWuc.js} +21 -21
  238. package/dist/{register.status-health-sessions-BakEjuIX.js → register.status-health-sessions-B6crPNF9.js} +88 -88
  239. package/dist/{register.subclis-E3VXJcR8.js → register.subclis-BAATApi1.js} +31 -31
  240. package/dist/{rpc-C9k7pLBW.js → rpc-CA7yGckN.js} +1 -1
  241. package/dist/{run-main-k4NWKRqz.js → run-main-B19t_gLX.js} +92 -92
  242. package/dist/{runtime-CagDsJFx.js → runtime-D_htBj_7.js} +3 -3
  243. package/dist/{runtime-config-collectors-D0I8Qs4G.js → runtime-config-collectors-mLMSoY2n.js} +1 -1
  244. package/dist/{runtime-whatsapp-login.runtime-BvfhsLJm.js → runtime-whatsapp-login.runtime-BtBGjvx6.js} +7 -7
  245. package/dist/{runtime-whatsapp-outbound.runtime-QL3Riu-B.js → runtime-whatsapp-outbound.runtime-D1d2rg_z.js} +15 -15
  246. package/dist/{sandbox-CgTcwizP.js → sandbox-C-8JxFW5.js} +18 -18
  247. package/dist/{sandbox-cli-56gCyo4f.js → sandbox-cli-xIBSXLbp.js} +25 -25
  248. package/dist/{secrets-cli-BjzX5BIS.js → secrets-cli-DwpF8ldn.js} +11 -11
  249. package/dist/{security-cli-C8_7pezc.js → security-cli-BjfOTh6K.js} +42 -42
  250. package/dist/{send-BhJJuiPi.js → send-BzRMouwD.js} +4 -4
  251. package/dist/{send-BCdpg1w2.js → send-Cp2_MKSV.js} +5 -5
  252. package/dist/{send-DDvvsvcJ.js → send-D2Kyg_GY.js} +11 -11
  253. package/dist/{send-CkFo9xha.js → send-DrEo-BBc.js} +6 -6
  254. package/dist/{send-B1C9OCt2.js → send-NBLtGiEh.js} +8 -8
  255. package/dist/{server-EsF-rWXM.js → server-Cz0R7Scf.js} +20 -20
  256. package/dist/{server-context-DAejIBKi.js → server-context-vco06zxO.js} +12 -12
  257. package/dist/{server-lifecycle-C0IxrwRk.js → server-lifecycle-BnUgXA5X.js} +2 -2
  258. package/dist/{server-middleware-B8_ZaIoM.js → server-middleware-D5lrCTcL.js} +1 -1
  259. package/dist/{server-node-events-1jnvsPrM.js → server-node-events-BTTa3-DI.js} +74 -74
  260. package/dist/{service-T5lT7h-M.js → service-B6Pm7AZA.js} +15 -15
  261. package/dist/{session-XvQQBDSC.js → session-CDSphrCx.js} +1 -1
  262. package/dist/{session-utils-CDs6jjz-.js → session-utils-LerBXiBL.js} +6 -6
  263. package/dist/{sessions-JCqDw8Bf.js → sessions-C7q1EhRK.js} +4 -4
  264. package/dist/{sessions-D4pBAOV-.js → sessions-UwbRBc7C.js} +15 -15
  265. package/dist/{shared-BrmHcYtZ.js → shared-BVq1q5D-.js} +1 -1
  266. package/dist/{shared-DaWK788E.js → shared-sIizRbI9.js} +3 -3
  267. package/dist/{skill-commands-DDRb6be1.js → skill-commands-CeEZlRJj.js} +5 -5
  268. package/dist/{skill-scanner-BdA-XFky.js → skill-scanner-DGx7tLvP.js} +6 -6
  269. package/dist/{skills-Dde3dh7M.js → skills-B16i2mme.js} +3 -3
  270. package/dist/{skills-cli-hPtKeBYo.js → skills-cli-COBPySVc.js} +5 -5
  271. package/dist/{skills-install-BG5c8jOQ.js → skills-install-CEgXF7D3.js} +6 -6
  272. package/dist/{skills-status-Cl0jR0kA.js → skills-status-BGvLXtop.js} +1 -1
  273. package/dist/{slash-commands.runtime-WyW5W0r3.js → slash-commands.runtime-BLl455Ha.js} +11 -11
  274. package/dist/slash-dispatch.runtime-BtsEX-_Q.js +114 -0
  275. package/dist/{slash-skill-commands.runtime-DCZQC-hJ.js → slash-skill-commands.runtime-NP-EeAgb.js} +15 -15
  276. package/dist/{status-KrF4yDJE.js → status-4fmTPmZ8.js} +27 -27
  277. package/dist/{status.update-ovXdI8fy.js → status.update-BincwEhI.js} +2 -2
  278. package/dist/{store-OqcrqyHY.js → store-C4eyKOP_.js} +5 -5
  279. package/dist/{subagent-registry-CqQCPU35.js → subagent-registry-B29QoX6u.js} +149 -149
  280. package/dist/subagent-registry-runtime-ChT29jt0.js +114 -0
  281. package/dist/{system-cli-C6XjjyMr.js → system-cli-DeCdNdxg.js} +9 -9
  282. package/dist/{system-run-command-B1auaqvg.js → system-run-command-DVel5yZQ.js} +1 -1
  283. package/dist/{systemd-CvSjUuUT.js → systemd-BPu08aN2.js} +9 -9
  284. package/dist/{systemd-hints-DPrvbOr-.js → systemd-hints-PEGoMeNi.js} +6 -6
  285. package/dist/{systemd-linger-DWtUqeeE.js → systemd-linger-ckxguBpS.js} +1 -1
  286. package/dist/{tables-BSWzRw5b.js → tables-CM4RCywz.js} +1 -1
  287. package/dist/{tailnet-Bdvg29Ll.js → tailnet-D8ZmZFEq.js} +1 -1
  288. package/dist/{target-errors-D0aWoxbs.js → target-errors-Dq-K3j_S.js} +4 -4
  289. package/dist/{tool-images-J7V8AfTu.js → tool-images-C96-GuZE.js} +1 -1
  290. package/dist/{tui-DlcwmY1x.js → tui-Cby-FNU6.js} +6 -6
  291. package/dist/{tui-cli-zm_Sa4E5.js → tui-cli-BpgQL5Pu.js} +32 -32
  292. package/dist/{update-Gbhw9u0F.js → update-DNmbn7VE.js} +3 -3
  293. package/dist/{update-cli-Co-CAt0w.js → update-cli-kVzXT8I-.js} +104 -104
  294. package/dist/{update-runner-kKiJKth8.js → update-runner-C-d9Tjog.js} +16 -16
  295. package/dist/web-CrLnsppN.js +118 -0
  296. package/dist/{webhooks-cli-B-O0TVtX.js → webhooks-cli-BeC7vAYz.js} +6 -6
  297. package/dist/{whatsapp-actions-DaNP01Yk.js → whatsapp-actions-oSO9PcWD.js} +17 -17
  298. package/dist/{with-timeout-xp4bBUMy.js → with-timeout-YDfOtKvh.js} +3 -3
  299. package/dist/{workspace-BXI1yRZ5.js → workspace-CZkOfauh.js} +1 -1
  300. package/dist/{workspace-dirs-BY9k_sye.js → workspace-dirs-BSD3q0pa.js} +1 -1
  301. package/dist/{wsl-CvQfS6aU.js → wsl-CsGe5QCP.js} +2 -2
  302. package/package.json +9 -9
  303. package/skills/binance-address-info/SKILL.md +76 -0
  304. package/skills/binance-market-rank/SKILL.md +122 -0
  305. package/skills/binance-meme-rush/SKILL.md +111 -0
  306. package/skills/binance-spot/SKILL.md +175 -0
  307. package/skills/binance-token-audit/SKILL.md +82 -0
  308. package/skills/binance-token-info/SKILL.md +115 -0
  309. package/skills/binance-trading-signal/SKILL.md +84 -0
  310. package/dist/deliver-runtime-B5yIMxQR.js +0 -61
  311. package/dist/deps-send-discord.runtime-sLYAyx_-.js +0 -36
  312. package/dist/deps-send-imessage.runtime-2cWGJS5r.js +0 -35
  313. package/dist/deps-send-signal.runtime-kNxDQhbE.js +0 -34
  314. package/dist/deps-send-slack.runtime-D3QFxyKO.js +0 -32
  315. package/dist/deps-send-whatsapp.runtime-CHgCReeR.js +0 -119
  316. package/dist/image-runtime-C0VvqoAb.js +0 -55
  317. package/dist/plugin-sdk/deliver-runtime-DzqXq4YW.js +0 -32
  318. package/dist/plugin-sdk/deps-send-discord.runtime-BWZWUTzd.js +0 -23
  319. package/dist/plugin-sdk/deps-send-imessage.runtime-BbcpP4Hy.js +0 -22
  320. package/dist/plugin-sdk/deps-send-signal.runtime-DnuZ-6OX.js +0 -21
  321. package/dist/plugin-sdk/deps-send-slack.runtime-C-K73-e_.js +0 -19
  322. package/dist/plugin-sdk/deps-send-telegram.runtime-B47VZANU.js +0 -24
  323. package/dist/plugin-sdk/deps-send-whatsapp.runtime-CbVoeht-.js +0 -57
  324. package/dist/plugin-sdk/image-runtime-BfyyxB88.js +0 -25
  325. package/dist/plugin-sdk/manager-runtime-PlVcxBdF.js +0 -15
  326. package/dist/plugin-sdk/pi-model-discovery-runtime-CF3YRFcs.js +0 -8
  327. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D6QQrKEg.js +0 -10
  328. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-C9sD41-7.js +0 -19
  329. package/dist/plugin-sdk/slash-commands.runtime-UF19zDim.js +0 -13
  330. package/dist/plugin-sdk/slash-dispatch.runtime-CSdhHD27.js +0 -52
  331. package/dist/plugin-sdk/slash-skill-commands.runtime-B9xCsuLJ.js +0 -16
  332. package/dist/plugin-sdk/subagent-registry-runtime-C4cuhBu-.js +0 -52
  333. package/dist/plugin-sdk/web-Btk9r9Ct.js +0 -56
  334. package/dist/register.configure-Cu6y9WMa.js +0 -165
  335. package/dist/slash-dispatch.runtime-e_hnJMYz.js +0 -114
  336. package/dist/subagent-registry-runtime-DZ2NcDAS.js +0 -114
  337. package/dist/web-Bx-fQR1C.js +0 -118
package/README.md CHANGED
@@ -1,26 +1,89 @@
1
- # CryptoClaw
1
+ # CryptoClaw — Private Crypto AI Assistant
2
2
 
3
- > Private crypto AI assistant — wallet management, DeFi, NFTs, and multi-chain operations from your terminal.
3
+ <p align="center">
4
+ <strong>Wallet management, DeFi, NFTs, and multi-chain operations from your terminal.</strong>
5
+ </p>
4
6
 
5
- [![npm version](https://img.shields.io/npm/v/@termix-it/cryptoclaw?style=for-the-badge)](https://www.npmjs.com/package/@termix-it/cryptoclaw)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE)
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/@termix-it/cryptoclaw"><img src="https://img.shields.io/npm/v/@termix-it/cryptoclaw?style=for-the-badge" alt="npm version"></a>
9
+ <a href="https://github.com/TermiX-official/cryptoclaw"><img src="https://img.shields.io/github/stars/TermiX-official/cryptoclaw?style=for-the-badge" alt="GitHub stars"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="MIT License"></a>
11
+ </p>
7
12
 
8
- ## What is CryptoClaw?
13
+ **CryptoClaw** is a private, AI-powered crypto assistant you run on your own devices. It gives your AI agent native access to wallets, DeFi protocols, NFTs, on-chain data, and CEX trading — all through natural language. It connects to the messaging channels you already use (Telegram, WhatsApp, Discord, Slack, Signal, iMessage, and more) and works entirely on your own machine. Your keys stay yours.
9
14
 
10
- CryptoClaw is an AI-powered crypto assistant that runs locally in your terminal. It connects to the messaging channels you already use and helps you manage wallets, interact with DeFi protocols, track NFTs, and execute multi-chain operations all through natural language.
15
+ If you want a personal, always-on crypto assistant that feels local, fast, and privatethis is it.
11
16
 
12
- ## Features
17
+ ---
13
18
 
14
- - **Multi-chain support** Ethereum, Solana, and more
15
- - **Wallet management** — create, import, and monitor wallets
16
- - **DeFi integration** — swap, stake, and track positions
17
- - **NFT operations** — query, transfer, and monitor collections
18
- - **Messaging channels** WhatsApp, Telegram, Slack, Discord, and more
19
- - **AI-native** — natural language interface powered by leading LLMs
20
- - **Privacy-first** runs on your own machine, your keys stay yours
19
+ ## Official Binance Skills Integration
20
+
21
+ CryptoClaw is the first AI assistant to ship with the **official [Binance Skills Hub](https://github.com/binance/binance-skills-hub)** — 7 native skills powered directly by Binance's Web3 and CEX infrastructure.
22
+
23
+ > Special thanks to [@binance](https://github.com/binance) for building and open-sourcing the Binance Skills Hub. 🙌
24
+
25
+ | Skill | What it does |
26
+ |-------|-------------|
27
+ | `binance-spot` | CEX spot trading — place/cancel orders, query account, 60+ Binance API endpoints |
28
+ | `binance-market-rank` | Trending tokens, smart money inflow, social hype leaderboard, PnL rankings |
29
+ | `binance-token-info` | Token search, metadata, real-time market data, K-line candlestick charts |
30
+ | `binance-token-audit` | Security audit — detect honeypots, rug pulls, and malicious contracts |
31
+ | `binance-trading-signal` | Smart Money on-chain buy/sell signals on BSC & Solana |
32
+ | `binance-address-info` | Query any wallet's token holdings and portfolio across BSC, Base, Solana |
33
+ | `binance-meme-rush` | Real-time meme token launchpad tracking and AI trending narrative discovery |
34
+
35
+ Supported chains for Binance Web3 skills: **BSC (56)**, **Base (8453)**, **Solana (CT_501)**, **Ethereum (1)**
36
+
37
+ ---
38
+
39
+ ## What CryptoClaw Can Do
40
+
41
+ ### Crypto Core
42
+ - **Wallet management** — create, import, monitor, and sign across EVM and Solana wallets
43
+ - **Token swaps** — Uniswap, PancakeSwap, and other DEX protocols across EVM chains
44
+ - **DeFi positions** — track yield farming, staking, liquidity pools (Aave, DeFiLlama, DeBank)
45
+ - **NFT operations** — query, transfer, and monitor ERC721/ERC1155 collections
46
+ - **Contract deployment** — deploy ERC20/ERC721 from templates
47
+ - **On-chain data** — Etherscan, Dune Analytics, whale tracking, gas monitoring
48
+ - **Security checks** — GoPlus Security API + Binance Token Audit for every token
49
+
50
+ ### Market Intelligence
51
+ - **Binance market rankings** — trending, smart money inflow, social hype, Binance Alpha
52
+ - **Smart Money signals** — follow professional on-chain buy/sell activity (BSC + Solana)
53
+ - **Meme token discovery** — real-time launchpad tracking (Pump.fun, Four.meme, Moonit)
54
+ - **CoinGecko & DeFiLlama** — prices, market caps, TVL, protocol analytics
55
+ - **Macro calendar** — Fed rates, CPI, economic events impacting crypto
56
+ - **Hyperliquid** — perpetual futures and spot trading on Hyperliquid DEX
57
+ - **Whale watcher** — monitor large on-chain transactions
58
+
59
+ ### Messaging Channels
60
+ Connect CryptoClaw to the channels you already use:
61
+
62
+ | Channel | Status |
63
+ |---------|--------|
64
+ | Telegram | Supported |
65
+ | WhatsApp | Supported |
66
+ | Discord | Supported |
67
+ | Slack | Supported |
68
+ | Signal | Supported |
69
+ | iMessage (BlueBubbles) | Supported |
70
+ | Microsoft Teams | Supported |
71
+ | Matrix | Supported |
72
+ | IRC | Supported |
73
+ | Feishu | Supported |
74
+ | LINE | Supported |
75
+ | Mattermost | Supported |
76
+ | Nextcloud Talk | Supported |
77
+ | Nostr | Supported |
78
+ | Zalo | Supported |
79
+ | WebChat | Supported |
80
+
81
+ ---
21
82
 
22
83
  ## Install
23
84
 
85
+ **Requirements:** Node.js 22+
86
+
24
87
  ```bash
25
88
  npm install -g @termix-it/cryptoclaw
26
89
  ```
@@ -32,58 +95,233 @@ pnpm add -g @termix-it/cryptoclaw
32
95
  bun add -g @termix-it/cryptoclaw
33
96
  ```
34
97
 
35
- **Requirements:** Node.js 22+
98
+ ---
36
99
 
37
100
  ## Quick Start
38
101
 
39
102
  ```bash
40
- # Run the onboarding wizard
103
+ # Run the onboarding wizard (recommended)
41
104
  cryptoclaw onboard
42
105
 
43
106
  # Start the gateway
44
- cryptoclaw gateway run
107
+ cryptoclaw gateway run --port 18789
45
108
 
46
- # Check channel status
109
+ # Check status of all connected channels
47
110
  cryptoclaw channels status
111
+
112
+ # Send a message to any channel
113
+ cryptoclaw message send --to @username --message "What is the BTC price?"
114
+
115
+ # Run the AI agent directly
116
+ cryptoclaw agent --message "Show me smart money signals on BSC" --thinking high
48
117
  ```
49
118
 
119
+ ---
120
+
50
121
  ## Supported Chains
51
122
 
52
- | Chain | Status |
53
- |-------|--------|
54
- | Ethereum | Supported |
55
- | Solana | Supported |
56
- | Base | Supported |
57
- | Arbitrum | Supported |
58
- | Polygon | Supported |
123
+ | Chain | Type | Details |
124
+ |-------|------|---------|
125
+ | Ethereum | EVM | Mainnet + testnets |
126
+ | BSC (BNB Chain) | EVM | Binance Smart Chain |
127
+ | Base | EVM | Coinbase L2 |
128
+ | Arbitrum | EVM | Arbitrum One |
129
+ | Polygon | EVM | PoS chain |
130
+ | Solana | SVM | SPL tokens |
131
+ | Hyperliquid | L1 | Perps + spot |
132
+
133
+ ---
134
+
135
+ ## Skills Library (80+)
136
+
137
+ CryptoClaw ships with 80+ skills covering crypto, DeFi, productivity, and automation. Skills are loaded per-conversation and give the AI agent native access to external tools and APIs.
138
+
139
+ ### Crypto & DeFi
140
+
141
+ | Skill | Description |
142
+ |-------|-------------|
143
+ | `binance-spot` | Binance CEX spot trading — 60+ endpoints |
144
+ | `binance-market-rank` | Trending tokens, smart money, social hype rankings |
145
+ | `binance-token-info` | Token search, metadata, real-time data, K-lines |
146
+ | `binance-token-audit` | Security audit for honeypots and rug pulls |
147
+ | `binance-trading-signal` | Smart Money on-chain buy/sell signals |
148
+ | `binance-address-info` | Wallet portfolio query across chains |
149
+ | `binance-meme-rush` | Launchpad meme token and trend discovery |
150
+ | `wallet-manager` | Create, import, and manage blockchain wallets |
151
+ | `token-swap` | Swap tokens on Uniswap/PancakeSwap |
152
+ | `coingecko` | Prices, market caps, charts, trending tokens |
153
+ | `defillama` | TVL, protocol analytics, yield pools |
154
+ | `debank` | Wallet portfolios and DeFi positions |
155
+ | `etherscan` | Block explorer queries (ETH, BSC, Polygon, etc.) |
156
+ | `hyperliquid` | Perpetual futures and spot on Hyperliquid DEX |
157
+ | `aave-bsc` | Aave V3 lending on BSC |
158
+ | `dune` | Custom SQL analytics on Dune |
159
+ | `gas-tracker` | Gas prices across networks |
160
+ | `whale-watcher` | Large on-chain transaction monitoring |
161
+ | `market-data` | Multi-source price and market data |
162
+ | `security-check` | Token/address security via GoPlus API |
163
+ | `portfolio-tracker` | Track holdings and portfolio value |
164
+ | `defi-dashboard` | Yield farming, staking, liquidity pools |
165
+ | `nft-manager` | View, transfer, manage NFTs |
166
+ | `contract-deployer` | Deploy ERC20/ERC721 from templates |
167
+ | `four-meme` | BSC launchpad token discovery |
168
+ | `macro-calendar` | Macro events (Fed, CPI, economic calendar) |
169
+ | `agent-identity` | On-chain AI agent identity (ERC-8004) |
170
+
171
+ ### Productivity & Automation
172
+
173
+ | Skill | Description |
174
+ |-------|-------------|
175
+ | `github` | GitHub issues, PRs, CI runs via `gh` CLI |
176
+ | `gh-issues` | Auto-implement GitHub issues and open PRs |
177
+ | `notion` | Notion pages, databases, blocks |
178
+ | `trello` | Trello boards, lists, and cards |
179
+ | `obsidian` | Obsidian vault management |
180
+ | `apple-notes` | Apple Notes via `memo` CLI (macOS) |
181
+ | `apple-reminders` | Apple Reminders via `remindctl` |
182
+ | `bear-notes` | Bear notes via `grizzly` CLI |
183
+ | `things-mac` | Things 3 task management (macOS) |
184
+ | `1password` | 1Password CLI integration |
185
+ | `gog` | Google Workspace (Gmail, Calendar, Drive, Sheets) |
186
+ | `himalaya` | Email via IMAP/SMTP |
187
+ | `slack` | Slack channel and DM operations |
188
+ | `discord` | Discord channel operations |
189
+ | `tmux` | Remote tmux session control |
190
+ | `summarize` | Summarize URLs, podcasts, and files |
191
+ | `blogwatcher` | RSS/Atom feed monitoring |
192
+ | `oracle` | Prompt bundling and agent orchestration |
193
+
194
+ ### AI & Media
195
+
196
+ | Skill | Description |
197
+ |-------|-------------|
198
+ | `coding-agent` | Delegate coding tasks to Codex/Claude/Pi agents |
199
+ | `skill-creator` | Create and publish new agent skills |
200
+ | `openai-image-gen` | Batch image generation via OpenAI |
201
+ | `openai-whisper` | Local speech-to-text (offline) |
202
+ | `openai-whisper-api` | Transcription via OpenAI Whisper API |
203
+ | `nano-banana-pro` | Image generation/editing via Gemini |
204
+ | `gemini` | Gemini CLI for Q&A and generation |
205
+ | `peekaboo` | macOS UI capture and automation |
206
+ | `camsnap` | RTSP/ONVIF camera capture |
207
+ | `video-frames` | Frame/clip extraction via ffmpeg |
208
+ | `gifgrep` | GIF search and download |
209
+ | `canvas` | Agent-driven visual workspace |
210
+ | `session-logs` | Search and analyze conversation history |
211
+ | `model-usage` | Per-model cost and usage tracking |
212
+
213
+ ### Home & Lifestyle
59
214
 
60
- ## Supported Channels
215
+ | Skill | Description |
216
+ |-------|-------------|
217
+ | `openhue` | Philips Hue lights via OpenHue CLI |
218
+ | `eightctl` | Eight Sleep pod control |
219
+ | `sonoscli` | Sonos speaker control |
220
+ | `spotify-player` | Spotify playback via terminal |
221
+ | `songsee` | Audio spectrogram visualization |
222
+ | `weather` | Weather via wttr.in / Open-Meteo |
223
+ | `goplaces` | Google Places API search |
224
+ | `ordercli` | Foodora order history |
61
225
 
62
- Connect CryptoClaw to your preferred messaging platform:
226
+ ### Voice & TTS
63
227
 
64
- - Telegram
65
- - WhatsApp
66
- - Discord
67
- - Slack
68
- - Signal
69
- - iMessage
70
- - Microsoft Teams
71
- - Matrix
72
- - and more...
228
+ | Skill | Description |
229
+ |-------|-------------|
230
+ | `sag` | ElevenLabs TTS (mac-style `say` UX) |
231
+ | `sherpa-onnx-tts` | Local TTS via sherpa-onnx (offline) |
232
+ | `voice-call` | Voice calls via the voice-call plugin |
233
+
234
+ ---
73
235
 
74
236
  ## Configuration
75
237
 
76
238
  ```bash
77
239
  # Set your preferred AI model
78
240
  cryptoclaw config set model openai/gpt-4o
241
+ # or: anthropic/claude-opus-4-6, google/gemini-2.0-flash, etc.
79
242
 
80
243
  # Add a wallet
81
244
  cryptoclaw wallet add
82
245
 
83
- # List connected channels
84
- cryptoclaw channels list
246
+ # Connect a messaging channel
247
+ cryptoclaw channels connect telegram
248
+ cryptoclaw channels connect discord
249
+ cryptoclaw channels connect whatsapp
250
+
251
+ # List installed skills
252
+ cryptoclaw skills list
253
+
254
+ # Install a skill
255
+ cryptoclaw skills install binance-spot
256
+
257
+ # Check channel and gateway health
258
+ cryptoclaw channels status --probe
259
+ cryptoclaw doctor
260
+ ```
261
+
262
+ ---
263
+
264
+ ## Architecture
265
+
266
+ ```
267
+ Telegram / WhatsApp / Discord / Slack / Signal / iMessage / Matrix / ...
268
+
269
+
270
+ ┌──────────────────────────────────────┐
271
+ │ Gateway │
272
+ │ (control plane) │
273
+ │ ws://127.0.0.1:18789 │
274
+ └──────────────┬───────────────────────┘
275
+
276
+ ├─ AI Agent (RPC / streaming)
277
+ │ └─ Skills: binance-spot, wallet-manager, token-swap, ...
278
+ ├─ CLI (cryptoclaw …)
279
+ ├─ WebChat UI
280
+ └─ macOS / iOS / Android nodes
85
281
  ```
86
282
 
283
+ The Gateway is the local control plane. The AI agent connects to it via WebSocket RPC, loads skills on demand, and routes responses back to any connected channel. Everything runs on your machine.
284
+
285
+ ---
286
+
287
+ ## Development
288
+
289
+ ```bash
290
+ git clone https://github.com/TermiX-official/cryptoclaw.git
291
+ cd cryptoclaw
292
+
293
+ pnpm install
294
+ pnpm build
295
+
296
+ # Dev loop
297
+ pnpm gateway:watch
298
+
299
+ # Run tests
300
+ pnpm test
301
+
302
+ # Type check
303
+ pnpm tsgo
304
+ ```
305
+
306
+ ---
307
+
308
+ ## Security
309
+
310
+ CryptoClaw connects to real messaging surfaces and real on-chain infrastructure. Treat inbound messages as **untrusted input** by default.
311
+
312
+ - **DM pairing** — unknown senders get a pairing code challenge; the agent does not process their message until approved.
313
+ - **Wallet signing** — private keys never leave your machine; all signing is local.
314
+ - **Token audit** — `binance-token-audit` and `security-check` skills run automatically before swaps when configured.
315
+ - **Mainnet confirmation** — Binance spot and swap skills require explicit user confirmation before executing mainnet transactions.
316
+
317
+ Run `cryptoclaw doctor` to surface misconfigured security policies.
318
+
319
+ ---
320
+
87
321
  ## License
88
322
 
89
323
  MIT — see [LICENSE](LICENSE) for details.
324
+
325
+ ---
326
+
327
+ *Built on [OpenClaw](https://github.com/openclaw/openclaw) — the open-source AI gateway platform.*
@@ -1,5 +1,5 @@
1
1
  import { _ as normalizeAccountId } from "./session-key-k6urs9r-.js";
2
- import { v as createAccountListHelpers, y as resolveAccountEntry } from "./accounts-CucAhPu5.js";
2
+ import { v as createAccountListHelpers, y as resolveAccountEntry } from "./accounts-Bod7973i.js";
3
3
 
4
4
  //#region src/imessage/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
@@ -6,7 +6,7 @@ import { _ as normalizeAccountId, g as DEFAULT_ACCOUNT_ID, v as normalizeOptiona
6
6
  import { f as jidToE164, v as resolveUserPath } from "./utils-cwpAMi-t.js";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs";
9
- import fs$1 from "node:fs/promises";
9
+ import fsPromises from "node:fs/promises";
10
10
 
11
11
  //#region src/routing/account-lookup.ts
12
12
  function resolveAccountEntry(accounts, accountId) {
@@ -105,14 +105,14 @@ async function webAuthExists(authDir = resolveDefaultWebAuthDir()) {
105
105
  maybeRestoreCredsFromBackup(resolvedAuthDir);
106
106
  const credsPath = resolveWebCredsPath(resolvedAuthDir);
107
107
  try {
108
- await fs$1.access(resolvedAuthDir);
108
+ await fsPromises.access(resolvedAuthDir);
109
109
  } catch {
110
110
  return false;
111
111
  }
112
112
  try {
113
- const stats = await fs$1.stat(credsPath);
113
+ const stats = await fsPromises.stat(credsPath);
114
114
  if (!stats.isFile() || stats.size <= 1) return false;
115
- const raw = await fs$1.readFile(credsPath, "utf-8");
115
+ const raw = await fsPromises.readFile(credsPath, "utf-8");
116
116
  JSON.parse(raw);
117
117
  return true;
118
118
  } catch {
@@ -120,7 +120,7 @@ async function webAuthExists(authDir = resolveDefaultWebAuthDir()) {
120
120
  }
121
121
  }
122
122
  async function clearLegacyBaileysAuthState(authDir) {
123
- const entries = await fs$1.readdir(authDir, { withFileTypes: true });
123
+ const entries = await fsPromises.readdir(authDir, { withFileTypes: true });
124
124
  const shouldDelete = (name) => {
125
125
  if (name === "oauth.json") return false;
126
126
  if (name === "creds.json" || name === "creds.json.bak") return true;
@@ -130,7 +130,7 @@ async function clearLegacyBaileysAuthState(authDir) {
130
130
  await Promise.all(entries.map(async (entry) => {
131
131
  if (!entry.isFile()) return;
132
132
  if (!shouldDelete(entry.name)) return;
133
- await fs$1.rm(path.join(authDir, entry.name), { force: true });
133
+ await fsPromises.rm(path.join(authDir, entry.name), { force: true });
134
134
  }));
135
135
  }
136
136
  async function logoutWeb(params) {
@@ -141,7 +141,7 @@ async function logoutWeb(params) {
141
141
  return false;
142
142
  }
143
143
  if (params.isLegacyAuthDir) await clearLegacyBaileysAuthState(resolvedAuthDir);
144
- else await fs$1.rm(resolvedAuthDir, {
144
+ else await fsPromises.rm(resolvedAuthDir, {
145
145
  recursive: true,
146
146
  force: true
147
147
  });
@@ -1,5 +1,5 @@
1
1
  import { _ as normalizeAccountId } from "./session-key-k6urs9r-.js";
2
- import { v as createAccountListHelpers, y as resolveAccountEntry } from "./accounts-CucAhPu5.js";
2
+ import { v as createAccountListHelpers, y as resolveAccountEntry } from "./accounts-Bod7973i.js";
3
3
 
4
4
  //#region src/signal/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
@@ -3,10 +3,10 @@ import "./paths-BMo6kTge.js";
3
3
  import { d as defaultRuntime } from "./subsystem-Cfn2Pryx.js";
4
4
  import "./boolean-DtWR5bt3.js";
5
5
  import { n as isMainModule } from "./entry.js";
6
- import { z as loadConfig } from "./auth-profiles-CtYlKXxI.js";
7
- import "./agent-scope-C5bklqr1.js";
6
+ import { z as loadConfig } from "./auth-profiles-yB_p54Kf.js";
7
+ import "./agent-scope-BGsA4zEf.js";
8
8
  import { v as resolveUserPath, x as shortenHomePath } from "./utils-cwpAMi-t.js";
9
- import "./openclaw-root-BFfBQ6FD.js";
9
+ import "./openclaw-root-BU3lu8pM.js";
10
10
  import "./logger-DB-PHqB2.js";
11
11
  import "./exec-B45rafWZ.js";
12
12
  import "./registry-BrR1Dq5T.js";
@@ -14,13 +14,13 @@ import "./github-copilot-token-Byc_YVYE.js";
14
14
  import "./host-env-security-lcjXF83D.js";
15
15
  import { t as VERSION } from "./version-DdJhsIqk.js";
16
16
  import "./env-vars-mSSOl7Rv.js";
17
- import "./manifest-registry-DjbHJw7g.js";
17
+ import "./manifest-registry-CzoQ4XAn.js";
18
18
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-CXgeX9no.js";
19
- import { t as GatewayClient } from "./client-BqLxmdBY.js";
20
- import { s as resolveGatewayCredentialsWithSecretInputs, t as buildGatewayConnectionDetails } from "./call-BHrnZxI1.js";
19
+ import { t as GatewayClient } from "./client-Kkj2aHgb.js";
20
+ import { s as resolveGatewayCredentialsWithSecretInputs, t as buildGatewayConnectionDetails } from "./call-CeJbHmC5.js";
21
21
  import "./pairing-token-BXrId5bQ.js";
22
- import "./net-DFijUFfS.js";
23
- import "./tailnet-Bdvg29Ll.js";
22
+ import "./net-CfwQaj6f.js";
23
+ import "./tailnet-D8ZmZFEq.js";
24
24
  import { r as isKnownCoreToolId } from "./tool-catalog-C04U7H3F.js";
25
25
  import { n as resolveWindowsSpawnProgram, t as materializeWindowsSpawnProgram } from "./windows-spawn-BTikdM3p.js";
26
26
  import { t as formatDocsLink } from "./links-BVDZVrXu.js";
@@ -2,13 +2,13 @@ import { g as resolveStateDir, y as resolveRequiredHomeDir } from "./paths-BMo6k
2
2
  import { t as createSubsystemLogger } from "./subsystem-Cfn2Pryx.js";
3
3
  import { E as parseAgentSessionKey, T as isSubagentSessionKey, c as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveAgentIdFromSessionKey, w as isCronSessionKey } from "./session-key-k6urs9r-.js";
4
4
  import { m as pathExists, v as resolveUserPath } from "./utils-cwpAMi-t.js";
5
- import { _ as normalizeSkillFilter, i as openBoundaryFile, t as resolveOpenClawPackageRoot } from "./openclaw-root-BFfBQ6FD.js";
5
+ import { _ as normalizeSkillFilter, i as openBoundaryFile, t as resolveOpenClawPackageRoot } from "./openclaw-root-BU3lu8pM.js";
6
6
  import { t as runCommandWithTimeout } from "./exec-B45rafWZ.js";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import os from "node:os";
9
9
  import path from "node:path";
10
10
  import fs from "node:fs";
11
- import fs$1 from "node:fs/promises";
11
+ import fsPromises from "node:fs/promises";
12
12
 
13
13
  //#region src/config/model-input.ts
14
14
  function resolveAgentModelPrimaryValue(model) {
@@ -150,7 +150,7 @@ async function loadTemplate(name) {
150
150
  const templateDir = await resolveWorkspaceTemplateDir();
151
151
  const templatePath = path.join(templateDir, name);
152
152
  try {
153
- return stripFrontMatter(await fs$1.readFile(templatePath, "utf-8"));
153
+ return stripFrontMatter(await fsPromises.readFile(templatePath, "utf-8"));
154
154
  } catch {
155
155
  throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
156
156
  }
@@ -165,7 +165,7 @@ async function loadTemplate(name) {
165
165
  }
166
166
  async function writeFileIfMissing(filePath, content) {
167
167
  try {
168
- await fs$1.writeFile(filePath, content, {
168
+ await fsPromises.writeFile(filePath, content, {
169
169
  encoding: "utf-8",
170
170
  flag: "wx"
171
171
  });
@@ -177,7 +177,7 @@ async function writeFileIfMissing(filePath, content) {
177
177
  }
178
178
  async function fileExists(filePath) {
179
179
  try {
180
- await fs$1.access(filePath);
180
+ await fsPromises.access(filePath);
181
181
  return true;
182
182
  } catch {
183
183
  return false;
@@ -201,7 +201,7 @@ function parseWorkspaceOnboardingState(raw) {
201
201
  }
202
202
  async function readWorkspaceOnboardingState(statePath) {
203
203
  try {
204
- return parseWorkspaceOnboardingState(await fs$1.readFile(statePath, "utf-8")) ?? { version: WORKSPACE_STATE_VERSION };
204
+ return parseWorkspaceOnboardingState(await fsPromises.readFile(statePath, "utf-8")) ?? { version: WORKSPACE_STATE_VERSION };
205
205
  } catch (err) {
206
206
  if (err.code !== "ENOENT") throw err;
207
207
  return { version: WORKSPACE_STATE_VERSION };
@@ -215,20 +215,20 @@ async function isWorkspaceOnboardingCompleted(dir) {
215
215
  return typeof state.onboardingCompletedAt === "string" && state.onboardingCompletedAt.trim().length > 0;
216
216
  }
217
217
  async function writeWorkspaceOnboardingState(statePath, state) {
218
- await fs$1.mkdir(path.dirname(statePath), { recursive: true });
218
+ await fsPromises.mkdir(path.dirname(statePath), { recursive: true });
219
219
  const payload = `${JSON.stringify(state, null, 2)}\n`;
220
220
  const tmpPath = `${statePath}.tmp-${process.pid}-${Date.now().toString(36)}`;
221
221
  try {
222
- await fs$1.writeFile(tmpPath, payload, { encoding: "utf-8" });
223
- await fs$1.rename(tmpPath, statePath);
222
+ await fsPromises.writeFile(tmpPath, payload, { encoding: "utf-8" });
223
+ await fsPromises.rename(tmpPath, statePath);
224
224
  } catch (err) {
225
- await fs$1.unlink(tmpPath).catch(() => {});
225
+ await fsPromises.unlink(tmpPath).catch(() => {});
226
226
  throw err;
227
227
  }
228
228
  }
229
229
  async function hasGitRepo(dir) {
230
230
  try {
231
- await fs$1.stat(path.join(dir, ".git"));
231
+ await fsPromises.stat(path.join(dir, ".git"));
232
232
  return true;
233
233
  } catch {
234
234
  return false;
@@ -258,7 +258,7 @@ async function ensureGitRepo(dir, isBrandNewWorkspace) {
258
258
  }
259
259
  async function ensureAgentWorkspace(params) {
260
260
  const dir = resolveUserPath(params?.dir?.trim() ? params.dir.trim() : DEFAULT_AGENT_WORKSPACE_DIR);
261
- await fs$1.mkdir(dir, { recursive: true });
261
+ await fsPromises.mkdir(dir, { recursive: true });
262
262
  if (!params?.ensureBootstrapFiles) return { dir };
263
263
  const agentsPath = path.join(dir, DEFAULT_AGENTS_FILENAME);
264
264
  const soulPath = path.join(dir, DEFAULT_SOUL_FILENAME);
@@ -285,7 +285,7 @@ async function ensureAgentWorkspace(params) {
285
285
  const paths = [...templatePaths, ...userContentPaths];
286
286
  return (await Promise.all(paths.map(async (p) => {
287
287
  try {
288
- await fs$1.access(p);
288
+ await fsPromises.access(p);
289
289
  return true;
290
290
  } catch {
291
291
  return false;
@@ -318,7 +318,7 @@ async function ensureAgentWorkspace(params) {
318
318
  if (!state.bootstrapSeededAt && bootstrapExists) markState({ bootstrapSeededAt: nowIso() });
319
319
  if (!state.onboardingCompletedAt && state.bootstrapSeededAt && !bootstrapExists) markState({ onboardingCompletedAt: nowIso() });
320
320
  if (!state.bootstrapSeededAt && !state.onboardingCompletedAt && !bootstrapExists) {
321
- const [identityContent, userContent] = await Promise.all([fs$1.readFile(identityPath, "utf-8"), fs$1.readFile(userPath, "utf-8")]);
321
+ const [identityContent, userContent] = await Promise.all([fsPromises.readFile(identityPath, "utf-8"), fsPromises.readFile(userPath, "utf-8")]);
322
322
  const hasUserContent = await (async () => {
323
323
  const indicators = [
324
324
  path.join(dir, "memory"),
@@ -326,7 +326,7 @@ async function ensureAgentWorkspace(params) {
326
326
  path.join(dir, ".git")
327
327
  ];
328
328
  for (const indicator of indicators) try {
329
- await fs$1.access(indicator);
329
+ await fsPromises.access(indicator);
330
330
  return true;
331
331
  } catch {}
332
332
  return false;
@@ -357,7 +357,7 @@ async function resolveMemoryBootstrapEntries(resolvedDir) {
357
357
  for (const name of candidates) {
358
358
  const filePath = path.join(resolvedDir, name);
359
359
  try {
360
- await fs$1.access(filePath);
360
+ await fsPromises.access(filePath);
361
361
  entries.push({
362
362
  name,
363
363
  filePath
@@ -370,7 +370,7 @@ async function resolveMemoryBootstrapEntries(resolvedDir) {
370
370
  for (const entry of entries) {
371
371
  let key = entry.filePath;
372
372
  try {
373
- key = await fs$1.realpath(entry.filePath);
373
+ key = await fsPromises.realpath(entry.filePath);
374
374
  } catch {}
375
375
  if (seen.has(key)) continue;
376
376
  seen.add(key);
@@ -1,25 +1,25 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { d as defaultRuntime } from "./subsystem-Cfn2Pryx.js";
3
- import { G as writeConfigFile, ar as resolveAuthStorePath, er as ensureAuthProfileStore } from "./auth-profiles-CtYlKXxI.js";
3
+ import { G as writeConfigFile, ar as resolveAuthStorePath, er as ensureAuthProfileStore } from "./auth-profiles-yB_p54Kf.js";
4
4
  import { t as formatCliCommand } from "./command-format-CLEQe4bk.js";
5
- import { a as resolveAgentDir, b as DEFAULT_IDENTITY_FILENAME, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-C5bklqr1.js";
5
+ import { a as resolveAgentDir, b as DEFAULT_IDENTITY_FILENAME, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-BGsA4zEf.js";
6
6
  import { c as normalizeAgentId, g as DEFAULT_ACCOUNT_ID, t as DEFAULT_AGENT_ID } from "./session-key-k6urs9r-.js";
7
7
  import { v as resolveUserPath, x as shortenHomePath } from "./utils-cwpAMi-t.js";
8
- import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-B4AetCpQ.js";
9
- import { U as parseIdentityMarkdown, V as identityHasValues } from "./subagent-registry-CqQCPU35.js";
8
+ import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DO_6iMZV.js";
9
+ import { U as parseIdentityMarkdown, V as identityHasValues } from "./subagent-registry-B29QoX6u.js";
10
10
  import { s as resolveSessionTranscriptsDirForAgent } from "./paths-DvFmz0MB.js";
11
- import { a as ensureWorkspaceAndSessions, l as moveToTrash } from "./onboard-helpers-CPO08jBg.js";
11
+ import { a as ensureWorkspaceAndSessions, l as moveToTrash } from "./onboard-helpers-Mort99IL.js";
12
12
  import { t as WizardCancelledError } from "./prompts-l_pUOv42.js";
13
13
  import { t as createClackPrompter } from "./clack-prompter-CcxUeG62.js";
14
14
  import { t as resolveChannelDefaultAccountId } from "./helpers-D7MilaX-.js";
15
- import { a as parseBindingSpecs, i as describeBinding, n as applyAgentBindings, o as removeAgentBindings, r as buildChannelBindings, t as requireValidConfigSnapshot } from "./config-validation-C-plaBVT.js";
16
- import { a as pruneAgentConfig, i as loadAgentIdentity, n as buildAgentSummaries, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BSkzwDQZ.js";
17
- import { r as setupChannels } from "./onboard-channels-DAQmVNUf.js";
15
+ import { a as parseBindingSpecs, i as describeBinding, n as applyAgentBindings, o as removeAgentBindings, r as buildChannelBindings, t as requireValidConfigSnapshot } from "./config-validation-BS6k_44h.js";
16
+ import { a as pruneAgentConfig, i as loadAgentIdentity, n as buildAgentSummaries, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-g0LyahNR.js";
17
+ import { r as setupChannels } from "./onboard-channels-VhiLL846.js";
18
18
  import { n as logConfigUpdated } from "./logging-sqZaYWyX.js";
19
19
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-4mupmvzh.js";
20
- import { i as applyAuthChoice, r as warnIfModelConfigLooksOff } from "./auth-choice-tnRPpsDE.js";
20
+ import { i as applyAuthChoice, r as warnIfModelConfigLooksOff } from "./auth-choice-pU5ch2o1.js";
21
21
  import path from "node:path";
22
- import fs from "node:fs/promises";
22
+ import fsPromises from "node:fs/promises";
23
23
 
24
24
  //#region src/commands/agents.command-shared.ts
25
25
  function createQuietRuntime(runtime) {
@@ -266,7 +266,7 @@ async function agentsUnbindCommand(opts, runtime = defaultRuntime) {
266
266
  //#region src/commands/agents.commands.add.ts
267
267
  async function fileExists(pathname) {
268
268
  try {
269
- await fs.stat(pathname);
269
+ await fsPromises.stat(pathname);
270
270
  return true;
271
271
  } catch {
272
272
  return false;
@@ -408,8 +408,8 @@ async function agentsAddCommand(opts, runtime = defaultRuntime, params) {
408
408
  message: `Copy auth profiles from "${defaultAgentId}"?`,
409
409
  initialValue: false
410
410
  })) {
411
- await fs.mkdir(path.dirname(destAuthPath), { recursive: true });
412
- await fs.copyFile(sourceAuthPath, destAuthPath);
411
+ await fsPromises.mkdir(path.dirname(destAuthPath), { recursive: true });
412
+ await fsPromises.copyFile(sourceAuthPath, destAuthPath);
413
413
  await prompter.note(`Copied auth profiles from "${defaultAgentId}".`, "Auth profiles");
414
414
  }
415
415
  }
@@ -557,7 +557,7 @@ const coerceTrimmed = (value) => {
557
557
  };
558
558
  async function loadIdentityFromFile(filePath) {
559
559
  try {
560
- const parsed = parseIdentityMarkdown(await fs.readFile(filePath, "utf-8"));
560
+ const parsed = parseIdentityMarkdown(await fsPromises.readFile(filePath, "utf-8"));
561
561
  if (!identityHasValues(parsed)) return null;
562
562
  return parsed;
563
563
  } catch {