openclaw-multi-auto 1.0.9 → 1.1.1

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 (490) hide show
  1. package/dist/{accounts-C_lW3Ag9.js → accounts-BOzyfwW4.js} +2 -2
  2. package/dist/{accounts-BVgYdU9W.js → accounts-BtEMxtPK.js} +1 -1
  3. package/dist/{accounts-BU-CeDai.js → accounts-CUYZBSKh.js} +1 -1
  4. package/dist/{accounts-C9HcPI9h.js → accounts-L9ByEpnP.js} +2 -2
  5. package/dist/{accounts-DJaYqD2E.js → accounts-khXX75l1.js} +7 -7
  6. package/dist/{accounts-Tgelvk0C.js → accounts-yfBeCZtS.js} +17 -17
  7. package/dist/{acp-cli-oWFHnS7i.js → acp-cli-CA2oCCEA.js} +8 -8
  8. package/dist/{active-listener-BEdprTkn.js → active-listener-D1yqT1cw.js} +2 -2
  9. package/dist/{agent-scope-BRElciAf.js → agent-scope-NQ9CtXYN.js} +17 -17
  10. package/dist/{agents-CujsWz9d.js → agents-BWVlofyv.js} +14 -14
  11. package/dist/{agents.config-C42STger.js → agents.config-QVfqc4C-.js} +2 -2
  12. package/dist/{api-key-rotation-BJpKWXy0.js → api-key-rotation-DtsNS2Nb.js} +2 -2
  13. package/dist/{api-key-rotation-BbuLHl0_.js → api-key-rotation-Vix80AUw.js} +1 -1
  14. package/dist/{audio-preflight-Yg1vzPE1.js → audio-preflight-DUtdCXjJ.js} +34 -34
  15. package/dist/{audio-preflight-C58LeYZM.js → audio-preflight-DpxQCpsA.js} +32 -32
  16. package/dist/{audio-transcription-runner-B8jbozH5.js → audio-transcription-runner-28fcRNNi.js} +12 -12
  17. package/dist/{audio-transcription-runner-D1cvrZ6s.js → audio-transcription-runner-DYKvqK54.js} +23 -23
  18. package/dist/{audit-membership-runtime-Dntemq07.js → audit-membership-runtime-DWyHWAHM.js} +4 -4
  19. package/dist/{audit-DtlAv66L.js → audit-oC--RZy0.js} +29 -29
  20. package/dist/{auth-Mj21c_GN.js → auth-YB6m93-M.js} +1 -1
  21. package/dist/{auth-choice-CEycltU4.js → auth-choice-CsSQLEkP.js} +13 -13
  22. package/dist/{auth-choice-CGHVedXa.js → auth-choice-gp-h1aBd.js} +11 -11
  23. package/dist/{auth-choice.apply-helpers-D4YQXYfc.js → auth-choice.apply-helpers-CPpuynsT.js} +1 -1
  24. package/dist/{auth-profiles-CdLTlJLc.js → auth-profiles-15pq9j9V.js} +16 -16
  25. package/dist/{auth-token-7kzDLVhb.js → auth-token-Bwn8N6KA.js} +1 -1
  26. package/dist/{banner-CpzKVd4-.js → banner-hcZ0XNXv.js} +2 -2
  27. package/dist/{bonjour-discovery-BuS9wF_p.js → bonjour-discovery-2btw06uD.js} +1 -1
  28. package/dist/{browser-cli-BVtbvQ3Z.js → browser-cli-C4PdLYHy.js} +12 -12
  29. package/dist/build-info.json +3 -3
  30. package/dist/bundled/boot-md/handler.js +51 -51
  31. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  32. package/dist/bundled/command-logger/handler.js +2 -2
  33. package/dist/bundled/session-memory/handler.js +51 -51
  34. package/dist/{call-Dp9SDkqK.js → call-CZgRbVYm.js} +10 -10
  35. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  36. package/dist/{channel-account-context-ESLVGdUf.js → channel-account-context-BYiOuxnf.js} +5 -5
  37. package/dist/{channel-activity-LfmEkdDN.js → channel-activity-D9K6yeu8.js} +1 -1
  38. package/dist/{channel-activity-BDnjYF7B.js → channel-activity-xHOMiarp.js} +3 -3
  39. package/dist/{channel-options-CsYaFB_4.js → channel-options-DJkf_8wi.js} +3 -3
  40. package/dist/{channel-selection-DFJsYFPo.js → channel-selection-BpIsCVV5.js} +1 -1
  41. package/dist/{channel-web-DzRsJEE4.js → channel-web-wb1My1Yi.js} +17 -17
  42. package/dist/{channels-cli-CpfeOXtJ.js → channels-cli-DlQONtY9.js} +93 -93
  43. package/dist/{channels-status-issues-6V9ktlZD.js → channels-status-issues-Hj-GOSVm.js} +1 -1
  44. package/dist/{chrome-CRBG2YP_.js → chrome-DwizpzOC.js} +26 -26
  45. package/dist/{chrome-CyM61Cn2.js → chrome-L_icBVLq.js} +4 -4
  46. package/dist/{clawbot-cli-COtnakIJ.js → clawbot-cli-CyTZUVIJ.js} +11 -11
  47. package/dist/cli/daemon-cli.js +1 -1
  48. package/dist/{cli-jnT1hYPO.js → cli-CNTrB-ni.js} +73 -73
  49. package/dist/{client-C-wA75vx.js → client-g0366Z73.js} +2 -2
  50. package/dist/{command-registry-g5tDqdAU.js → command-registry-VOmumlmD.js} +11 -11
  51. package/dist/{command-secret-targets-u3eWn-W3.js → command-secret-targets-CIMuIdbL.js} +4 -4
  52. package/dist/{commands-C8pWcFs_.js → commands-DU7At3rY.js} +1 -1
  53. package/dist/{commands-registry-J6nVL3BQ.js → commands-registry-B_WUa9KB.js} +3 -3
  54. package/dist/{commands-registry-D5qXbFJn.js → commands-registry-V1zZ5pPC.js} +4 -4
  55. package/dist/{completion-cli-DQsyli3B.js → completion-cli-pqdmKVTo.js} +13 -13
  56. package/dist/{config-cli-DUycVHoC.js → config-cli-BqznmzlM.js} +7 -7
  57. package/dist/{config-guard--Obk2MGi.js → config-guard-D8jiLjr7.js} +3 -3
  58. package/dist/{config-validation-iOxszdEd.js → config-validation-BngLiGoq.js} +3 -3
  59. package/dist/{configure-Al_pz_5z.js → configure-B--Umf_O.js} +17 -17
  60. package/dist/{control-ui-assets-DpjfNcTC.js → control-ui-assets-C9ewbI8z.js} +1 -1
  61. package/dist/{cron-cli-CQ5EZw_b.js → cron-cli-DCRPpI1m.js} +11 -11
  62. package/dist/{daemon-cli-Bb80Mzv5.js → daemon-cli-DtBzKM_d.js} +15 -15
  63. package/dist/{daemon-install-B09ifLcJ.js → daemon-install-ckPBUAjJ.js} +4 -4
  64. package/dist/{daemon-install-helpers-CYpECiEx.js → daemon-install-helpers-BWf-PrgA.js} +11 -11
  65. package/dist/{deliver-ChbFOwjw.js → deliver-D4o6VIur.js} +21 -21
  66. package/dist/{deliver-CxF9h9PE.js → deliver-b93aBgie.js} +7 -7
  67. package/dist/deliver-runtime-CdWd-JQI.js +61 -0
  68. package/dist/deliver-runtime-P-G3bPjW.js +36 -0
  69. package/dist/deps-send-discord.runtime-BltWu9GW.js +36 -0
  70. package/dist/deps-send-discord.runtime-DnbhTFX9.js +26 -0
  71. package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +25 -0
  72. package/dist/deps-send-imessage.runtime-CdCif3t7.js +35 -0
  73. package/dist/deps-send-signal.runtime-CTcl388M.js +24 -0
  74. package/dist/deps-send-signal.runtime-fHqkSmMW.js +34 -0
  75. package/dist/deps-send-slack.runtime-CCqBz4Kg.js +22 -0
  76. package/dist/deps-send-slack.runtime-CkyZO7ln.js +32 -0
  77. package/dist/{deps-send-telegram.runtime-B6wp3kx8.js → deps-send-telegram.runtime-C--B69CN.js} +16 -16
  78. package/dist/deps-send-telegram.runtime-DGSKTCpH.js +27 -0
  79. package/dist/deps-send-whatsapp.runtime-BkoMLlCM.js +119 -0
  80. package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +60 -0
  81. package/dist/{devices-cli-C0dUbeL4.js → devices-cli-D6V059Dh.js} +8 -8
  82. package/dist/{diagnostic-Co6Kghr-.js → diagnostic-Bn4PZjMZ.js} +2 -2
  83. package/dist/{diagnostic-BfiudAAN.js → diagnostic-BpP9UBCE.js} +1 -1
  84. package/dist/{diagnostics-DCWM_8Ur.js → diagnostics---0c2_jo.js} +5 -5
  85. package/dist/{directory-cli-Dlws13Di.js → directory-cli-RYC34-EU.js} +7 -7
  86. package/dist/{dns-cli-But7QdAw.js → dns-cli-CElNoV5S.js} +5 -5
  87. package/dist/{dock-BbUkruOF.js → dock-nA2DVPCV.js} +4 -4
  88. package/dist/{docs-cli-Ck2IKAtw.js → docs-cli-Bv7ltPvi.js} +4 -4
  89. package/dist/{doctor-completion-Nat1HXE1.js → doctor-completion-CQIiN7rY.js} +2 -2
  90. package/dist/{doctor-config-flow-WCCoUXeB.js → doctor-config-flow-BOAryh5P.js} +15 -15
  91. package/dist/{enable-C3H8BtN4.js → enable-688HYBNS.js} +1 -1
  92. package/dist/entry.js +2 -2
  93. package/dist/{errors-xt401nuk.js → errors-CCLeFWAg.js} +1 -1
  94. package/dist/{exec-approvals-allowlist-ySf2Yo5n.js → exec-approvals-allowlist-C0Eya3rT.js} +1 -1
  95. package/dist/{exec-approvals-cli-DhLLOys6.js → exec-approvals-cli-BYYerKp8.js} +16 -16
  96. package/dist/{exec-safe-bin-runtime-policy-DnXViOlF.js → exec-safe-bin-runtime-policy-BmJmfDRo.js} +2 -2
  97. package/dist/{fetch-D-SiVqBm.js → fetch-BhAHVdwx.js} +3 -3
  98. package/dist/{fetch-DuraYswo.js → fetch-BlJWzEP6.js} +5 -5
  99. package/dist/{fetch-guard-CKYBfJ66.js → fetch-guard-BbBdhWz_.js} +1 -1
  100. package/dist/{fetch-guard-DWr0d00H.js → fetch-guard-ChYBwfiy.js} +2 -2
  101. package/dist/{frontmatter-BkTfEZ93.js → frontmatter-CvaMP376.js} +3 -3
  102. package/dist/{fs-safe-CTYUrIgQ.js → fs-safe-0jAo_Whb.js} +4 -4
  103. package/dist/{fs-safe-jMDpsYew.js → fs-safe-CFLs-j60.js} +24 -24
  104. package/dist/{gateway-cli--atF6LYo.js → gateway-cli-DOYWSRqa.js} +153 -153
  105. package/dist/{gateway-rpc-DYyQQ1z9.js → gateway-rpc-w6t8Eq_1.js} +1 -1
  106. package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
  107. package/dist/{health-BDJ72U4Z.js → health-C1EstYHd.js} +11 -11
  108. package/dist/{hooks-cli-r0UX8B9a.js → hooks-cli-BFMve5sG.js} +81 -81
  109. package/dist/{hooks-status-CxBdpBry.js → hooks-status-DBnEWOEP.js} +1 -1
  110. package/dist/{image-C7RmnYxa.js → image-Bbn53mzj.js} +6 -6
  111. package/dist/{image-CyHTO86Q.js → image-Bw71y73Q.js} +5 -5
  112. package/dist/{image-ops-pjs5W0CZ.js → image-ops-AJL9tN3_.js} +10 -10
  113. package/dist/{image-ops-BuUnEOE0.js → image-ops-CehkHxmW.js} +2 -2
  114. package/dist/image-runtime-6jhrqcle.js +55 -0
  115. package/dist/image-runtime-CVv2ra9J.js +29 -0
  116. package/dist/{inspect-BeU4yMp2.js → inspect-CUxeDA8c.js} +4 -4
  117. package/dist/{install-safe-path-BiL8OJvK.js → install-safe-path-BX58wFBl.js} +25 -25
  118. package/dist/{installs-BwKmG0Uy.js → installs-B-xr0Fzq.js} +9 -9
  119. package/dist/{ipv4-BoGwfnEw.js → ipv4-C4Yt-xid.js} +1 -1
  120. package/dist/{ir-B83looB-.js → ir-DAP-B-Xw.js} +8 -8
  121. package/dist/{ir-Da7Ahsqc.js → ir-otKVkb4a.js} +8 -8
  122. package/dist/{issue-format-CJ89_-9v.js → issue-format-DSksfKiV.js} +1 -1
  123. package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
  124. package/dist/{legacy-names-DOC03BkU.js → legacy-names-TyzbVqa_.js} +1 -1
  125. package/dist/{lifecycle-core-BzuWBBm8.js → lifecycle-core-DVwen0ks.js} +5 -5
  126. package/dist/llm-slug-generator.js +51 -51
  127. package/dist/{logger-BfjWMCSD.js → logger-DMZQQtxK.js} +7 -7
  128. package/dist/{login-VkQ9MW3d.js → login-BcRaGQb6.js} +3 -3
  129. package/dist/{login-CrIwcrVI.js → login-DiCctRo1.js} +5 -5
  130. package/dist/{login-qr-BVMQ-xQz.js → login-qr-C9D47WEZ.js} +6 -6
  131. package/dist/{login-qr-BpPDZdl_.js → login-qr-MUbXgjtd.js} +10 -10
  132. package/dist/{logs-cli-DWHhSnWs.js → logs-cli-B3TG2lp8.js} +9 -9
  133. package/dist/{manager-1bvuGrNR.js → manager-BW_NSIMl.js} +13 -13
  134. package/dist/{manager-BUBwl6M6.js → manager-iwcRf3Xc.js} +14 -14
  135. package/dist/manager-runtime-BN6VevdC.js +18 -0
  136. package/dist/{manager-runtime-H9iQnw64.js → manager-runtime-D3KqpRT7.js} +9 -9
  137. package/dist/{manifest-registry-DVviqWVY.js → manifest-registry-CJb8odRF.js} +1 -1
  138. package/dist/{memory-cli-DarWCbU6.js → memory-cli-DGsJx7YM.js} +12 -12
  139. package/dist/{model-BLV8y_N-.js → model-B792l3Cn.js} +2 -2
  140. package/dist/{model-catalog-DTcBkUlX.js → model-catalog-DZ6kl2Ko.js} +3 -3
  141. package/dist/{model-picker-D-fTOOzb.js → model-picker-6fHys0wK.js} +4 -4
  142. package/dist/{model-selection-Dna0Gz1k.js → model-selection-idoqPmw0.js} +43 -43
  143. package/dist/{models-CmjutMmh.js → models-DerrMmwF.js} +17 -17
  144. package/dist/{models-cli-BZFQX22p.js → models-cli-BkTZg_4v.js} +78 -78
  145. package/dist/{models-config-DNcDbV_G.js → models-config-Dabs9Kdv.js} +6 -6
  146. package/dist/{net-D5fSREu4.js → net-BAIqYNz0.js} +2 -2
  147. package/dist/{node-cli-Cnq-PJTp.js → node-cli-DoEq4zeG.js} +33 -33
  148. package/dist/{node-command-policy-B5BMBBJP.js → node-command-policy-DRhSc90G.js} +1 -1
  149. package/dist/{node-service-BpYZAvpl.js → node-service-CcgtNIeT.js} +1 -1
  150. package/dist/{nodes-cli-CkrDOWpv.js → nodes-cli--d9RiCnK.js} +16 -16
  151. package/dist/{nodes-screen-DfsQohWd.js → nodes-screen-BTND5VDq.js} +7 -7
  152. package/dist/{npm-pack-install-E-mkrZ55.js → npm-pack-install-CGUDOSKz.js} +18 -18
  153. package/dist/{npm-resolution-BUUmg5ON.js → npm-resolution-CAoULCWM.js} +4 -4
  154. package/dist/{onboard-DINGSS9R.js → onboard-CMZRkPVc.js} +6 -6
  155. package/dist/{onboard-channels-Di4MjWDY.js → onboard-channels-SlJu6XWJ.js} +21 -21
  156. package/dist/{onboard-custom-DITBQuWQ.js → onboard-custom-EzfL89yz.js} +4 -4
  157. package/dist/{onboard-helpers-DO7u2ZOy.js → onboard-helpers-lGpaVp03.js} +10 -10
  158. package/dist/{onboard-hooks-K02_ZWDq.js → onboard-hooks-B7TMiJoY.js} +4 -4
  159. package/dist/{onboard-remote-5-ugiSN2.js → onboard-remote-nvWS7on7.js} +4 -4
  160. package/dist/{onboard-skills-CSzbC2KZ.js → onboard-skills-hz91W03u.js} +4 -4
  161. package/dist/{onboarding-BM4dvUK6.js → onboarding-CTPuMVQI.js} +14 -14
  162. package/dist/{onboarding.finalize-p_RDh7ET.js → onboarding.finalize-DLzl5ZOg.js} +87 -87
  163. package/dist/{onboarding.gateway-config-DldlRfms.js → onboarding.gateway-config-C4MoTr60.js} +18 -18
  164. package/dist/{onboarding.secret-input-BIRIJiCU.js → onboarding.secret-input-BFD0OW4X.js} +1 -1
  165. package/dist/{openai-model-default-CY2Nk4cn.js → openai-model-default-h4LbSR7f.js} +2 -2
  166. package/dist/{openclaw-root-BFfBQ6FD.js → openclaw-root-BU3lu8pM.js} +8 -8
  167. package/dist/{outbound-ChDjtuD6.js → outbound-C2kanETZ.js} +6 -6
  168. package/dist/{outbound-attachment-DfWsfe2N.js → outbound-attachment-CAJBGcna.js} +2 -2
  169. package/dist/{outbound-attachment-DqHlD21U.js → outbound-attachment-DBrYWX8h.js} +2 -2
  170. package/dist/{outbound-DPdJe7e1.js → outbound-kbHYt1JW.js} +3 -3
  171. package/dist/{pairing-cli-D2VZxWg3.js → pairing-cli-CXbmkz7Z.js} +8 -8
  172. package/dist/{pairing-labels-D4rnJ5pJ.js → pairing-labels-CaPLIhlh.js} +1 -1
  173. package/dist/{pairing-store-BXArq4hn.js → pairing-store-Brs9aNn_.js} +3 -3
  174. package/dist/{path-alias-guards-DbNvNQar.js → path-alias-guards-DhIwq92y.js} +3 -3
  175. package/dist/{path-alias-guards-BzvdLvTI.js → path-alias-guards-DqXRZmsL.js} +1 -1
  176. package/dist/{path-safety-ClQO4BB6.js → path-safety-BjIM4N4t.js} +1 -1
  177. package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
  178. package/dist/{paths-Bkr-BCxW.js → paths-CCxysrzL.js} +4 -4
  179. package/dist/{paths-BB_1ZWOj.js → paths-Cv63xST_.js} +9 -9
  180. package/dist/{pi-embedded-BC_GWGuw.js → pi-embedded-BaGj07T0.js} +167 -167
  181. package/dist/{pi-embedded-helpers-oXDyXTD8.js → pi-embedded-helpers-DC2OtKrl.js} +6 -6
  182. package/dist/{pi-embedded-helpers-CbIShbOM.js → pi-embedded-helpers-wy0DZvx1.js} +52 -52
  183. package/dist/{pi-model-discovery-Dymwdjt0.js → pi-model-discovery-BGgOlX8N.js} +7 -7
  184. package/dist/{pi-model-discovery-CECkJMCt.js → pi-model-discovery-DOb5RTev.js} +1 -1
  185. package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +11 -0
  186. package/dist/{pi-model-discovery-runtime-g7UP-SFR.js → pi-model-discovery-runtime-DShjmiiF.js} +5 -5
  187. package/dist/{pi-tools.before-tool-call.runtime-Df7B-ggW.js → pi-tools.before-tool-call.runtime-B079pVah.js} +5 -5
  188. package/dist/{pi-tools.before-tool-call.runtime-Cwab_5W1.js → pi-tools.before-tool-call.runtime-BuLxSyx9.js} +9 -9
  189. package/dist/{pi-tools.policy-CydUEzFi.js → pi-tools.policy-DZ-X86Va.js} +5 -5
  190. package/dist/{plugin-auto-enable-BE4ZVjAL.js → plugin-auto-enable-BCMqEDjQ.js} +3 -3
  191. package/dist/{plugin-registry-DXW3eyib.js → plugin-registry-BPlCWMur.js} +3 -3
  192. package/dist/plugin-sdk/discord.js +6 -6
  193. package/dist/{plugins-4Rj4OjLY.js → plugins-CWkRQYDj.js} +11 -11
  194. package/dist/{plugins-VAZrrfgw.js → plugins-DCxT-37x.js} +2 -2
  195. package/dist/{plugins-cli-BQJOOVMx.js → plugins-cli-D9ILEfyb.js} +83 -83
  196. package/dist/{ports-DMkRSlnH.js → ports-BlCLhwbc.js} +1 -1
  197. package/dist/{ports-DogAV7pa.js → ports-CER5YPnN.js} +2 -2
  198. package/dist/{program-BA11qFx1.js → program-CV56xn7w.js} +81 -81
  199. package/dist/{prompt-select-styled-B0GS28ia.js → prompt-select-styled-BOa5I_PU.js} +40 -40
  200. package/dist/{provider-auth-helpers-CrGL-jik.js → provider-auth-helpers-c6mNCUXO.js} +5 -5
  201. package/dist/{proxy-env-wKO3g8Yv.js → proxy-env-BMrSVckF.js} +1 -1
  202. package/dist/{proxy-env-DlmzDx8x.js → proxy-env-Cq5gdrbj.js} +1 -1
  203. package/dist/{proxy-fetch-B2pEfjbR.js → proxy-fetch-CCjEYbFm.js} +1 -1
  204. package/dist/{push-apns-BEwBjZ0a.js → push-apns-FOkPD05E.js} +5 -5
  205. package/dist/{pw-ai-D2wlMJtN.js → pw-ai-Cl1Lc7RC.js} +14 -14
  206. package/dist/{pw-ai-CnbxziFP.js → pw-ai-CxBU3aK5.js} +18 -18
  207. package/dist/{qmd-manager-BtIKUaO9.js → qmd-manager-BsYsO9Ii.js} +10 -10
  208. package/dist/{qmd-manager-Dp6PJ8zQ.js → qmd-manager-DEJMqoGd.js} +20 -20
  209. package/dist/{qr-cli-CFz9kS5X.js → qr-cli-BD2jK4fg.js} +2 -2
  210. package/dist/{query-expansion-BrSWVbaE.js → query-expansion-1UTIWjP6.js} +12 -12
  211. package/dist/{query-expansion-CX-1fS52.js → query-expansion-DtLc3wjL.js} +6 -6
  212. package/dist/{redact-COik8ET1.js → redact-ClbcYG1J.js} +1 -1
  213. package/dist/{redact-snapshot-Bs4goggz.js → redact-snapshot-D_qQD4A-.js} +1 -1
  214. package/dist/{register.agent-D641ju8B.js → register.agent-tbPA5YAy.js} +94 -94
  215. package/dist/register.configure-DuwRrXc2.js +165 -0
  216. package/dist/{register.maintenance-BFkk8MEH.js → register.maintenance-DrqDlV5b.js} +95 -95
  217. package/dist/{register.message-D5uE_Hop.js → register.message-CoKXNaU0.js} +74 -74
  218. package/dist/{register.onboard-zHFvSwFr.js → register.onboard-CSWOSL9O.js} +18 -18
  219. package/dist/{register.setup-uTbv3_P1.js → register.setup-DBx5JX6h.js} +21 -21
  220. package/dist/{register.status-health-sessions-CB7t-JQx.js → register.status-health-sessions-D1bPtfep.js} +88 -88
  221. package/dist/{register.subclis-MEiNmuy5.js → register.subclis-QGJNmjss.js} +31 -31
  222. package/dist/{rpc-DVfuVmy9.js → rpc-DkMrTUww.js} +1 -1
  223. package/dist/{run-main-mrvunzuy.js → run-main-CPftxqTe.js} +92 -92
  224. package/dist/{run-with-concurrency-BgYfgkXT.js → run-with-concurrency-D_ZpbgEG.js} +4 -4
  225. package/dist/{runtime-C87FQrrv.js → runtime-MAH2Oph4.js} +3 -3
  226. package/dist/{runtime-config-collectors-BQaC477D.js → runtime-config-collectors-BJMV6Mt1.js} +1 -1
  227. package/dist/{runtime-whatsapp-login.runtime-DjdgScUI.js → runtime-whatsapp-login.runtime-CGYWl9eB.js} +7 -7
  228. package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +13 -0
  229. package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +22 -0
  230. package/dist/{runtime-whatsapp-outbound.runtime-B74K7opl.js → runtime-whatsapp-outbound.runtime-hZEfYaRM.js} +15 -15
  231. package/dist/{sandbox-Ct-_lzi1.js → sandbox-0TbzPJaS.js} +18 -18
  232. package/dist/{sandbox-cli-C3RoXFRE.js → sandbox-cli-NLaxffXl.js} +25 -25
  233. package/dist/{secrets-cli-B3hqCxvs.js → secrets-cli-KLGbYet6.js} +11 -11
  234. package/dist/{security-cli-DcHIyXr7.js → security-cli-EIEkcYVb.js} +42 -42
  235. package/dist/{send-dfu6_rgf.js → send-BQERFNyo.js} +5 -5
  236. package/dist/{send-CnRP4P-G.js → send-BW-ZtYG3.js} +5 -5
  237. package/dist/{send-L7gRiwyd.js → send-Bj776ESJ.js} +7 -7
  238. package/dist/{send-2zKwf9NW.js → send-BtZAqquW.js} +11 -11
  239. package/dist/{send-DAQAKa9Z.js → send-CxgWxXZc.js} +6 -6
  240. package/dist/{send-5o2p_xjn.js → send-DAMtu9kK.js} +4 -4
  241. package/dist/{send-PE6cwoTe.js → send-DcxmcFi_.js} +8 -8
  242. package/dist/{send-6lz6rNVP.js → send-Dx2RkUOZ.js} +6 -6
  243. package/dist/{send-u1Bo4CSn.js → send-sC6ka831.js} +8 -8
  244. package/dist/{send-BHTiZcH3.js → send-vmONuVgL.js} +26 -26
  245. package/dist/{server-context-8pDe2iyd.js → server-context-HJVwPQYn.js} +12 -12
  246. package/dist/{server-Ci4xtuR9.js → server-kUElNhlY.js} +20 -20
  247. package/dist/{server-lifecycle-k5daSrde.js → server-lifecycle-BE32unpZ.js} +2 -2
  248. package/dist/{server-middleware-DMiFT9xU.js → server-middleware-AS2VOYkK.js} +1 -1
  249. package/dist/{server-node-events-BmnPjNXE.js → server-node-events-DkbZzI6P.js} +74 -74
  250. package/dist/{service-BhOFtHSw.js → service-CyStNr3d.js} +15 -15
  251. package/dist/{session-D8ImowSs.js → session-A4QhBRvH.js} +8 -8
  252. package/dist/{session-DkOjpX3_.js → session-CaCx4rPH.js} +1 -1
  253. package/dist/{session-utils-DKRmXD2l.js → session-utils-CGqb1oeq.js} +6 -6
  254. package/dist/{sessions-svLGrv0Z.js → sessions-BV6HNW4h.js} +4 -4
  255. package/dist/{sessions-BOWPuhe5.js → sessions-BmVDW-7q.js} +15 -15
  256. package/dist/{shared-CjuadLFV.js → shared-DUQavBtY.js} +3 -3
  257. package/dist/{shared-CbAkLNrg.js → shared-JW74idb0.js} +1 -1
  258. package/dist/{skill-commands-DNqJ-kwn.js → skill-commands-CMzBZKG2.js} +9 -9
  259. package/dist/{skill-commands-TpUsdjev.js → skill-commands-WtIJG0CI.js} +5 -5
  260. package/dist/{skill-scanner-BZvvItef.js → skill-scanner-DIFsGcqE.js} +6 -6
  261. package/dist/{skills-DR-vacol.js → skills-7T9PwwL6.js} +3 -3
  262. package/dist/{skills-7ODkHQYp.js → skills-CE_iqvM5.js} +22 -22
  263. package/dist/{skills-cli-oay0tY8Z.js → skills-cli-DPavvthL.js} +5 -5
  264. package/dist/{skills-install-Vmi7xYfa.js → skills-install-BoLfaoWv.js} +6 -6
  265. package/dist/{skills-status-BmN697ff.js → skills-status-CK5Gnf6i.js} +1 -1
  266. package/dist/{slash-commands.runtime-BfaheruW.js → slash-commands.runtime-CMGx2xHy.js} +11 -11
  267. package/dist/slash-commands.runtime-Cpn2tYW4.js +16 -0
  268. package/dist/slash-dispatch.runtime-BAeJXa56.js +114 -0
  269. package/dist/slash-dispatch.runtime-DoBAQBU5.js +56 -0
  270. package/dist/{slash-skill-commands.runtime-D34BKAN-.js → slash-skill-commands.runtime-ChU2tck2.js} +15 -15
  271. package/dist/slash-skill-commands.runtime-DKMvvdDW.js +20 -0
  272. package/dist/{status-BcQchPaC.js → status-Bp-K1BEf.js} +27 -27
  273. package/dist/{status.update-B20UBTDq.js → status.update-ZYUSggzS.js} +2 -2
  274. package/dist/{store-D89wDcz9.js → store--eR1R_UX.js} +2 -2
  275. package/dist/{store-DDkqo1sO.js → store-DeASfYEV.js} +5 -5
  276. package/dist/{subagent-registry-CPxHbyN5.js → subagent-registry-8qHIVhRq.js} +149 -149
  277. package/dist/subagent-registry-runtime-DVomlbm6.js +114 -0
  278. package/dist/subagent-registry-runtime-ppWS3tVu.js +56 -0
  279. package/dist/{subsystem-B45WV3qB.js → subsystem-Di1z8l0Z.js} +14 -14
  280. package/dist/{system-cli-D2yIJoKU.js → system-cli-C2xNfuQM.js} +9 -9
  281. package/dist/{system-run-command-BmhbnLTE.js → system-run-command-BPWZk7KI.js} +1 -1
  282. package/dist/{systemd-DjWVSbAG.js → systemd-Cf-0XKYu.js} +9 -9
  283. package/dist/{systemd-hints-Do-aQ9jw.js → systemd-hints-CYllYKO0.js} +6 -6
  284. package/dist/{systemd-linger-DpmnYgKU.js → systemd-linger-zllO90bD.js} +1 -1
  285. package/dist/{tables-BxyIF0w4.js → tables-CV7Afb0h.js} +1 -1
  286. package/dist/{tables-mE4cJBN2.js → tables-d739Y1xW.js} +1 -1
  287. package/dist/{tailnet-0_FsdHP-.js → tailnet-DJFUq7_R.js} +1 -1
  288. package/dist/{target-errors-KOHiT_JA.js → target-errors-CBI2Ga0y.js} +2 -2
  289. package/dist/{target-errors-mnlwhAjP.js → target-errors-iVxliVqA.js} +4 -4
  290. package/dist/{thinking-BeGmb5k6.js → thinking-DXYisHiZ.js} +7 -7
  291. package/dist/{tokens-q32vI39c.js → tokens-DxnY9ui_.js} +1 -1
  292. package/dist/{tool-images-RZdHiZcG.js → tool-images-2cBx1W8h.js} +2 -2
  293. package/dist/{tool-images-CNPfeCmU.js → tool-images-Bn6dB14u.js} +1 -1
  294. package/dist/{tui-DL6NZZEa.js → tui-DTVy-YhN.js} +6 -6
  295. package/dist/{tui-cli-BNAYhvpu.js → tui-cli-CexRLJ3a.js} +32 -32
  296. package/dist/{update-DlS-d52F.js → update-DijPxK0g.js} +3 -3
  297. package/dist/{update-cli-D8-DqIs2.js → update-cli-9NslG4yR.js} +104 -104
  298. package/dist/{update-runner-CzTQ7BJT.js → update-runner-B6_UqreW.js} +16 -16
  299. package/dist/{web-igmw_EhT.js → web-CzWRVmFt.js} +55 -55
  300. package/dist/web-DGoa03ue.js +118 -0
  301. package/dist/{webhooks-cli-QdaQhvbT.js → webhooks-cli-B4ZcXTtw.js} +6 -6
  302. package/dist/{whatsapp-actions-Bp8F0cOF.js → whatsapp-actions-Jm4VW1Ve.js} +17 -17
  303. package/dist/{whatsapp-actions-BHbJJyqw.js → whatsapp-actions-iEArE_Ez.js} +21 -21
  304. package/dist/{with-timeout-BMMWHlH3.js → with-timeout-C8-tY12i.js} +3 -3
  305. package/dist/{workspace-v76gFdZu.js → workspace-CIGzK2_w.js} +1 -1
  306. package/dist/{workspace-U-DyR64O.js → workspace-CUVC6GX1.js} +20 -20
  307. package/dist/{workspace-dirs-Cz_Zgtg2.js → workspace-dirs-D4SMysgC.js} +1 -1
  308. package/dist/{wsl-CvQfS6aU.js → wsl-CsGe5QCP.js} +2 -2
  309. package/package.json +7 -9
  310. package/scripts/auth-monitor.sh +89 -0
  311. package/scripts/bench-cli-startup.ts +200 -0
  312. package/scripts/bench-model.ts +146 -0
  313. package/scripts/build-and-run-mac.sh +18 -0
  314. package/scripts/build-docs-list.mjs +14 -0
  315. package/scripts/build_icon.sh +59 -0
  316. package/scripts/bundle-a2ui.sh +95 -0
  317. package/scripts/canvas-a2ui-copy.ts +40 -0
  318. package/scripts/changelog-to-html.sh +91 -0
  319. package/scripts/check-channel-agnostic-boundaries.mjs +343 -0
  320. package/scripts/check-composite-action-input-interpolation.py +81 -0
  321. package/scripts/check-ingress-agent-owner-context.mjs +45 -0
  322. package/scripts/check-no-monolithic-plugin-sdk-entry-imports.ts +103 -0
  323. package/scripts/check-no-pairing-store-group-auth.mjs +180 -0
  324. package/scripts/check-no-random-messaging-tmp.mjs +89 -0
  325. package/scripts/check-no-raw-channel-fetch.mjs +107 -0
  326. package/scripts/check-no-raw-window-open.mjs +86 -0
  327. package/scripts/check-no-register-http-handler.mjs +38 -0
  328. package/scripts/check-pairing-account-scope.mjs +100 -0
  329. package/scripts/check-plugin-sdk-exports.mjs +157 -0
  330. package/scripts/check-ts-max-loc.ts +80 -0
  331. package/scripts/check-webhook-auth-body-order.mjs +55 -0
  332. package/scripts/ci-changed-scope.d.mts +9 -0
  333. package/scripts/ci-changed-scope.mjs +141 -0
  334. package/scripts/claude-auth-status.sh +280 -0
  335. package/scripts/clawlog.sh +321 -0
  336. package/scripts/clawtributors-map.json +40 -0
  337. package/scripts/codesign-mac-app.sh +289 -0
  338. package/scripts/codespell-dictionary.txt +3 -0
  339. package/scripts/codespell-ignore.txt +9 -0
  340. package/scripts/committer +117 -0
  341. package/scripts/copy-export-html-templates.ts +59 -0
  342. package/scripts/copy-hook-metadata.ts +55 -0
  343. package/scripts/copy-plugin-sdk-root-alias.mjs +10 -0
  344. package/scripts/create-dmg.sh +176 -0
  345. package/scripts/create-instance.sh +4 -1
  346. package/scripts/cron_usage_report.ts +273 -0
  347. package/scripts/debug-claude-usage.ts +391 -0
  348. package/scripts/dev/discord-acp-plain-language-smoke.ts +868 -0
  349. package/scripts/dev/gateway-smoke.ts +75 -0
  350. package/scripts/dev/gateway-ws-client.ts +132 -0
  351. package/scripts/dev/ios-node-e2e.ts +283 -0
  352. package/scripts/dev/ios-pull-gateway-log.sh +17 -0
  353. package/scripts/dev/test-device-pair-telegram.ts +62 -0
  354. package/scripts/docker/cleanup-smoke/Dockerfile +19 -0
  355. package/scripts/docker/cleanup-smoke/run.sh +35 -0
  356. package/scripts/docker/install-sh-common/cli-verify.sh +47 -0
  357. package/scripts/docker/install-sh-e2e/Dockerfile +17 -0
  358. package/scripts/docker/install-sh-e2e/run.sh +535 -0
  359. package/scripts/docker/install-sh-nonroot/Dockerfile +33 -0
  360. package/scripts/docker/install-sh-nonroot/run.sh +36 -0
  361. package/scripts/docker/install-sh-smoke/Dockerfile +25 -0
  362. package/scripts/docker/install-sh-smoke/run.sh +63 -0
  363. package/scripts/docs-i18n/doc_mode.go +272 -0
  364. package/scripts/docs-i18n/glossary.go +29 -0
  365. package/scripts/docs-i18n/go.mod +10 -0
  366. package/scripts/docs-i18n/go.sum +10 -0
  367. package/scripts/docs-i18n/html_translate.go +160 -0
  368. package/scripts/docs-i18n/main.go +273 -0
  369. package/scripts/docs-i18n/markdown_segments.go +131 -0
  370. package/scripts/docs-i18n/masking.go +89 -0
  371. package/scripts/docs-i18n/order.go +37 -0
  372. package/scripts/docs-i18n/placeholders.go +30 -0
  373. package/scripts/docs-i18n/process.go +202 -0
  374. package/scripts/docs-i18n/prompt.go +146 -0
  375. package/scripts/docs-i18n/segment.go +11 -0
  376. package/scripts/docs-i18n/tm.go +132 -0
  377. package/scripts/docs-i18n/translator.go +247 -0
  378. package/scripts/docs-i18n/util.go +81 -0
  379. package/scripts/docs-link-audit.mjs +233 -0
  380. package/scripts/docs-list.js +173 -0
  381. package/scripts/docs-spellcheck.sh +44 -0
  382. package/scripts/e2e/Dockerfile +30 -0
  383. package/scripts/e2e/Dockerfile.qr-import +13 -0
  384. package/scripts/e2e/doctor-install-switch-docker.sh +160 -0
  385. package/scripts/e2e/gateway-network-docker.sh +145 -0
  386. package/scripts/e2e/onboard-docker.sh +570 -0
  387. package/scripts/e2e/plugins-docker.sh +224 -0
  388. package/scripts/e2e/qr-import-docker.sh +11 -0
  389. package/scripts/firecrawl-compare.ts +139 -0
  390. package/scripts/generate-host-env-security-policy-swift.mjs +74 -0
  391. package/scripts/generate-secretref-credential-matrix.ts +14 -0
  392. package/scripts/ghsa-patch.mjs +168 -0
  393. package/scripts/install-maca.sh +173 -0
  394. package/scripts/install.ps1 +329 -0
  395. package/scripts/ios-configure-signing.sh +100 -0
  396. package/scripts/ios-team-id.sh +207 -0
  397. package/scripts/label-open-issues.ts +893 -0
  398. package/scripts/lib/callsite-guard.mjs +45 -0
  399. package/scripts/lib/pairing-guard-context.mjs +13 -0
  400. package/scripts/lib/ts-guard-utils.mjs +157 -0
  401. package/scripts/make_appcast.sh +70 -0
  402. package/scripts/mobile-reauth.sh +84 -0
  403. package/scripts/notarize-mac-artifact.sh +65 -0
  404. package/scripts/npm_publish.sh +48 -0
  405. package/scripts/package-mac-app.sh +280 -0
  406. package/scripts/package-mac-dist.sh +93 -0
  407. package/scripts/podman/openclaw.container.in +28 -0
  408. package/scripts/pr +1708 -0
  409. package/scripts/pr-merge +44 -0
  410. package/scripts/pr-prepare +40 -0
  411. package/scripts/pr-review +13 -0
  412. package/scripts/pre-commit/filter-staged-files.mjs +39 -0
  413. package/scripts/pre-commit/run-node-tool.sh +31 -0
  414. package/scripts/protocol-gen-swift.ts +247 -0
  415. package/scripts/protocol-gen.ts +51 -0
  416. package/scripts/readability-basic-compare.ts +66 -0
  417. package/scripts/recover-orphaned-processes.sh +191 -0
  418. package/scripts/release-check.ts +362 -0
  419. package/scripts/repro/tsx-name-repro.ts +3 -0
  420. package/scripts/restart-mac.sh +269 -0
  421. package/scripts/run-node.d.mts +22 -0
  422. package/scripts/run-node.mjs +263 -0
  423. package/scripts/run-openclaw-podman.sh +213 -0
  424. package/scripts/sandbox-browser-entrypoint.sh +127 -0
  425. package/scripts/sandbox-browser-setup.sh +7 -0
  426. package/scripts/sandbox-common-setup.sh +40 -0
  427. package/scripts/sandbox-setup.sh +7 -0
  428. package/scripts/setup-auth-system.sh +119 -0
  429. package/scripts/shell-helpers/README.md +226 -0
  430. package/scripts/shell-helpers/clawdock-helpers.sh +417 -0
  431. package/scripts/sparkle-build.ts +76 -0
  432. package/scripts/sqlite-vec-smoke.mjs +38 -0
  433. package/scripts/sync-dist.sh +171 -0
  434. package/scripts/sync-labels.ts +100 -0
  435. package/scripts/sync-moonshot-docs.ts +125 -0
  436. package/scripts/sync-plugin-versions.ts +108 -0
  437. package/scripts/systemd/openclaw-auth-monitor.service +14 -0
  438. package/scripts/systemd/openclaw-auth-monitor.timer +10 -0
  439. package/scripts/termux-auth-widget.sh +81 -0
  440. package/scripts/termux-quick-auth.sh +30 -0
  441. package/scripts/termux-sync-widget.sh +25 -0
  442. package/scripts/test-cleanup-docker.sh +14 -0
  443. package/scripts/test-force.ts +59 -0
  444. package/scripts/test-hotspots.mjs +83 -0
  445. package/scripts/test-install-sh-docker.sh +72 -0
  446. package/scripts/test-install-sh-e2e-docker.sh +29 -0
  447. package/scripts/test-live-gateway-models-docker.sh +33 -0
  448. package/scripts/test-live-models-docker.sh +34 -0
  449. package/scripts/test-parallel.mjs +468 -0
  450. package/scripts/test-perf-budget.mjs +127 -0
  451. package/scripts/test-shell-completion.ts +223 -0
  452. package/scripts/ui.js +203 -0
  453. package/scripts/update-clawtributors.ts +573 -0
  454. package/scripts/update-clawtributors.types.ts +36 -0
  455. package/scripts/update-package-with-mirror.sh +67 -0
  456. package/scripts/watch-node.d.mts +14 -0
  457. package/scripts/watch-node.mjs +92 -0
  458. package/scripts/write-build-info.ts +47 -0
  459. package/scripts/write-cli-compat.ts +74 -0
  460. package/scripts/write-cli-startup-metadata.ts +93 -0
  461. package/scripts/write-plugin-sdk-entry-dts.ts +60 -0
  462. package/scripts/zai-fallback-repro.ts +168 -0
  463. package/dist/deliver-runtime-B80mXYrL.js +0 -36
  464. package/dist/deliver-runtime-DixuU_uB.js +0 -61
  465. package/dist/deps-send-discord.runtime-CDcLcDSt.js +0 -36
  466. package/dist/deps-send-discord.runtime-DZUccI6Z.js +0 -26
  467. package/dist/deps-send-imessage.runtime-BGPUVMIE.js +0 -35
  468. package/dist/deps-send-imessage.runtime-CF3OpoqY.js +0 -25
  469. package/dist/deps-send-signal.runtime-Cw4-ozeO.js +0 -24
  470. package/dist/deps-send-signal.runtime-DQDD44_O.js +0 -34
  471. package/dist/deps-send-slack.runtime-BDsDhS1P.js +0 -22
  472. package/dist/deps-send-slack.runtime-Cpy77gBG.js +0 -32
  473. package/dist/deps-send-telegram.runtime-D_4xVasO.js +0 -27
  474. package/dist/deps-send-whatsapp.runtime-D2sVAclS.js +0 -119
  475. package/dist/deps-send-whatsapp.runtime-UBgpoWg9.js +0 -60
  476. package/dist/image-runtime-B2qh5seQ.js +0 -55
  477. package/dist/image-runtime-DtMbm7AR.js +0 -29
  478. package/dist/manager-runtime-FO1Sx3W8.js +0 -18
  479. package/dist/pi-model-discovery-runtime-BeY4EUPp.js +0 -11
  480. package/dist/register.configure-BrDOSLIq.js +0 -165
  481. package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +0 -13
  482. package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +0 -22
  483. package/dist/slash-commands.runtime-CVw6566g.js +0 -16
  484. package/dist/slash-dispatch.runtime-CMK_EPYG.js +0 -56
  485. package/dist/slash-dispatch.runtime-D0xInkf3.js +0 -114
  486. package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +0 -20
  487. package/dist/subagent-registry-runtime-DdGrQBnQ.js +0 -56
  488. package/dist/subagent-registry-runtime-SkB2tTaE.js +0 -114
  489. package/dist/web-DWiOofzq.js +0 -118
  490. package/install.sh +0 -293
@@ -0,0 +1,280 @@
1
+ #!/bin/bash
2
+ # Claude Code Authentication Status Checker
3
+ # Checks both Claude Code and OpenClaw auth status
4
+
5
+ set -euo pipefail
6
+
7
+ CLAUDE_CREDS="$HOME/.claude/.credentials.json"
8
+ OPENCLAW_AUTH="$HOME/.openclaw/agents/main/agent/auth-profiles.json"
9
+
10
+ # Colors for terminal output
11
+ RED='\033[0;31m'
12
+ YELLOW='\033[1;33m'
13
+ GREEN='\033[0;32m'
14
+ NC='\033[0m' # No Color
15
+
16
+ # Output mode: "full" (default), "json", or "simple"
17
+ OUTPUT_MODE="${1:-full}"
18
+
19
+ fetch_models_status_json() {
20
+ openclaw models status --json 2>/dev/null || true
21
+ }
22
+
23
+ STATUS_JSON="$(fetch_models_status_json)"
24
+ USE_JSON=0
25
+ if [ -n "$STATUS_JSON" ]; then
26
+ USE_JSON=1
27
+ fi
28
+
29
+ calc_status_from_expires() {
30
+ local expires_at="$1"
31
+ if ! [[ "$expires_at" =~ ^-?[0-9]+$ ]]; then
32
+ expires_at=0
33
+ fi
34
+ local now_ms=$(( $(date +%s) * 1000 ))
35
+ local diff_ms=$((expires_at - now_ms))
36
+ local hours=$((diff_ms / 3600000))
37
+ local mins=$(((diff_ms % 3600000) / 60000))
38
+
39
+ if [ "$expires_at" -le 0 ]; then
40
+ echo "MISSING"
41
+ return 1
42
+ elif [ "$diff_ms" -lt 0 ]; then
43
+ echo "EXPIRED"
44
+ return 1
45
+ elif [ "$diff_ms" -lt 3600000 ]; then
46
+ echo "EXPIRING:${mins}m"
47
+ return 2
48
+ else
49
+ echo "OK:${hours}h${mins}m"
50
+ return 0
51
+ fi
52
+ }
53
+
54
+ json_expires_for_claude_cli() {
55
+ echo "$STATUS_JSON" | jq -r '
56
+ [.auth.oauth.profiles[]
57
+ | select(.provider == "anthropic" and (.type == "oauth" or .type == "token"))
58
+ | .expiresAt // 0]
59
+ | max // 0
60
+ ' 2>/dev/null || echo "0"
61
+ }
62
+
63
+ json_expires_for_anthropic_any() {
64
+ echo "$STATUS_JSON" | jq -r '
65
+ [.auth.oauth.profiles[]
66
+ | select(.provider == "anthropic" and .type == "oauth")
67
+ | .expiresAt // 0]
68
+ | max // 0
69
+ ' 2>/dev/null || echo "0"
70
+ }
71
+
72
+ json_best_anthropic_profile() {
73
+ echo "$STATUS_JSON" | jq -r '
74
+ [.auth.oauth.profiles[]
75
+ | select(.provider == "anthropic" and .type == "oauth")
76
+ | {id: .profileId, exp: (.expiresAt // 0)}]
77
+ | sort_by(.exp) | reverse | .[0].id // "none"
78
+ ' 2>/dev/null || echo "none"
79
+ }
80
+
81
+ json_anthropic_api_key_count() {
82
+ echo "$STATUS_JSON" | jq -r '
83
+ [.auth.providers[] | select(.provider == "anthropic") | .profiles.apiKey]
84
+ | max // 0
85
+ ' 2>/dev/null || echo "0"
86
+ }
87
+
88
+ check_claude_code_auth() {
89
+ if [ "$USE_JSON" -eq 1 ]; then
90
+ local expires_at
91
+ expires_at=$(json_expires_for_claude_cli)
92
+ calc_status_from_expires "$expires_at"
93
+ return $?
94
+ fi
95
+
96
+ if [ ! -f "$CLAUDE_CREDS" ]; then
97
+ echo "MISSING"
98
+ return 1
99
+ fi
100
+
101
+ local expires_at
102
+ expires_at=$(jq -r '.claudeAiOauth.expiresAt // 0' "$CLAUDE_CREDS" 2>/dev/null || echo "0")
103
+ calc_status_from_expires "$expires_at"
104
+ }
105
+
106
+ check_openclaw_auth() {
107
+ if [ "$USE_JSON" -eq 1 ]; then
108
+ local api_keys
109
+ api_keys=$(json_anthropic_api_key_count)
110
+ if ! [[ "$api_keys" =~ ^[0-9]+$ ]]; then
111
+ api_keys=0
112
+ fi
113
+ local expires_at
114
+ expires_at=$(json_expires_for_anthropic_any)
115
+
116
+ if [ "$expires_at" -le 0 ] && [ "$api_keys" -gt 0 ]; then
117
+ echo "OK:static"
118
+ return 0
119
+ fi
120
+
121
+ calc_status_from_expires "$expires_at"
122
+ return $?
123
+ fi
124
+
125
+ if [ ! -f "$OPENCLAW_AUTH" ]; then
126
+ echo "MISSING"
127
+ return 1
128
+ fi
129
+
130
+ local expires
131
+ expires=$(jq -r '
132
+ [.profiles | to_entries[] | select(.value.provider == "anthropic") | .value.expires]
133
+ | max // 0
134
+ ' "$OPENCLAW_AUTH" 2>/dev/null || echo "0")
135
+
136
+ calc_status_from_expires "$expires"
137
+ }
138
+
139
+ # JSON output mode
140
+ if [ "$OUTPUT_MODE" = "json" ]; then
141
+ claude_status=$(check_claude_code_auth 2>/dev/null || true)
142
+ openclaw_status=$(check_openclaw_auth 2>/dev/null || true)
143
+
144
+ claude_expires=0
145
+ openclaw_expires=0
146
+ if [ "$USE_JSON" -eq 1 ]; then
147
+ claude_expires=$(json_expires_for_claude_cli)
148
+ openclaw_expires=$(json_expires_for_anthropic_any)
149
+ else
150
+ claude_expires=$(jq -r '.claudeAiOauth.expiresAt // 0' "$CLAUDE_CREDS" 2>/dev/null || echo "0")
151
+ openclaw_expires=$(jq -r '.profiles["anthropic:default"].expires // 0' "$OPENCLAW_AUTH" 2>/dev/null || echo "0")
152
+ fi
153
+
154
+ jq -n \
155
+ --arg cs "$claude_status" \
156
+ --arg ce "$claude_expires" \
157
+ --arg bs "$openclaw_status" \
158
+ --arg be "$openclaw_expires" \
159
+ '{
160
+ claude_code: {status: $cs, expires_at_ms: ($ce | tonumber)},
161
+ openclaw: {status: $bs, expires_at_ms: ($be | tonumber)},
162
+ needs_reauth: (($cs | startswith("EXPIRED") or startswith("EXPIRING") or startswith("MISSING")) or ($bs | startswith("EXPIRED") or startswith("EXPIRING") or startswith("MISSING")))
163
+ }'
164
+ exit 0
165
+ fi
166
+
167
+ # Simple output mode (for scripts/widgets)
168
+ if [ "$OUTPUT_MODE" = "simple" ]; then
169
+ claude_status=$(check_claude_code_auth 2>/dev/null || true)
170
+ openclaw_status=$(check_openclaw_auth 2>/dev/null || true)
171
+
172
+ if [[ "$claude_status" == EXPIRED* ]] || [[ "$claude_status" == MISSING* ]]; then
173
+ echo "CLAUDE_EXPIRED"
174
+ exit 1
175
+ elif [[ "$openclaw_status" == EXPIRED* ]] || [[ "$openclaw_status" == MISSING* ]]; then
176
+ echo "OPENCLAW_EXPIRED"
177
+ exit 1
178
+ elif [[ "$claude_status" == EXPIRING* ]]; then
179
+ echo "CLAUDE_EXPIRING"
180
+ exit 2
181
+ elif [[ "$openclaw_status" == EXPIRING* ]]; then
182
+ echo "OPENCLAW_EXPIRING"
183
+ exit 2
184
+ else
185
+ echo "OK"
186
+ exit 0
187
+ fi
188
+ fi
189
+
190
+ # Full output mode (default)
191
+ echo "=== Claude Code Auth Status ==="
192
+ echo ""
193
+
194
+ # Claude Code credentials
195
+ echo "Claude Code (~/.claude/.credentials.json):"
196
+ if [ "$USE_JSON" -eq 1 ]; then
197
+ expires_at=$(json_expires_for_claude_cli)
198
+ else
199
+ expires_at=$(jq -r '.claudeAiOauth.expiresAt // 0' "$CLAUDE_CREDS" 2>/dev/null || echo "0")
200
+ fi
201
+
202
+ if [ -f "$CLAUDE_CREDS" ]; then
203
+ sub_type=$(jq -r '.claudeAiOauth.subscriptionType // "unknown"' "$CLAUDE_CREDS" 2>/dev/null || echo "unknown")
204
+ rate_tier=$(jq -r '.claudeAiOauth.rateLimitTier // "unknown"' "$CLAUDE_CREDS" 2>/dev/null || echo "unknown")
205
+ echo " Subscription: $sub_type"
206
+ echo " Rate tier: $rate_tier"
207
+ fi
208
+
209
+ if [ "$expires_at" -le 0 ]; then
210
+ echo -e " Status: ${RED}NOT FOUND${NC}"
211
+ echo " Action needed: Run 'claude setup-token'"
212
+ else
213
+ now_ms=$(( $(date +%s) * 1000 ))
214
+ diff_ms=$((expires_at - now_ms))
215
+ hours=$((diff_ms / 3600000))
216
+ mins=$(((diff_ms % 3600000) / 60000))
217
+
218
+ if [ "$diff_ms" -lt 0 ]; then
219
+ echo -e " Status: ${RED}EXPIRED${NC}"
220
+ echo " Action needed: Run 'claude setup-token' or re-authenticate"
221
+ elif [ "$diff_ms" -lt 3600000 ]; then
222
+ echo -e " Status: ${YELLOW}EXPIRING SOON (${mins}m remaining)${NC}"
223
+ echo " Consider running: claude setup-token"
224
+ else
225
+ echo -e " Status: ${GREEN}OK${NC}"
226
+ echo " Expires: $(date -d @$((expires_at/1000))) (${hours}h ${mins}m)"
227
+ fi
228
+ fi
229
+
230
+ echo ""
231
+ echo "OpenClaw Auth (~/.openclaw/agents/main/agent/auth-profiles.json):"
232
+ if [ "$USE_JSON" -eq 1 ]; then
233
+ best_profile=$(json_best_anthropic_profile)
234
+ expires=$(json_expires_for_anthropic_any)
235
+ api_keys=$(json_anthropic_api_key_count)
236
+ else
237
+ best_profile=$(jq -r '
238
+ .profiles | to_entries
239
+ | map(select(.value.provider == "anthropic"))
240
+ | sort_by(.value.expires) | reverse
241
+ | .[0].key // "none"
242
+ ' "$OPENCLAW_AUTH" 2>/dev/null || echo "none")
243
+ expires=$(jq -r '
244
+ [.profiles | to_entries[] | select(.value.provider == "anthropic") | .value.expires]
245
+ | max // 0
246
+ ' "$OPENCLAW_AUTH" 2>/dev/null || echo "0")
247
+ api_keys=0
248
+ fi
249
+
250
+ echo " Profile: $best_profile"
251
+
252
+ if [ "$expires" -le 0 ] && [ "$api_keys" -gt 0 ]; then
253
+ echo -e " Status: ${GREEN}OK${NC} (API key)"
254
+ elif [ "$expires" -le 0 ]; then
255
+ echo -e " Status: ${RED}NOT FOUND${NC}"
256
+ echo " Note: Run 'openclaw doctor --yes' to sync from Claude Code"
257
+ else
258
+ now_ms=$(( $(date +%s) * 1000 ))
259
+ diff_ms=$((expires - now_ms))
260
+ hours=$((diff_ms / 3600000))
261
+ mins=$(((diff_ms % 3600000) / 60000))
262
+
263
+ if [ "$diff_ms" -lt 0 ]; then
264
+ echo -e " Status: ${RED}EXPIRED${NC}"
265
+ echo " Note: Run 'openclaw doctor --yes' to sync from Claude Code"
266
+ elif [ "$diff_ms" -lt 3600000 ]; then
267
+ echo -e " Status: ${YELLOW}EXPIRING SOON (${mins}m remaining)${NC}"
268
+ else
269
+ echo -e " Status: ${GREEN}OK${NC}"
270
+ echo " Expires: $(date -d @$((expires/1000))) (${hours}h ${mins}m)"
271
+ fi
272
+ fi
273
+
274
+ echo ""
275
+ echo "=== Service Status ==="
276
+ if systemctl --user is-active openclaw >/dev/null 2>&1; then
277
+ echo -e "OpenClaw service: ${GREEN}running${NC}"
278
+ else
279
+ echo -e "OpenClaw service: ${RED}NOT running${NC}"
280
+ fi
@@ -0,0 +1,321 @@
1
+ #!/bin/bash
2
+
3
+ # VibeTunnel Logging Utility
4
+ # Simplifies access to VibeTunnel logs using macOS unified logging system
5
+
6
+ set -euo pipefail
7
+
8
+ # Configuration
9
+ SUBSYSTEM="ai.openclaw"
10
+ DEFAULT_LEVEL="info"
11
+
12
+ # Colors for output
13
+ RED='\033[0;31m'
14
+ GREEN='\033[0;32m'
15
+ YELLOW='\033[1;33m'
16
+ BLUE='\033[0;34m'
17
+ NC='\033[0m' # No Color
18
+
19
+ # Function to handle sudo password errors
20
+ handle_sudo_error() {
21
+ echo -e "\n${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
22
+ echo -e "${YELLOW}⚠️ Password Required for Log Access${NC}"
23
+ echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}\n"
24
+ echo -e "clawlog needs to use sudo to show complete log data (Apple hides sensitive info by default)."
25
+ echo -e "\nTo avoid password prompts, configure passwordless sudo for the log command:"
26
+ echo -e "See: ${BLUE}apple/docs/logging-private-fix.md${NC}\n"
27
+ echo -e "Quick fix:"
28
+ echo -e " 1. Run: ${GREEN}sudo visudo${NC}"
29
+ echo -e " 2. Add: ${GREEN}$(whoami) ALL=(ALL) NOPASSWD: /usr/bin/log${NC}"
30
+ echo -e " 3. Save and exit (:wq)\n"
31
+ echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}\n"
32
+ exit 1
33
+ }
34
+
35
+ # Default values
36
+ STREAM_MODE=false
37
+ TIME_RANGE="5m" # Default to last 5 minutes
38
+ CATEGORY=""
39
+ LOG_LEVEL="$DEFAULT_LEVEL"
40
+ SEARCH_TEXT=""
41
+ OUTPUT_FILE=""
42
+ ERRORS_ONLY=false
43
+ SERVER_ONLY=false
44
+ TAIL_LINES=50 # Default number of lines to show
45
+ SHOW_TAIL=true
46
+ SHOW_HELP=false
47
+ STYLE_JSON=false
48
+
49
+ # Function to show usage
50
+ show_usage() {
51
+ cat << EOF
52
+ clawlog - OpenClaw Logging Utility
53
+
54
+ USAGE:
55
+ clawlog [OPTIONS]
56
+
57
+ DESCRIPTION:
58
+ View OpenClaw logs with full details (bypasses Apple's privacy redaction).
59
+ Requires sudo access configured for /usr/bin/log command.
60
+
61
+ LOG FLOW ARCHITECTURE:
62
+ OpenClaw logs flow through the macOS unified log (subsystem: ai.openclaw).
63
+
64
+ LOG CATEGORIES (examples):
65
+ • voicewake - Voice wake detection/test harness
66
+ • gateway - Gateway process manager
67
+ • xpc - XPC service calls
68
+ • notifications - Notification helper
69
+ • screenshot - Screenshotter
70
+ • shell - ShellExecutor
71
+
72
+ QUICK START:
73
+ clawlog -n 100 Show last 100 lines from all components
74
+ clawlog -f Follow logs in real-time
75
+ clawlog -e Show only errors
76
+ clawlog -c ServerManager Show logs from ServerManager only
77
+
78
+ OPTIONS:
79
+ -h, --help Show this help message
80
+ -f, --follow Stream logs continuously (like tail -f)
81
+ -n, --lines NUM Number of lines to show (default: 50)
82
+ -l, --last TIME Time range to search (default: 5m)
83
+ Examples: 5m, 1h, 2d, 1w
84
+ -c, --category CAT Filter by category (e.g., ServerManager, SessionService)
85
+ -e, --errors Show only error messages
86
+ -d, --debug Show debug level logs (more verbose)
87
+ -s, --search TEXT Search for specific text in log messages
88
+ -o, --output FILE Export logs to file
89
+ --server Show only server output logs
90
+ --all Show all logs without tail limit
91
+ --list-categories List all available log categories
92
+ --json Output in JSON format
93
+
94
+ EXAMPLES:
95
+ clawlog Show last 50 lines from past 5 minutes (default)
96
+ clawlog -f Stream logs continuously
97
+ clawlog -n 100 Show last 100 lines
98
+ clawlog -e Show only recent errors
99
+ clawlog -l 30m -n 200 Show last 200 lines from past 30 minutes
100
+ clawlog -c ServerManager Show recent ServerManager logs
101
+ clawlog -s "fail" Search for "fail" in recent logs
102
+ clawlog --server -e Show recent server errors
103
+ clawlog -f -d Stream debug logs continuously
104
+
105
+ CATEGORIES:
106
+ Common categories include:
107
+ - ServerManager - Server lifecycle and configuration
108
+ - SessionService - Terminal session management
109
+ - TerminalManager - Terminal spawning and control
110
+ - GitRepository - Git integration features
111
+ - ScreencapService - Screen capture functionality
112
+ - WebRTCManager - WebRTC connections
113
+ - UnixSocket - Unix socket communication
114
+ - WindowTracker - Window tracking and focus
115
+ - NgrokService - Ngrok tunnel management
116
+ - ServerOutput - Node.js server output
117
+
118
+ TIME FORMATS:
119
+ - 5m = 5 minutes - 1h = 1 hour
120
+ - 2d = 2 days - 1w = 1 week
121
+
122
+ EOF
123
+ }
124
+
125
+ # Function to list categories
126
+ list_categories() {
127
+ echo -e "${BLUE}Fetching VibeTunnel log categories from the last hour...${NC}\n"
128
+
129
+ # Get unique categories from recent logs
130
+ log show --predicate "subsystem == \"$SUBSYSTEM\"" --last 1h 2>/dev/null | \
131
+ grep -E "category: \"[^\"]+\"" | \
132
+ sed -E 's/.*category: "([^"]+)".*/\1/' | \
133
+ sort | uniq | \
134
+ while read -r cat; do
135
+ echo " • $cat"
136
+ done
137
+
138
+ echo -e "\n${YELLOW}Note: Only categories with recent activity are shown${NC}"
139
+ }
140
+
141
+ # Escape user input embedded in macOS log predicate string literals.
142
+ escape_predicate_literal() {
143
+ local value="$1"
144
+ value="${value//\\/\\\\}"
145
+ value="${value//\"/\\\"}"
146
+ printf '%s' "$value"
147
+ }
148
+
149
+ # Show help if no arguments provided
150
+ if [[ $# -eq 0 ]]; then
151
+ show_usage
152
+ exit 0
153
+ fi
154
+
155
+ # Parse command line arguments
156
+ while [[ $# -gt 0 ]]; do
157
+ case $1 in
158
+ -h|--help)
159
+ show_usage
160
+ exit 0
161
+ ;;
162
+ -f|--follow)
163
+ STREAM_MODE=true
164
+ SHOW_TAIL=false
165
+ shift
166
+ ;;
167
+ -n|--lines)
168
+ TAIL_LINES="$2"
169
+ shift 2
170
+ ;;
171
+ -l|--last)
172
+ TIME_RANGE="$2"
173
+ shift 2
174
+ ;;
175
+ -c|--category)
176
+ CATEGORY="$2"
177
+ shift 2
178
+ ;;
179
+ -e|--errors)
180
+ ERRORS_ONLY=true
181
+ shift
182
+ ;;
183
+ -d|--debug)
184
+ LOG_LEVEL="debug"
185
+ shift
186
+ ;;
187
+ -s|--search)
188
+ SEARCH_TEXT="$2"
189
+ shift 2
190
+ ;;
191
+ -o|--output)
192
+ OUTPUT_FILE="$2"
193
+ shift 2
194
+ ;;
195
+ --server)
196
+ SERVER_ONLY=true
197
+ CATEGORY="ServerOutput"
198
+ shift
199
+ ;;
200
+ --list-categories)
201
+ list_categories
202
+ exit 0
203
+ ;;
204
+ --json)
205
+ STYLE_JSON=true
206
+ shift
207
+ ;;
208
+ --all)
209
+ SHOW_TAIL=false
210
+ shift
211
+ ;;
212
+ *)
213
+ echo -e "${RED}Unknown option: $1${NC}"
214
+ echo "Use -h or --help for usage information"
215
+ exit 1
216
+ ;;
217
+ esac
218
+ done
219
+
220
+ # Build the predicate
221
+ PREDICATE="subsystem == \"$SUBSYSTEM\""
222
+
223
+ # Add category filter if specified
224
+ if [[ -n "$CATEGORY" ]]; then
225
+ ESCAPED_CATEGORY=$(escape_predicate_literal "$CATEGORY")
226
+ PREDICATE="$PREDICATE AND category == \"$ESCAPED_CATEGORY\""
227
+ fi
228
+
229
+ # Add error filter if specified
230
+ if [[ "$ERRORS_ONLY" == true ]]; then
231
+ PREDICATE="$PREDICATE AND (eventType == \"error\" OR messageType == \"error\" OR eventMessage CONTAINS \"ERROR\" OR eventMessage CONTAINS \"[31m\")"
232
+ fi
233
+
234
+ # Add search filter if specified
235
+ if [[ -n "$SEARCH_TEXT" ]]; then
236
+ ESCAPED_SEARCH_TEXT=$(escape_predicate_literal "$SEARCH_TEXT")
237
+ PREDICATE="$PREDICATE AND eventMessage CONTAINS[c] \"$ESCAPED_SEARCH_TEXT\""
238
+ fi
239
+
240
+ # Build the command as argv array to avoid shell eval injection
241
+ LOG_CMD=(sudo log)
242
+ if [[ "$STREAM_MODE" == true ]]; then
243
+ # Streaming mode
244
+ LOG_CMD+=(stream --predicate "$PREDICATE" --level "$LOG_LEVEL" --info)
245
+
246
+ echo -e "${GREEN}Streaming VibeTunnel logs continuously...${NC}"
247
+ echo -e "${YELLOW}Press Ctrl+C to stop${NC}\n"
248
+ else
249
+ # Show mode
250
+ LOG_CMD+=(show --predicate "$PREDICATE")
251
+
252
+ # Add log level for show command
253
+ if [[ "$LOG_LEVEL" == "debug" ]]; then
254
+ LOG_CMD+=(--debug)
255
+ else
256
+ LOG_CMD+=(--info)
257
+ fi
258
+
259
+ # Add time range
260
+ LOG_CMD+=(--last "$TIME_RANGE")
261
+
262
+ if [[ "$SHOW_TAIL" == true ]]; then
263
+ echo -e "${GREEN}Showing last $TAIL_LINES log lines from the past $TIME_RANGE${NC}"
264
+ else
265
+ echo -e "${GREEN}Showing all logs from the past $TIME_RANGE${NC}"
266
+ fi
267
+
268
+ # Show applied filters
269
+ if [[ "$ERRORS_ONLY" == true ]]; then
270
+ echo -e "${RED}Filter: Errors only${NC}"
271
+ fi
272
+ if [[ -n "$CATEGORY" ]]; then
273
+ echo -e "${BLUE}Category: $CATEGORY${NC}"
274
+ fi
275
+ if [[ -n "$SEARCH_TEXT" ]]; then
276
+ echo -e "${YELLOW}Search: \"$SEARCH_TEXT\"${NC}"
277
+ fi
278
+ echo "" # Empty line for readability
279
+ fi
280
+
281
+ # Add style arguments if specified
282
+ if [[ "$STYLE_JSON" == true ]]; then
283
+ LOG_CMD+=(--style json)
284
+ fi
285
+
286
+ # Execute the command
287
+ if [[ -n "$OUTPUT_FILE" ]]; then
288
+ # First check if sudo works without password for the log command
289
+ if sudo -n /usr/bin/log show --last 1s 2>&1 | grep -q "password"; then
290
+ handle_sudo_error
291
+ fi
292
+
293
+ echo -e "${BLUE}Exporting logs to: $OUTPUT_FILE${NC}\n"
294
+ if [[ "$SHOW_TAIL" == true ]] && [[ "$STREAM_MODE" == false ]]; then
295
+ "${LOG_CMD[@]}" 2>&1 | tail -n "$TAIL_LINES" > "$OUTPUT_FILE"
296
+ else
297
+ "${LOG_CMD[@]}" > "$OUTPUT_FILE" 2>&1
298
+ fi
299
+
300
+ # Check if file was created and has content
301
+ if [[ -s "$OUTPUT_FILE" ]]; then
302
+ LINE_COUNT=$(wc -l < "$OUTPUT_FILE" | tr -d ' ')
303
+ echo -e "${GREEN}✓ Exported $LINE_COUNT lines to $OUTPUT_FILE${NC}"
304
+ else
305
+ echo -e "${YELLOW}⚠ No logs found matching the criteria${NC}"
306
+ fi
307
+ else
308
+ # Run interactively
309
+ # First check if sudo works without password for the log command
310
+ if sudo -n /usr/bin/log show --last 1s 2>&1 | grep -q "password"; then
311
+ handle_sudo_error
312
+ fi
313
+
314
+ if [[ "$SHOW_TAIL" == true ]] && [[ "$STREAM_MODE" == false ]]; then
315
+ # Apply tail for non-streaming mode
316
+ "${LOG_CMD[@]}" 2>&1 | tail -n "$TAIL_LINES"
317
+ echo -e "\n${YELLOW}Showing last $TAIL_LINES lines. Use --all or -n to see more.${NC}"
318
+ else
319
+ "${LOG_CMD[@]}"
320
+ fi
321
+ fi
@@ -0,0 +1,40 @@
1
+ {
2
+ "ensureLogins": [
3
+ "odrobnik",
4
+ "alphonse-arianee",
5
+ "aaronn",
6
+ "ronak-guliani",
7
+ "cpojer",
8
+ "carlulsoe",
9
+ "jdrhyne",
10
+ "latitudeki5223",
11
+ "longmaba",
12
+ "manmal",
13
+ "thesash",
14
+ "rhjoh",
15
+ "ysqander",
16
+ "atalovesyou",
17
+ "0xJonHoldsCrypto",
18
+ "hougangdev",
19
+ "jiulingyun"
20
+ ],
21
+ "seedCommit": "d6863f87",
22
+ "placeholderAvatar": "assets/avatar-placeholder.svg",
23
+ "displayName": {
24
+ "jdrhyne": "Jonathan D. Rhyne (DJ-D)"
25
+ },
26
+ "nameToLogin": {
27
+ "peter steinberger": "steipete",
28
+ "eng. juan combetto": "omniwired",
29
+ "mariano belinky": "mbelinky",
30
+ "vasanth rao naik sabavat": "vsabavat",
31
+ "tu nombre real": "nachx639",
32
+ "django navarro": "djangonavarro220"
33
+ },
34
+ "emailToLogin": {
35
+ "steipete@gmail.com": "steipete",
36
+ "sbarrios93@gmail.com": "sebslight",
37
+ "rltorres26+github@gmail.com": "RandyVentures",
38
+ "hixvac@gmail.com": "VACInc"
39
+ }
40
+ }