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.
- package/dist/{accounts-C_lW3Ag9.js → accounts-BOzyfwW4.js} +2 -2
- package/dist/{accounts-BVgYdU9W.js → accounts-BtEMxtPK.js} +1 -1
- package/dist/{accounts-BU-CeDai.js → accounts-CUYZBSKh.js} +1 -1
- package/dist/{accounts-C9HcPI9h.js → accounts-L9ByEpnP.js} +2 -2
- package/dist/{accounts-DJaYqD2E.js → accounts-khXX75l1.js} +7 -7
- package/dist/{accounts-Tgelvk0C.js → accounts-yfBeCZtS.js} +17 -17
- package/dist/{acp-cli-oWFHnS7i.js → acp-cli-CA2oCCEA.js} +8 -8
- package/dist/{active-listener-BEdprTkn.js → active-listener-D1yqT1cw.js} +2 -2
- package/dist/{agent-scope-BRElciAf.js → agent-scope-NQ9CtXYN.js} +17 -17
- package/dist/{agents-CujsWz9d.js → agents-BWVlofyv.js} +14 -14
- package/dist/{agents.config-C42STger.js → agents.config-QVfqc4C-.js} +2 -2
- package/dist/{api-key-rotation-BJpKWXy0.js → api-key-rotation-DtsNS2Nb.js} +2 -2
- package/dist/{api-key-rotation-BbuLHl0_.js → api-key-rotation-Vix80AUw.js} +1 -1
- package/dist/{audio-preflight-Yg1vzPE1.js → audio-preflight-DUtdCXjJ.js} +34 -34
- package/dist/{audio-preflight-C58LeYZM.js → audio-preflight-DpxQCpsA.js} +32 -32
- package/dist/{audio-transcription-runner-B8jbozH5.js → audio-transcription-runner-28fcRNNi.js} +12 -12
- package/dist/{audio-transcription-runner-D1cvrZ6s.js → audio-transcription-runner-DYKvqK54.js} +23 -23
- package/dist/{audit-membership-runtime-Dntemq07.js → audit-membership-runtime-DWyHWAHM.js} +4 -4
- package/dist/{audit-DtlAv66L.js → audit-oC--RZy0.js} +29 -29
- package/dist/{auth-Mj21c_GN.js → auth-YB6m93-M.js} +1 -1
- package/dist/{auth-choice-CEycltU4.js → auth-choice-CsSQLEkP.js} +13 -13
- package/dist/{auth-choice-CGHVedXa.js → auth-choice-gp-h1aBd.js} +11 -11
- package/dist/{auth-choice.apply-helpers-D4YQXYfc.js → auth-choice.apply-helpers-CPpuynsT.js} +1 -1
- package/dist/{auth-profiles-CdLTlJLc.js → auth-profiles-15pq9j9V.js} +16 -16
- package/dist/{auth-token-7kzDLVhb.js → auth-token-Bwn8N6KA.js} +1 -1
- package/dist/{banner-CpzKVd4-.js → banner-hcZ0XNXv.js} +2 -2
- package/dist/{bonjour-discovery-BuS9wF_p.js → bonjour-discovery-2btw06uD.js} +1 -1
- package/dist/{browser-cli-BVtbvQ3Z.js → browser-cli-C4PdLYHy.js} +12 -12
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +51 -51
- package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
- package/dist/bundled/command-logger/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +51 -51
- package/dist/{call-Dp9SDkqK.js → call-CZgRbVYm.js} +10 -10
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-account-context-ESLVGdUf.js → channel-account-context-BYiOuxnf.js} +5 -5
- package/dist/{channel-activity-LfmEkdDN.js → channel-activity-D9K6yeu8.js} +1 -1
- package/dist/{channel-activity-BDnjYF7B.js → channel-activity-xHOMiarp.js} +3 -3
- package/dist/{channel-options-CsYaFB_4.js → channel-options-DJkf_8wi.js} +3 -3
- package/dist/{channel-selection-DFJsYFPo.js → channel-selection-BpIsCVV5.js} +1 -1
- package/dist/{channel-web-DzRsJEE4.js → channel-web-wb1My1Yi.js} +17 -17
- package/dist/{channels-cli-CpfeOXtJ.js → channels-cli-DlQONtY9.js} +93 -93
- package/dist/{channels-status-issues-6V9ktlZD.js → channels-status-issues-Hj-GOSVm.js} +1 -1
- package/dist/{chrome-CRBG2YP_.js → chrome-DwizpzOC.js} +26 -26
- package/dist/{chrome-CyM61Cn2.js → chrome-L_icBVLq.js} +4 -4
- package/dist/{clawbot-cli-COtnakIJ.js → clawbot-cli-CyTZUVIJ.js} +11 -11
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-jnT1hYPO.js → cli-CNTrB-ni.js} +73 -73
- package/dist/{client-C-wA75vx.js → client-g0366Z73.js} +2 -2
- package/dist/{command-registry-g5tDqdAU.js → command-registry-VOmumlmD.js} +11 -11
- package/dist/{command-secret-targets-u3eWn-W3.js → command-secret-targets-CIMuIdbL.js} +4 -4
- package/dist/{commands-C8pWcFs_.js → commands-DU7At3rY.js} +1 -1
- package/dist/{commands-registry-J6nVL3BQ.js → commands-registry-B_WUa9KB.js} +3 -3
- package/dist/{commands-registry-D5qXbFJn.js → commands-registry-V1zZ5pPC.js} +4 -4
- package/dist/{completion-cli-DQsyli3B.js → completion-cli-pqdmKVTo.js} +13 -13
- package/dist/{config-cli-DUycVHoC.js → config-cli-BqznmzlM.js} +7 -7
- package/dist/{config-guard--Obk2MGi.js → config-guard-D8jiLjr7.js} +3 -3
- package/dist/{config-validation-iOxszdEd.js → config-validation-BngLiGoq.js} +3 -3
- package/dist/{configure-Al_pz_5z.js → configure-B--Umf_O.js} +17 -17
- package/dist/{control-ui-assets-DpjfNcTC.js → control-ui-assets-C9ewbI8z.js} +1 -1
- package/dist/{cron-cli-CQ5EZw_b.js → cron-cli-DCRPpI1m.js} +11 -11
- package/dist/{daemon-cli-Bb80Mzv5.js → daemon-cli-DtBzKM_d.js} +15 -15
- package/dist/{daemon-install-B09ifLcJ.js → daemon-install-ckPBUAjJ.js} +4 -4
- package/dist/{daemon-install-helpers-CYpECiEx.js → daemon-install-helpers-BWf-PrgA.js} +11 -11
- package/dist/{deliver-ChbFOwjw.js → deliver-D4o6VIur.js} +21 -21
- package/dist/{deliver-CxF9h9PE.js → deliver-b93aBgie.js} +7 -7
- package/dist/deliver-runtime-CdWd-JQI.js +61 -0
- package/dist/deliver-runtime-P-G3bPjW.js +36 -0
- package/dist/deps-send-discord.runtime-BltWu9GW.js +36 -0
- package/dist/deps-send-discord.runtime-DnbhTFX9.js +26 -0
- package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +25 -0
- package/dist/deps-send-imessage.runtime-CdCif3t7.js +35 -0
- package/dist/deps-send-signal.runtime-CTcl388M.js +24 -0
- package/dist/deps-send-signal.runtime-fHqkSmMW.js +34 -0
- package/dist/deps-send-slack.runtime-CCqBz4Kg.js +22 -0
- package/dist/deps-send-slack.runtime-CkyZO7ln.js +32 -0
- package/dist/{deps-send-telegram.runtime-B6wp3kx8.js → deps-send-telegram.runtime-C--B69CN.js} +16 -16
- package/dist/deps-send-telegram.runtime-DGSKTCpH.js +27 -0
- package/dist/deps-send-whatsapp.runtime-BkoMLlCM.js +119 -0
- package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +60 -0
- package/dist/{devices-cli-C0dUbeL4.js → devices-cli-D6V059Dh.js} +8 -8
- package/dist/{diagnostic-Co6Kghr-.js → diagnostic-Bn4PZjMZ.js} +2 -2
- package/dist/{diagnostic-BfiudAAN.js → diagnostic-BpP9UBCE.js} +1 -1
- package/dist/{diagnostics-DCWM_8Ur.js → diagnostics---0c2_jo.js} +5 -5
- package/dist/{directory-cli-Dlws13Di.js → directory-cli-RYC34-EU.js} +7 -7
- package/dist/{dns-cli-But7QdAw.js → dns-cli-CElNoV5S.js} +5 -5
- package/dist/{dock-BbUkruOF.js → dock-nA2DVPCV.js} +4 -4
- package/dist/{docs-cli-Ck2IKAtw.js → docs-cli-Bv7ltPvi.js} +4 -4
- package/dist/{doctor-completion-Nat1HXE1.js → doctor-completion-CQIiN7rY.js} +2 -2
- package/dist/{doctor-config-flow-WCCoUXeB.js → doctor-config-flow-BOAryh5P.js} +15 -15
- package/dist/{enable-C3H8BtN4.js → enable-688HYBNS.js} +1 -1
- package/dist/entry.js +2 -2
- package/dist/{errors-xt401nuk.js → errors-CCLeFWAg.js} +1 -1
- package/dist/{exec-approvals-allowlist-ySf2Yo5n.js → exec-approvals-allowlist-C0Eya3rT.js} +1 -1
- package/dist/{exec-approvals-cli-DhLLOys6.js → exec-approvals-cli-BYYerKp8.js} +16 -16
- package/dist/{exec-safe-bin-runtime-policy-DnXViOlF.js → exec-safe-bin-runtime-policy-BmJmfDRo.js} +2 -2
- package/dist/{fetch-D-SiVqBm.js → fetch-BhAHVdwx.js} +3 -3
- package/dist/{fetch-DuraYswo.js → fetch-BlJWzEP6.js} +5 -5
- package/dist/{fetch-guard-CKYBfJ66.js → fetch-guard-BbBdhWz_.js} +1 -1
- package/dist/{fetch-guard-DWr0d00H.js → fetch-guard-ChYBwfiy.js} +2 -2
- package/dist/{frontmatter-BkTfEZ93.js → frontmatter-CvaMP376.js} +3 -3
- package/dist/{fs-safe-CTYUrIgQ.js → fs-safe-0jAo_Whb.js} +4 -4
- package/dist/{fs-safe-jMDpsYew.js → fs-safe-CFLs-j60.js} +24 -24
- package/dist/{gateway-cli--atF6LYo.js → gateway-cli-DOYWSRqa.js} +153 -153
- package/dist/{gateway-rpc-DYyQQ1z9.js → gateway-rpc-w6t8Eq_1.js} +1 -1
- package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
- package/dist/{health-BDJ72U4Z.js → health-C1EstYHd.js} +11 -11
- package/dist/{hooks-cli-r0UX8B9a.js → hooks-cli-BFMve5sG.js} +81 -81
- package/dist/{hooks-status-CxBdpBry.js → hooks-status-DBnEWOEP.js} +1 -1
- package/dist/{image-C7RmnYxa.js → image-Bbn53mzj.js} +6 -6
- package/dist/{image-CyHTO86Q.js → image-Bw71y73Q.js} +5 -5
- package/dist/{image-ops-pjs5W0CZ.js → image-ops-AJL9tN3_.js} +10 -10
- package/dist/{image-ops-BuUnEOE0.js → image-ops-CehkHxmW.js} +2 -2
- package/dist/image-runtime-6jhrqcle.js +55 -0
- package/dist/image-runtime-CVv2ra9J.js +29 -0
- package/dist/{inspect-BeU4yMp2.js → inspect-CUxeDA8c.js} +4 -4
- package/dist/{install-safe-path-BiL8OJvK.js → install-safe-path-BX58wFBl.js} +25 -25
- package/dist/{installs-BwKmG0Uy.js → installs-B-xr0Fzq.js} +9 -9
- package/dist/{ipv4-BoGwfnEw.js → ipv4-C4Yt-xid.js} +1 -1
- package/dist/{ir-B83looB-.js → ir-DAP-B-Xw.js} +8 -8
- package/dist/{ir-Da7Ahsqc.js → ir-otKVkb4a.js} +8 -8
- package/dist/{issue-format-CJ89_-9v.js → issue-format-DSksfKiV.js} +1 -1
- package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
- package/dist/{legacy-names-DOC03BkU.js → legacy-names-TyzbVqa_.js} +1 -1
- package/dist/{lifecycle-core-BzuWBBm8.js → lifecycle-core-DVwen0ks.js} +5 -5
- package/dist/llm-slug-generator.js +51 -51
- package/dist/{logger-BfjWMCSD.js → logger-DMZQQtxK.js} +7 -7
- package/dist/{login-VkQ9MW3d.js → login-BcRaGQb6.js} +3 -3
- package/dist/{login-CrIwcrVI.js → login-DiCctRo1.js} +5 -5
- package/dist/{login-qr-BVMQ-xQz.js → login-qr-C9D47WEZ.js} +6 -6
- package/dist/{login-qr-BpPDZdl_.js → login-qr-MUbXgjtd.js} +10 -10
- package/dist/{logs-cli-DWHhSnWs.js → logs-cli-B3TG2lp8.js} +9 -9
- package/dist/{manager-1bvuGrNR.js → manager-BW_NSIMl.js} +13 -13
- package/dist/{manager-BUBwl6M6.js → manager-iwcRf3Xc.js} +14 -14
- package/dist/manager-runtime-BN6VevdC.js +18 -0
- package/dist/{manager-runtime-H9iQnw64.js → manager-runtime-D3KqpRT7.js} +9 -9
- package/dist/{manifest-registry-DVviqWVY.js → manifest-registry-CJb8odRF.js} +1 -1
- package/dist/{memory-cli-DarWCbU6.js → memory-cli-DGsJx7YM.js} +12 -12
- package/dist/{model-BLV8y_N-.js → model-B792l3Cn.js} +2 -2
- package/dist/{model-catalog-DTcBkUlX.js → model-catalog-DZ6kl2Ko.js} +3 -3
- package/dist/{model-picker-D-fTOOzb.js → model-picker-6fHys0wK.js} +4 -4
- package/dist/{model-selection-Dna0Gz1k.js → model-selection-idoqPmw0.js} +43 -43
- package/dist/{models-CmjutMmh.js → models-DerrMmwF.js} +17 -17
- package/dist/{models-cli-BZFQX22p.js → models-cli-BkTZg_4v.js} +78 -78
- package/dist/{models-config-DNcDbV_G.js → models-config-Dabs9Kdv.js} +6 -6
- package/dist/{net-D5fSREu4.js → net-BAIqYNz0.js} +2 -2
- package/dist/{node-cli-Cnq-PJTp.js → node-cli-DoEq4zeG.js} +33 -33
- package/dist/{node-command-policy-B5BMBBJP.js → node-command-policy-DRhSc90G.js} +1 -1
- package/dist/{node-service-BpYZAvpl.js → node-service-CcgtNIeT.js} +1 -1
- package/dist/{nodes-cli-CkrDOWpv.js → nodes-cli--d9RiCnK.js} +16 -16
- package/dist/{nodes-screen-DfsQohWd.js → nodes-screen-BTND5VDq.js} +7 -7
- package/dist/{npm-pack-install-E-mkrZ55.js → npm-pack-install-CGUDOSKz.js} +18 -18
- package/dist/{npm-resolution-BUUmg5ON.js → npm-resolution-CAoULCWM.js} +4 -4
- package/dist/{onboard-DINGSS9R.js → onboard-CMZRkPVc.js} +6 -6
- package/dist/{onboard-channels-Di4MjWDY.js → onboard-channels-SlJu6XWJ.js} +21 -21
- package/dist/{onboard-custom-DITBQuWQ.js → onboard-custom-EzfL89yz.js} +4 -4
- package/dist/{onboard-helpers-DO7u2ZOy.js → onboard-helpers-lGpaVp03.js} +10 -10
- package/dist/{onboard-hooks-K02_ZWDq.js → onboard-hooks-B7TMiJoY.js} +4 -4
- package/dist/{onboard-remote-5-ugiSN2.js → onboard-remote-nvWS7on7.js} +4 -4
- package/dist/{onboard-skills-CSzbC2KZ.js → onboard-skills-hz91W03u.js} +4 -4
- package/dist/{onboarding-BM4dvUK6.js → onboarding-CTPuMVQI.js} +14 -14
- package/dist/{onboarding.finalize-p_RDh7ET.js → onboarding.finalize-DLzl5ZOg.js} +87 -87
- package/dist/{onboarding.gateway-config-DldlRfms.js → onboarding.gateway-config-C4MoTr60.js} +18 -18
- package/dist/{onboarding.secret-input-BIRIJiCU.js → onboarding.secret-input-BFD0OW4X.js} +1 -1
- package/dist/{openai-model-default-CY2Nk4cn.js → openai-model-default-h4LbSR7f.js} +2 -2
- package/dist/{openclaw-root-BFfBQ6FD.js → openclaw-root-BU3lu8pM.js} +8 -8
- package/dist/{outbound-ChDjtuD6.js → outbound-C2kanETZ.js} +6 -6
- package/dist/{outbound-attachment-DfWsfe2N.js → outbound-attachment-CAJBGcna.js} +2 -2
- package/dist/{outbound-attachment-DqHlD21U.js → outbound-attachment-DBrYWX8h.js} +2 -2
- package/dist/{outbound-DPdJe7e1.js → outbound-kbHYt1JW.js} +3 -3
- package/dist/{pairing-cli-D2VZxWg3.js → pairing-cli-CXbmkz7Z.js} +8 -8
- package/dist/{pairing-labels-D4rnJ5pJ.js → pairing-labels-CaPLIhlh.js} +1 -1
- package/dist/{pairing-store-BXArq4hn.js → pairing-store-Brs9aNn_.js} +3 -3
- package/dist/{path-alias-guards-DbNvNQar.js → path-alias-guards-DhIwq92y.js} +3 -3
- package/dist/{path-alias-guards-BzvdLvTI.js → path-alias-guards-DqXRZmsL.js} +1 -1
- package/dist/{path-safety-ClQO4BB6.js → path-safety-BjIM4N4t.js} +1 -1
- package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
- package/dist/{paths-Bkr-BCxW.js → paths-CCxysrzL.js} +4 -4
- package/dist/{paths-BB_1ZWOj.js → paths-Cv63xST_.js} +9 -9
- package/dist/{pi-embedded-BC_GWGuw.js → pi-embedded-BaGj07T0.js} +167 -167
- package/dist/{pi-embedded-helpers-oXDyXTD8.js → pi-embedded-helpers-DC2OtKrl.js} +6 -6
- package/dist/{pi-embedded-helpers-CbIShbOM.js → pi-embedded-helpers-wy0DZvx1.js} +52 -52
- package/dist/{pi-model-discovery-Dymwdjt0.js → pi-model-discovery-BGgOlX8N.js} +7 -7
- package/dist/{pi-model-discovery-CECkJMCt.js → pi-model-discovery-DOb5RTev.js} +1 -1
- package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +11 -0
- package/dist/{pi-model-discovery-runtime-g7UP-SFR.js → pi-model-discovery-runtime-DShjmiiF.js} +5 -5
- package/dist/{pi-tools.before-tool-call.runtime-Df7B-ggW.js → pi-tools.before-tool-call.runtime-B079pVah.js} +5 -5
- package/dist/{pi-tools.before-tool-call.runtime-Cwab_5W1.js → pi-tools.before-tool-call.runtime-BuLxSyx9.js} +9 -9
- package/dist/{pi-tools.policy-CydUEzFi.js → pi-tools.policy-DZ-X86Va.js} +5 -5
- package/dist/{plugin-auto-enable-BE4ZVjAL.js → plugin-auto-enable-BCMqEDjQ.js} +3 -3
- package/dist/{plugin-registry-DXW3eyib.js → plugin-registry-BPlCWMur.js} +3 -3
- package/dist/plugin-sdk/discord.js +6 -6
- package/dist/{plugins-4Rj4OjLY.js → plugins-CWkRQYDj.js} +11 -11
- package/dist/{plugins-VAZrrfgw.js → plugins-DCxT-37x.js} +2 -2
- package/dist/{plugins-cli-BQJOOVMx.js → plugins-cli-D9ILEfyb.js} +83 -83
- package/dist/{ports-DMkRSlnH.js → ports-BlCLhwbc.js} +1 -1
- package/dist/{ports-DogAV7pa.js → ports-CER5YPnN.js} +2 -2
- package/dist/{program-BA11qFx1.js → program-CV56xn7w.js} +81 -81
- package/dist/{prompt-select-styled-B0GS28ia.js → prompt-select-styled-BOa5I_PU.js} +40 -40
- package/dist/{provider-auth-helpers-CrGL-jik.js → provider-auth-helpers-c6mNCUXO.js} +5 -5
- package/dist/{proxy-env-wKO3g8Yv.js → proxy-env-BMrSVckF.js} +1 -1
- package/dist/{proxy-env-DlmzDx8x.js → proxy-env-Cq5gdrbj.js} +1 -1
- package/dist/{proxy-fetch-B2pEfjbR.js → proxy-fetch-CCjEYbFm.js} +1 -1
- package/dist/{push-apns-BEwBjZ0a.js → push-apns-FOkPD05E.js} +5 -5
- package/dist/{pw-ai-D2wlMJtN.js → pw-ai-Cl1Lc7RC.js} +14 -14
- package/dist/{pw-ai-CnbxziFP.js → pw-ai-CxBU3aK5.js} +18 -18
- package/dist/{qmd-manager-BtIKUaO9.js → qmd-manager-BsYsO9Ii.js} +10 -10
- package/dist/{qmd-manager-Dp6PJ8zQ.js → qmd-manager-DEJMqoGd.js} +20 -20
- package/dist/{qr-cli-CFz9kS5X.js → qr-cli-BD2jK4fg.js} +2 -2
- package/dist/{query-expansion-BrSWVbaE.js → query-expansion-1UTIWjP6.js} +12 -12
- package/dist/{query-expansion-CX-1fS52.js → query-expansion-DtLc3wjL.js} +6 -6
- package/dist/{redact-COik8ET1.js → redact-ClbcYG1J.js} +1 -1
- package/dist/{redact-snapshot-Bs4goggz.js → redact-snapshot-D_qQD4A-.js} +1 -1
- package/dist/{register.agent-D641ju8B.js → register.agent-tbPA5YAy.js} +94 -94
- package/dist/register.configure-DuwRrXc2.js +165 -0
- package/dist/{register.maintenance-BFkk8MEH.js → register.maintenance-DrqDlV5b.js} +95 -95
- package/dist/{register.message-D5uE_Hop.js → register.message-CoKXNaU0.js} +74 -74
- package/dist/{register.onboard-zHFvSwFr.js → register.onboard-CSWOSL9O.js} +18 -18
- package/dist/{register.setup-uTbv3_P1.js → register.setup-DBx5JX6h.js} +21 -21
- package/dist/{register.status-health-sessions-CB7t-JQx.js → register.status-health-sessions-D1bPtfep.js} +88 -88
- package/dist/{register.subclis-MEiNmuy5.js → register.subclis-QGJNmjss.js} +31 -31
- package/dist/{rpc-DVfuVmy9.js → rpc-DkMrTUww.js} +1 -1
- package/dist/{run-main-mrvunzuy.js → run-main-CPftxqTe.js} +92 -92
- package/dist/{run-with-concurrency-BgYfgkXT.js → run-with-concurrency-D_ZpbgEG.js} +4 -4
- package/dist/{runtime-C87FQrrv.js → runtime-MAH2Oph4.js} +3 -3
- package/dist/{runtime-config-collectors-BQaC477D.js → runtime-config-collectors-BJMV6Mt1.js} +1 -1
- package/dist/{runtime-whatsapp-login.runtime-DjdgScUI.js → runtime-whatsapp-login.runtime-CGYWl9eB.js} +7 -7
- package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +13 -0
- package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +22 -0
- package/dist/{runtime-whatsapp-outbound.runtime-B74K7opl.js → runtime-whatsapp-outbound.runtime-hZEfYaRM.js} +15 -15
- package/dist/{sandbox-Ct-_lzi1.js → sandbox-0TbzPJaS.js} +18 -18
- package/dist/{sandbox-cli-C3RoXFRE.js → sandbox-cli-NLaxffXl.js} +25 -25
- package/dist/{secrets-cli-B3hqCxvs.js → secrets-cli-KLGbYet6.js} +11 -11
- package/dist/{security-cli-DcHIyXr7.js → security-cli-EIEkcYVb.js} +42 -42
- package/dist/{send-dfu6_rgf.js → send-BQERFNyo.js} +5 -5
- package/dist/{send-CnRP4P-G.js → send-BW-ZtYG3.js} +5 -5
- package/dist/{send-L7gRiwyd.js → send-Bj776ESJ.js} +7 -7
- package/dist/{send-2zKwf9NW.js → send-BtZAqquW.js} +11 -11
- package/dist/{send-DAQAKa9Z.js → send-CxgWxXZc.js} +6 -6
- package/dist/{send-5o2p_xjn.js → send-DAMtu9kK.js} +4 -4
- package/dist/{send-PE6cwoTe.js → send-DcxmcFi_.js} +8 -8
- package/dist/{send-6lz6rNVP.js → send-Dx2RkUOZ.js} +6 -6
- package/dist/{send-u1Bo4CSn.js → send-sC6ka831.js} +8 -8
- package/dist/{send-BHTiZcH3.js → send-vmONuVgL.js} +26 -26
- package/dist/{server-context-8pDe2iyd.js → server-context-HJVwPQYn.js} +12 -12
- package/dist/{server-Ci4xtuR9.js → server-kUElNhlY.js} +20 -20
- package/dist/{server-lifecycle-k5daSrde.js → server-lifecycle-BE32unpZ.js} +2 -2
- package/dist/{server-middleware-DMiFT9xU.js → server-middleware-AS2VOYkK.js} +1 -1
- package/dist/{server-node-events-BmnPjNXE.js → server-node-events-DkbZzI6P.js} +74 -74
- package/dist/{service-BhOFtHSw.js → service-CyStNr3d.js} +15 -15
- package/dist/{session-D8ImowSs.js → session-A4QhBRvH.js} +8 -8
- package/dist/{session-DkOjpX3_.js → session-CaCx4rPH.js} +1 -1
- package/dist/{session-utils-DKRmXD2l.js → session-utils-CGqb1oeq.js} +6 -6
- package/dist/{sessions-svLGrv0Z.js → sessions-BV6HNW4h.js} +4 -4
- package/dist/{sessions-BOWPuhe5.js → sessions-BmVDW-7q.js} +15 -15
- package/dist/{shared-CjuadLFV.js → shared-DUQavBtY.js} +3 -3
- package/dist/{shared-CbAkLNrg.js → shared-JW74idb0.js} +1 -1
- package/dist/{skill-commands-DNqJ-kwn.js → skill-commands-CMzBZKG2.js} +9 -9
- package/dist/{skill-commands-TpUsdjev.js → skill-commands-WtIJG0CI.js} +5 -5
- package/dist/{skill-scanner-BZvvItef.js → skill-scanner-DIFsGcqE.js} +6 -6
- package/dist/{skills-DR-vacol.js → skills-7T9PwwL6.js} +3 -3
- package/dist/{skills-7ODkHQYp.js → skills-CE_iqvM5.js} +22 -22
- package/dist/{skills-cli-oay0tY8Z.js → skills-cli-DPavvthL.js} +5 -5
- package/dist/{skills-install-Vmi7xYfa.js → skills-install-BoLfaoWv.js} +6 -6
- package/dist/{skills-status-BmN697ff.js → skills-status-CK5Gnf6i.js} +1 -1
- package/dist/{slash-commands.runtime-BfaheruW.js → slash-commands.runtime-CMGx2xHy.js} +11 -11
- package/dist/slash-commands.runtime-Cpn2tYW4.js +16 -0
- package/dist/slash-dispatch.runtime-BAeJXa56.js +114 -0
- package/dist/slash-dispatch.runtime-DoBAQBU5.js +56 -0
- package/dist/{slash-skill-commands.runtime-D34BKAN-.js → slash-skill-commands.runtime-ChU2tck2.js} +15 -15
- package/dist/slash-skill-commands.runtime-DKMvvdDW.js +20 -0
- package/dist/{status-BcQchPaC.js → status-Bp-K1BEf.js} +27 -27
- package/dist/{status.update-B20UBTDq.js → status.update-ZYUSggzS.js} +2 -2
- package/dist/{store-D89wDcz9.js → store--eR1R_UX.js} +2 -2
- package/dist/{store-DDkqo1sO.js → store-DeASfYEV.js} +5 -5
- package/dist/{subagent-registry-CPxHbyN5.js → subagent-registry-8qHIVhRq.js} +149 -149
- package/dist/subagent-registry-runtime-DVomlbm6.js +114 -0
- package/dist/subagent-registry-runtime-ppWS3tVu.js +56 -0
- package/dist/{subsystem-B45WV3qB.js → subsystem-Di1z8l0Z.js} +14 -14
- package/dist/{system-cli-D2yIJoKU.js → system-cli-C2xNfuQM.js} +9 -9
- package/dist/{system-run-command-BmhbnLTE.js → system-run-command-BPWZk7KI.js} +1 -1
- package/dist/{systemd-DjWVSbAG.js → systemd-Cf-0XKYu.js} +9 -9
- package/dist/{systemd-hints-Do-aQ9jw.js → systemd-hints-CYllYKO0.js} +6 -6
- package/dist/{systemd-linger-DpmnYgKU.js → systemd-linger-zllO90bD.js} +1 -1
- package/dist/{tables-BxyIF0w4.js → tables-CV7Afb0h.js} +1 -1
- package/dist/{tables-mE4cJBN2.js → tables-d739Y1xW.js} +1 -1
- package/dist/{tailnet-0_FsdHP-.js → tailnet-DJFUq7_R.js} +1 -1
- package/dist/{target-errors-KOHiT_JA.js → target-errors-CBI2Ga0y.js} +2 -2
- package/dist/{target-errors-mnlwhAjP.js → target-errors-iVxliVqA.js} +4 -4
- package/dist/{thinking-BeGmb5k6.js → thinking-DXYisHiZ.js} +7 -7
- package/dist/{tokens-q32vI39c.js → tokens-DxnY9ui_.js} +1 -1
- package/dist/{tool-images-RZdHiZcG.js → tool-images-2cBx1W8h.js} +2 -2
- package/dist/{tool-images-CNPfeCmU.js → tool-images-Bn6dB14u.js} +1 -1
- package/dist/{tui-DL6NZZEa.js → tui-DTVy-YhN.js} +6 -6
- package/dist/{tui-cli-BNAYhvpu.js → tui-cli-CexRLJ3a.js} +32 -32
- package/dist/{update-DlS-d52F.js → update-DijPxK0g.js} +3 -3
- package/dist/{update-cli-D8-DqIs2.js → update-cli-9NslG4yR.js} +104 -104
- package/dist/{update-runner-CzTQ7BJT.js → update-runner-B6_UqreW.js} +16 -16
- package/dist/{web-igmw_EhT.js → web-CzWRVmFt.js} +55 -55
- package/dist/web-DGoa03ue.js +118 -0
- package/dist/{webhooks-cli-QdaQhvbT.js → webhooks-cli-B4ZcXTtw.js} +6 -6
- package/dist/{whatsapp-actions-Bp8F0cOF.js → whatsapp-actions-Jm4VW1Ve.js} +17 -17
- package/dist/{whatsapp-actions-BHbJJyqw.js → whatsapp-actions-iEArE_Ez.js} +21 -21
- package/dist/{with-timeout-BMMWHlH3.js → with-timeout-C8-tY12i.js} +3 -3
- package/dist/{workspace-v76gFdZu.js → workspace-CIGzK2_w.js} +1 -1
- package/dist/{workspace-U-DyR64O.js → workspace-CUVC6GX1.js} +20 -20
- package/dist/{workspace-dirs-Cz_Zgtg2.js → workspace-dirs-D4SMysgC.js} +1 -1
- package/dist/{wsl-CvQfS6aU.js → wsl-CsGe5QCP.js} +2 -2
- package/package.json +7 -9
- package/scripts/auth-monitor.sh +89 -0
- package/scripts/bench-cli-startup.ts +200 -0
- package/scripts/bench-model.ts +146 -0
- package/scripts/build-and-run-mac.sh +18 -0
- package/scripts/build-docs-list.mjs +14 -0
- package/scripts/build_icon.sh +59 -0
- package/scripts/bundle-a2ui.sh +95 -0
- package/scripts/canvas-a2ui-copy.ts +40 -0
- package/scripts/changelog-to-html.sh +91 -0
- package/scripts/check-channel-agnostic-boundaries.mjs +343 -0
- package/scripts/check-composite-action-input-interpolation.py +81 -0
- package/scripts/check-ingress-agent-owner-context.mjs +45 -0
- package/scripts/check-no-monolithic-plugin-sdk-entry-imports.ts +103 -0
- package/scripts/check-no-pairing-store-group-auth.mjs +180 -0
- package/scripts/check-no-random-messaging-tmp.mjs +89 -0
- package/scripts/check-no-raw-channel-fetch.mjs +107 -0
- package/scripts/check-no-raw-window-open.mjs +86 -0
- package/scripts/check-no-register-http-handler.mjs +38 -0
- package/scripts/check-pairing-account-scope.mjs +100 -0
- package/scripts/check-plugin-sdk-exports.mjs +157 -0
- package/scripts/check-ts-max-loc.ts +80 -0
- package/scripts/check-webhook-auth-body-order.mjs +55 -0
- package/scripts/ci-changed-scope.d.mts +9 -0
- package/scripts/ci-changed-scope.mjs +141 -0
- package/scripts/claude-auth-status.sh +280 -0
- package/scripts/clawlog.sh +321 -0
- package/scripts/clawtributors-map.json +40 -0
- package/scripts/codesign-mac-app.sh +289 -0
- package/scripts/codespell-dictionary.txt +3 -0
- package/scripts/codespell-ignore.txt +9 -0
- package/scripts/committer +117 -0
- package/scripts/copy-export-html-templates.ts +59 -0
- package/scripts/copy-hook-metadata.ts +55 -0
- package/scripts/copy-plugin-sdk-root-alias.mjs +10 -0
- package/scripts/create-dmg.sh +176 -0
- package/scripts/create-instance.sh +4 -1
- package/scripts/cron_usage_report.ts +273 -0
- package/scripts/debug-claude-usage.ts +391 -0
- package/scripts/dev/discord-acp-plain-language-smoke.ts +868 -0
- package/scripts/dev/gateway-smoke.ts +75 -0
- package/scripts/dev/gateway-ws-client.ts +132 -0
- package/scripts/dev/ios-node-e2e.ts +283 -0
- package/scripts/dev/ios-pull-gateway-log.sh +17 -0
- package/scripts/dev/test-device-pair-telegram.ts +62 -0
- package/scripts/docker/cleanup-smoke/Dockerfile +19 -0
- package/scripts/docker/cleanup-smoke/run.sh +35 -0
- package/scripts/docker/install-sh-common/cli-verify.sh +47 -0
- package/scripts/docker/install-sh-e2e/Dockerfile +17 -0
- package/scripts/docker/install-sh-e2e/run.sh +535 -0
- package/scripts/docker/install-sh-nonroot/Dockerfile +33 -0
- package/scripts/docker/install-sh-nonroot/run.sh +36 -0
- package/scripts/docker/install-sh-smoke/Dockerfile +25 -0
- package/scripts/docker/install-sh-smoke/run.sh +63 -0
- package/scripts/docs-i18n/doc_mode.go +272 -0
- package/scripts/docs-i18n/glossary.go +29 -0
- package/scripts/docs-i18n/go.mod +10 -0
- package/scripts/docs-i18n/go.sum +10 -0
- package/scripts/docs-i18n/html_translate.go +160 -0
- package/scripts/docs-i18n/main.go +273 -0
- package/scripts/docs-i18n/markdown_segments.go +131 -0
- package/scripts/docs-i18n/masking.go +89 -0
- package/scripts/docs-i18n/order.go +37 -0
- package/scripts/docs-i18n/placeholders.go +30 -0
- package/scripts/docs-i18n/process.go +202 -0
- package/scripts/docs-i18n/prompt.go +146 -0
- package/scripts/docs-i18n/segment.go +11 -0
- package/scripts/docs-i18n/tm.go +132 -0
- package/scripts/docs-i18n/translator.go +247 -0
- package/scripts/docs-i18n/util.go +81 -0
- package/scripts/docs-link-audit.mjs +233 -0
- package/scripts/docs-list.js +173 -0
- package/scripts/docs-spellcheck.sh +44 -0
- package/scripts/e2e/Dockerfile +30 -0
- package/scripts/e2e/Dockerfile.qr-import +13 -0
- package/scripts/e2e/doctor-install-switch-docker.sh +160 -0
- package/scripts/e2e/gateway-network-docker.sh +145 -0
- package/scripts/e2e/onboard-docker.sh +570 -0
- package/scripts/e2e/plugins-docker.sh +224 -0
- package/scripts/e2e/qr-import-docker.sh +11 -0
- package/scripts/firecrawl-compare.ts +139 -0
- package/scripts/generate-host-env-security-policy-swift.mjs +74 -0
- package/scripts/generate-secretref-credential-matrix.ts +14 -0
- package/scripts/ghsa-patch.mjs +168 -0
- package/scripts/install-maca.sh +173 -0
- package/scripts/install.ps1 +329 -0
- package/scripts/ios-configure-signing.sh +100 -0
- package/scripts/ios-team-id.sh +207 -0
- package/scripts/label-open-issues.ts +893 -0
- package/scripts/lib/callsite-guard.mjs +45 -0
- package/scripts/lib/pairing-guard-context.mjs +13 -0
- package/scripts/lib/ts-guard-utils.mjs +157 -0
- package/scripts/make_appcast.sh +70 -0
- package/scripts/mobile-reauth.sh +84 -0
- package/scripts/notarize-mac-artifact.sh +65 -0
- package/scripts/npm_publish.sh +48 -0
- package/scripts/package-mac-app.sh +280 -0
- package/scripts/package-mac-dist.sh +93 -0
- package/scripts/podman/openclaw.container.in +28 -0
- package/scripts/pr +1708 -0
- package/scripts/pr-merge +44 -0
- package/scripts/pr-prepare +40 -0
- package/scripts/pr-review +13 -0
- package/scripts/pre-commit/filter-staged-files.mjs +39 -0
- package/scripts/pre-commit/run-node-tool.sh +31 -0
- package/scripts/protocol-gen-swift.ts +247 -0
- package/scripts/protocol-gen.ts +51 -0
- package/scripts/readability-basic-compare.ts +66 -0
- package/scripts/recover-orphaned-processes.sh +191 -0
- package/scripts/release-check.ts +362 -0
- package/scripts/repro/tsx-name-repro.ts +3 -0
- package/scripts/restart-mac.sh +269 -0
- package/scripts/run-node.d.mts +22 -0
- package/scripts/run-node.mjs +263 -0
- package/scripts/run-openclaw-podman.sh +213 -0
- package/scripts/sandbox-browser-entrypoint.sh +127 -0
- package/scripts/sandbox-browser-setup.sh +7 -0
- package/scripts/sandbox-common-setup.sh +40 -0
- package/scripts/sandbox-setup.sh +7 -0
- package/scripts/setup-auth-system.sh +119 -0
- package/scripts/shell-helpers/README.md +226 -0
- package/scripts/shell-helpers/clawdock-helpers.sh +417 -0
- package/scripts/sparkle-build.ts +76 -0
- package/scripts/sqlite-vec-smoke.mjs +38 -0
- package/scripts/sync-dist.sh +171 -0
- package/scripts/sync-labels.ts +100 -0
- package/scripts/sync-moonshot-docs.ts +125 -0
- package/scripts/sync-plugin-versions.ts +108 -0
- package/scripts/systemd/openclaw-auth-monitor.service +14 -0
- package/scripts/systemd/openclaw-auth-monitor.timer +10 -0
- package/scripts/termux-auth-widget.sh +81 -0
- package/scripts/termux-quick-auth.sh +30 -0
- package/scripts/termux-sync-widget.sh +25 -0
- package/scripts/test-cleanup-docker.sh +14 -0
- package/scripts/test-force.ts +59 -0
- package/scripts/test-hotspots.mjs +83 -0
- package/scripts/test-install-sh-docker.sh +72 -0
- package/scripts/test-install-sh-e2e-docker.sh +29 -0
- package/scripts/test-live-gateway-models-docker.sh +33 -0
- package/scripts/test-live-models-docker.sh +34 -0
- package/scripts/test-parallel.mjs +468 -0
- package/scripts/test-perf-budget.mjs +127 -0
- package/scripts/test-shell-completion.ts +223 -0
- package/scripts/ui.js +203 -0
- package/scripts/update-clawtributors.ts +573 -0
- package/scripts/update-clawtributors.types.ts +36 -0
- package/scripts/update-package-with-mirror.sh +67 -0
- package/scripts/watch-node.d.mts +14 -0
- package/scripts/watch-node.mjs +92 -0
- package/scripts/write-build-info.ts +47 -0
- package/scripts/write-cli-compat.ts +74 -0
- package/scripts/write-cli-startup-metadata.ts +93 -0
- package/scripts/write-plugin-sdk-entry-dts.ts +60 -0
- package/scripts/zai-fallback-repro.ts +168 -0
- package/dist/deliver-runtime-B80mXYrL.js +0 -36
- package/dist/deliver-runtime-DixuU_uB.js +0 -61
- package/dist/deps-send-discord.runtime-CDcLcDSt.js +0 -36
- package/dist/deps-send-discord.runtime-DZUccI6Z.js +0 -26
- package/dist/deps-send-imessage.runtime-BGPUVMIE.js +0 -35
- package/dist/deps-send-imessage.runtime-CF3OpoqY.js +0 -25
- package/dist/deps-send-signal.runtime-Cw4-ozeO.js +0 -24
- package/dist/deps-send-signal.runtime-DQDD44_O.js +0 -34
- package/dist/deps-send-slack.runtime-BDsDhS1P.js +0 -22
- package/dist/deps-send-slack.runtime-Cpy77gBG.js +0 -32
- package/dist/deps-send-telegram.runtime-D_4xVasO.js +0 -27
- package/dist/deps-send-whatsapp.runtime-D2sVAclS.js +0 -119
- package/dist/deps-send-whatsapp.runtime-UBgpoWg9.js +0 -60
- package/dist/image-runtime-B2qh5seQ.js +0 -55
- package/dist/image-runtime-DtMbm7AR.js +0 -29
- package/dist/manager-runtime-FO1Sx3W8.js +0 -18
- package/dist/pi-model-discovery-runtime-BeY4EUPp.js +0 -11
- package/dist/register.configure-BrDOSLIq.js +0 -165
- package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +0 -13
- package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +0 -22
- package/dist/slash-commands.runtime-CVw6566g.js +0 -16
- package/dist/slash-dispatch.runtime-CMK_EPYG.js +0 -56
- package/dist/slash-dispatch.runtime-D0xInkf3.js +0 -114
- package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +0 -20
- package/dist/subagent-registry-runtime-DdGrQBnQ.js +0 -56
- package/dist/subagent-registry-runtime-SkB2tTaE.js +0 -114
- package/dist/web-DWiOofzq.js +0 -118
- package/install.sh +0 -293
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# ClawDock <!-- omit in toc -->
|
|
2
|
+
|
|
3
|
+
Stop typing `docker-compose` commands. Just type `clawdock-start`.
|
|
4
|
+
|
|
5
|
+
Inspired by Simon Willison's [Running OpenClaw in Docker](https://til.simonwillison.net/llms/openclaw-docker).
|
|
6
|
+
|
|
7
|
+
- [Quickstart](#quickstart)
|
|
8
|
+
- [Available Commands](#available-commands)
|
|
9
|
+
- [Basic Operations](#basic-operations)
|
|
10
|
+
- [Container Access](#container-access)
|
|
11
|
+
- [Web UI \& Devices](#web-ui--devices)
|
|
12
|
+
- [Setup \& Configuration](#setup--configuration)
|
|
13
|
+
- [Maintenance](#maintenance)
|
|
14
|
+
- [Utilities](#utilities)
|
|
15
|
+
- [Common Workflows](#common-workflows)
|
|
16
|
+
- [Check Status and Logs](#check-status-and-logs)
|
|
17
|
+
- [Set Up WhatsApp Bot](#set-up-whatsapp-bot)
|
|
18
|
+
- [Troubleshooting Device Pairing](#troubleshooting-device-pairing)
|
|
19
|
+
- [Fix Token Mismatch Issues](#fix-token-mismatch-issues)
|
|
20
|
+
- [Permission Denied](#permission-denied)
|
|
21
|
+
- [Requirements](#requirements)
|
|
22
|
+
|
|
23
|
+
## Quickstart
|
|
24
|
+
|
|
25
|
+
**Install:**
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/shell-helpers/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**See what you get:**
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
clawdock-help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
On first command, ClawDock auto-detects your OpenClaw directory:
|
|
42
|
+
|
|
43
|
+
- Checks common paths (`~/openclaw`, `~/workspace/openclaw`, etc.)
|
|
44
|
+
- If found, asks you to confirm
|
|
45
|
+
- Saves to `~/.clawdock/config`
|
|
46
|
+
|
|
47
|
+
**First time setup:**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
clawdock-start
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
clawdock-fix-token
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
clawdock-dashboard
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If you see "pairing required":
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
clawdock-devices
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
And approve the request for the specific device:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
clawdock-approve <request-id>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Available Commands
|
|
74
|
+
|
|
75
|
+
### Basic Operations
|
|
76
|
+
|
|
77
|
+
| Command | Description |
|
|
78
|
+
| ------------------ | ------------------------------- |
|
|
79
|
+
| `clawdock-start` | Start the gateway |
|
|
80
|
+
| `clawdock-stop` | Stop the gateway |
|
|
81
|
+
| `clawdock-restart` | Restart the gateway |
|
|
82
|
+
| `clawdock-status` | Check container status |
|
|
83
|
+
| `clawdock-logs` | View live logs (follows output) |
|
|
84
|
+
|
|
85
|
+
### Container Access
|
|
86
|
+
|
|
87
|
+
| Command | Description |
|
|
88
|
+
| ------------------------- | ---------------------------------------------- |
|
|
89
|
+
| `clawdock-shell` | Interactive shell inside the gateway container |
|
|
90
|
+
| `clawdock-cli <command>` | Run OpenClaw CLI commands |
|
|
91
|
+
| `clawdock-exec <command>` | Execute arbitrary commands in the container |
|
|
92
|
+
|
|
93
|
+
### Web UI & Devices
|
|
94
|
+
|
|
95
|
+
| Command | Description |
|
|
96
|
+
| ----------------------- | ------------------------------------------ |
|
|
97
|
+
| `clawdock-dashboard` | Open web UI in browser with authentication |
|
|
98
|
+
| `clawdock-devices` | List device pairing requests |
|
|
99
|
+
| `clawdock-approve <id>` | Approve a device pairing request |
|
|
100
|
+
|
|
101
|
+
### Setup & Configuration
|
|
102
|
+
|
|
103
|
+
| Command | Description |
|
|
104
|
+
| -------------------- | ------------------------------------------------- |
|
|
105
|
+
| `clawdock-fix-token` | Configure gateway authentication token (run once) |
|
|
106
|
+
|
|
107
|
+
### Maintenance
|
|
108
|
+
|
|
109
|
+
| Command | Description |
|
|
110
|
+
| ------------------ | ------------------------------------------------ |
|
|
111
|
+
| `clawdock-rebuild` | Rebuild the Docker image |
|
|
112
|
+
| `clawdock-clean` | Remove all containers and volumes (destructive!) |
|
|
113
|
+
|
|
114
|
+
### Utilities
|
|
115
|
+
|
|
116
|
+
| Command | Description |
|
|
117
|
+
| -------------------- | ----------------------------------------- |
|
|
118
|
+
| `clawdock-health` | Run gateway health check |
|
|
119
|
+
| `clawdock-token` | Display the gateway authentication token |
|
|
120
|
+
| `clawdock-cd` | Jump to the OpenClaw project directory |
|
|
121
|
+
| `clawdock-config` | Open the OpenClaw config directory |
|
|
122
|
+
| `clawdock-workspace` | Open the workspace directory |
|
|
123
|
+
| `clawdock-help` | Show all available commands with examples |
|
|
124
|
+
|
|
125
|
+
## Common Workflows
|
|
126
|
+
|
|
127
|
+
### Check Status and Logs
|
|
128
|
+
|
|
129
|
+
**Restart the gateway:**
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
clawdock-restart
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Check container status:**
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
clawdock-status
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**View live logs:**
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
clawdock-logs
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Set Up WhatsApp Bot
|
|
148
|
+
|
|
149
|
+
**Shell into the container:**
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
clawdock-shell
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Inside the container, login to WhatsApp:**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
openclaw channels login --channel whatsapp --verbose
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Scan the QR code with WhatsApp on your phone.
|
|
162
|
+
|
|
163
|
+
**Verify connection:**
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
openclaw status
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Troubleshooting Device Pairing
|
|
170
|
+
|
|
171
|
+
**Check for pending pairing requests:**
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
clawdock-devices
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Copy the Request ID from the "Pending" table, then approve:**
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
clawdock-approve <request-id>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Then refresh your browser.
|
|
184
|
+
|
|
185
|
+
### Fix Token Mismatch Issues
|
|
186
|
+
|
|
187
|
+
If you see "gateway token mismatch" errors:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
clawdock-fix-token
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
This will:
|
|
194
|
+
|
|
195
|
+
1. Read the token from your `.env` file
|
|
196
|
+
2. Configure it in the OpenClaw config
|
|
197
|
+
3. Restart the gateway
|
|
198
|
+
4. Verify the configuration
|
|
199
|
+
|
|
200
|
+
### Permission Denied
|
|
201
|
+
|
|
202
|
+
**Ensure Docker is running and you have permission:**
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
docker ps
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Requirements
|
|
209
|
+
|
|
210
|
+
- Docker and Docker Compose installed
|
|
211
|
+
- Bash or Zsh shell
|
|
212
|
+
- OpenClaw project (from `docker-setup.sh`)
|
|
213
|
+
|
|
214
|
+
## Development
|
|
215
|
+
|
|
216
|
+
**Test with fresh config (mimics first-time install):**
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
unset CLAWDOCK_DIR && rm -f ~/.clawdock/config && source scripts/shell-helpers/clawdock-helpers.sh
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Then run any command to trigger auto-detect:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
clawdock-start
|
|
226
|
+
```
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ClawDock - Docker helpers for OpenClaw
|
|
3
|
+
# Inspired by Simon Willison's "Running OpenClaw in Docker"
|
|
4
|
+
# https://til.simonwillison.net/llms/openclaw-docker
|
|
5
|
+
#
|
|
6
|
+
# Installation:
|
|
7
|
+
# mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/shell-helpers/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh
|
|
8
|
+
# echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc
|
|
9
|
+
#
|
|
10
|
+
# Usage:
|
|
11
|
+
# clawdock-help # Show all available commands
|
|
12
|
+
|
|
13
|
+
# =============================================================================
|
|
14
|
+
# Colors
|
|
15
|
+
# =============================================================================
|
|
16
|
+
_CLR_RESET='\033[0m'
|
|
17
|
+
_CLR_BOLD='\033[1m'
|
|
18
|
+
_CLR_DIM='\033[2m'
|
|
19
|
+
_CLR_GREEN='\033[0;32m'
|
|
20
|
+
_CLR_YELLOW='\033[1;33m'
|
|
21
|
+
_CLR_BLUE='\033[0;34m'
|
|
22
|
+
_CLR_MAGENTA='\033[0;35m'
|
|
23
|
+
_CLR_CYAN='\033[0;36m'
|
|
24
|
+
_CLR_RED='\033[0;31m'
|
|
25
|
+
|
|
26
|
+
# Styled command output (green + bold)
|
|
27
|
+
_clr_cmd() {
|
|
28
|
+
echo -e "${_CLR_GREEN}${_CLR_BOLD}$1${_CLR_RESET}"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# Inline command for use in sentences
|
|
32
|
+
_cmd() {
|
|
33
|
+
echo "${_CLR_GREEN}${_CLR_BOLD}$1${_CLR_RESET}"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# =============================================================================
|
|
37
|
+
# Config
|
|
38
|
+
# =============================================================================
|
|
39
|
+
CLAWDOCK_CONFIG="${HOME}/.clawdock/config"
|
|
40
|
+
|
|
41
|
+
# Common paths to check for OpenClaw
|
|
42
|
+
CLAWDOCK_COMMON_PATHS=(
|
|
43
|
+
"${HOME}/openclaw"
|
|
44
|
+
"${HOME}/workspace/openclaw"
|
|
45
|
+
"${HOME}/projects/openclaw"
|
|
46
|
+
"${HOME}/dev/openclaw"
|
|
47
|
+
"${HOME}/code/openclaw"
|
|
48
|
+
"${HOME}/src/openclaw"
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
_clawdock_filter_warnings() {
|
|
52
|
+
grep -v "^WARN\|^time="
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
_clawdock_trim_quotes() {
|
|
56
|
+
local value="$1"
|
|
57
|
+
value="${value#\"}"
|
|
58
|
+
value="${value%\"}"
|
|
59
|
+
printf "%s" "$value"
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
_clawdock_read_config_dir() {
|
|
63
|
+
if [[ ! -f "$CLAWDOCK_CONFIG" ]]; then
|
|
64
|
+
return 1
|
|
65
|
+
fi
|
|
66
|
+
local raw
|
|
67
|
+
raw=$(sed -n 's/^CLAWDOCK_DIR=//p' "$CLAWDOCK_CONFIG" | head -n 1)
|
|
68
|
+
if [[ -z "$raw" ]]; then
|
|
69
|
+
return 1
|
|
70
|
+
fi
|
|
71
|
+
_clawdock_trim_quotes "$raw"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# Ensure CLAWDOCK_DIR is set and valid
|
|
75
|
+
_clawdock_ensure_dir() {
|
|
76
|
+
# Already set and valid?
|
|
77
|
+
if [[ -n "$CLAWDOCK_DIR" && -f "${CLAWDOCK_DIR}/docker-compose.yml" ]]; then
|
|
78
|
+
return 0
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# Try loading from config
|
|
82
|
+
local config_dir
|
|
83
|
+
config_dir=$(_clawdock_read_config_dir)
|
|
84
|
+
if [[ -n "$config_dir" && -f "${config_dir}/docker-compose.yml" ]]; then
|
|
85
|
+
CLAWDOCK_DIR="$config_dir"
|
|
86
|
+
return 0
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
# Auto-detect from common paths
|
|
90
|
+
local found_path=""
|
|
91
|
+
for path in "${CLAWDOCK_COMMON_PATHS[@]}"; do
|
|
92
|
+
if [[ -f "${path}/docker-compose.yml" ]]; then
|
|
93
|
+
found_path="$path"
|
|
94
|
+
break
|
|
95
|
+
fi
|
|
96
|
+
done
|
|
97
|
+
|
|
98
|
+
if [[ -n "$found_path" ]]; then
|
|
99
|
+
echo ""
|
|
100
|
+
echo "🦞 Found OpenClaw at: $found_path"
|
|
101
|
+
echo -n " Use this location? [Y/n] "
|
|
102
|
+
read -r response
|
|
103
|
+
if [[ "$response" =~ ^[Nn] ]]; then
|
|
104
|
+
echo ""
|
|
105
|
+
echo "Set CLAWDOCK_DIR manually:"
|
|
106
|
+
echo " export CLAWDOCK_DIR=/path/to/openclaw"
|
|
107
|
+
return 1
|
|
108
|
+
fi
|
|
109
|
+
CLAWDOCK_DIR="$found_path"
|
|
110
|
+
else
|
|
111
|
+
echo ""
|
|
112
|
+
echo "❌ OpenClaw not found in common locations."
|
|
113
|
+
echo ""
|
|
114
|
+
echo "Clone it first:"
|
|
115
|
+
echo ""
|
|
116
|
+
echo " git clone https://github.com/openclaw/openclaw.git ~/openclaw"
|
|
117
|
+
echo " cd ~/openclaw && ./docker-setup.sh"
|
|
118
|
+
echo ""
|
|
119
|
+
echo "Or set CLAWDOCK_DIR if it's elsewhere:"
|
|
120
|
+
echo ""
|
|
121
|
+
echo " export CLAWDOCK_DIR=/path/to/openclaw"
|
|
122
|
+
echo ""
|
|
123
|
+
return 1
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# Save to config
|
|
127
|
+
if [[ ! -d "${HOME}/.clawdock" ]]; then
|
|
128
|
+
/bin/mkdir -p "${HOME}/.clawdock"
|
|
129
|
+
fi
|
|
130
|
+
echo "CLAWDOCK_DIR=\"$CLAWDOCK_DIR\"" > "$CLAWDOCK_CONFIG"
|
|
131
|
+
echo "✅ Saved to $CLAWDOCK_CONFIG"
|
|
132
|
+
echo ""
|
|
133
|
+
return 0
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# Wrapper to run docker compose commands
|
|
137
|
+
_clawdock_compose() {
|
|
138
|
+
_clawdock_ensure_dir || return 1
|
|
139
|
+
local compose_args=(-f "${CLAWDOCK_DIR}/docker-compose.yml")
|
|
140
|
+
if [[ -f "${CLAWDOCK_DIR}/docker-compose.extra.yml" ]]; then
|
|
141
|
+
compose_args+=(-f "${CLAWDOCK_DIR}/docker-compose.extra.yml")
|
|
142
|
+
fi
|
|
143
|
+
command docker compose "${compose_args[@]}" "$@"
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
_clawdock_read_env_token() {
|
|
147
|
+
_clawdock_ensure_dir || return 1
|
|
148
|
+
if [[ ! -f "${CLAWDOCK_DIR}/.env" ]]; then
|
|
149
|
+
return 1
|
|
150
|
+
fi
|
|
151
|
+
local raw
|
|
152
|
+
raw=$(sed -n 's/^OPENCLAW_GATEWAY_TOKEN=//p' "${CLAWDOCK_DIR}/.env" | head -n 1)
|
|
153
|
+
if [[ -z "$raw" ]]; then
|
|
154
|
+
return 1
|
|
155
|
+
fi
|
|
156
|
+
_clawdock_trim_quotes "$raw"
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
# Basic Operations
|
|
160
|
+
clawdock-start() {
|
|
161
|
+
_clawdock_compose up -d openclaw-gateway
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
clawdock-stop() {
|
|
165
|
+
_clawdock_compose down
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
clawdock-restart() {
|
|
169
|
+
_clawdock_compose restart openclaw-gateway
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
clawdock-logs() {
|
|
173
|
+
_clawdock_compose logs -f openclaw-gateway
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
clawdock-status() {
|
|
177
|
+
_clawdock_compose ps
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
# Navigation
|
|
181
|
+
clawdock-cd() {
|
|
182
|
+
_clawdock_ensure_dir || return 1
|
|
183
|
+
cd "${CLAWDOCK_DIR}"
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
clawdock-config() {
|
|
187
|
+
cd ~/.openclaw
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
clawdock-workspace() {
|
|
191
|
+
cd ~/.openclaw/workspace
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
# Container Access
|
|
195
|
+
clawdock-shell() {
|
|
196
|
+
_clawdock_compose exec openclaw-gateway \
|
|
197
|
+
bash -c 'echo "alias openclaw=\"./openclaw.mjs\"" > /tmp/.bashrc_openclaw && bash --rcfile /tmp/.bashrc_openclaw'
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
clawdock-exec() {
|
|
201
|
+
_clawdock_compose exec openclaw-gateway "$@"
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
clawdock-cli() {
|
|
205
|
+
_clawdock_compose run --rm openclaw-cli "$@"
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
# Maintenance
|
|
209
|
+
clawdock-rebuild() {
|
|
210
|
+
_clawdock_compose build openclaw-gateway
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
clawdock-clean() {
|
|
214
|
+
_clawdock_compose down -v --remove-orphans
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
# Health check
|
|
218
|
+
clawdock-health() {
|
|
219
|
+
_clawdock_ensure_dir || return 1
|
|
220
|
+
local token
|
|
221
|
+
token=$(_clawdock_read_env_token)
|
|
222
|
+
if [[ -z "$token" ]]; then
|
|
223
|
+
echo "❌ Error: Could not find gateway token"
|
|
224
|
+
echo " Check: ${CLAWDOCK_DIR}/.env"
|
|
225
|
+
return 1
|
|
226
|
+
fi
|
|
227
|
+
_clawdock_compose exec -e "OPENCLAW_GATEWAY_TOKEN=$token" openclaw-gateway \
|
|
228
|
+
node dist/index.js health
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
# Show gateway token
|
|
232
|
+
clawdock-token() {
|
|
233
|
+
_clawdock_read_env_token
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
# Fix token configuration (run this once after setup)
|
|
237
|
+
clawdock-fix-token() {
|
|
238
|
+
_clawdock_ensure_dir || return 1
|
|
239
|
+
|
|
240
|
+
echo "🔧 Configuring gateway token..."
|
|
241
|
+
local token
|
|
242
|
+
token=$(clawdock-token)
|
|
243
|
+
if [[ -z "$token" ]]; then
|
|
244
|
+
echo "❌ Error: Could not find gateway token"
|
|
245
|
+
echo " Check: ${CLAWDOCK_DIR}/.env"
|
|
246
|
+
return 1
|
|
247
|
+
fi
|
|
248
|
+
|
|
249
|
+
echo "📝 Setting token: ${token:0:20}..."
|
|
250
|
+
|
|
251
|
+
_clawdock_compose exec -e "TOKEN=$token" openclaw-gateway \
|
|
252
|
+
bash -c './openclaw.mjs config set gateway.remote.token "$TOKEN" && ./openclaw.mjs config set gateway.auth.token "$TOKEN"' 2>&1 | _clawdock_filter_warnings
|
|
253
|
+
|
|
254
|
+
echo "🔍 Verifying token was saved..."
|
|
255
|
+
local saved_token
|
|
256
|
+
saved_token=$(_clawdock_compose exec openclaw-gateway \
|
|
257
|
+
bash -c "./openclaw.mjs config get gateway.remote.token 2>/dev/null" 2>&1 | _clawdock_filter_warnings | tr -d '\r\n' | head -c 64)
|
|
258
|
+
|
|
259
|
+
if [[ "$saved_token" == "$token" ]]; then
|
|
260
|
+
echo "✅ Token saved correctly!"
|
|
261
|
+
else
|
|
262
|
+
echo "⚠️ Token mismatch detected"
|
|
263
|
+
echo " Expected: ${token:0:20}..."
|
|
264
|
+
echo " Got: ${saved_token:0:20}..."
|
|
265
|
+
fi
|
|
266
|
+
|
|
267
|
+
echo "🔄 Restarting gateway..."
|
|
268
|
+
_clawdock_compose restart openclaw-gateway 2>&1 | _clawdock_filter_warnings
|
|
269
|
+
|
|
270
|
+
echo "⏳ Waiting for gateway to start..."
|
|
271
|
+
sleep 5
|
|
272
|
+
|
|
273
|
+
echo "✅ Configuration complete!"
|
|
274
|
+
echo -e " Try: $(_cmd clawdock-devices)"
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
# Open dashboard in browser
|
|
278
|
+
clawdock-dashboard() {
|
|
279
|
+
_clawdock_ensure_dir || return 1
|
|
280
|
+
|
|
281
|
+
echo "🦞 Getting dashboard URL..."
|
|
282
|
+
local output exit_status url
|
|
283
|
+
output=$(_clawdock_compose run --rm openclaw-cli dashboard --no-open 2>&1)
|
|
284
|
+
exit_status=$?
|
|
285
|
+
url=$(printf "%s\n" "$output" | _clawdock_filter_warnings | grep -o 'http[s]\?://[^[:space:]]*' | head -n 1)
|
|
286
|
+
if [[ $exit_status -ne 0 ]]; then
|
|
287
|
+
echo "❌ Failed to get dashboard URL"
|
|
288
|
+
echo -e " Try restarting: $(_cmd clawdock-restart)"
|
|
289
|
+
return 1
|
|
290
|
+
fi
|
|
291
|
+
|
|
292
|
+
if [[ -n "$url" ]]; then
|
|
293
|
+
echo "✅ Opening: $url"
|
|
294
|
+
open "$url" 2>/dev/null || xdg-open "$url" 2>/dev/null || echo " Please open manually: $url"
|
|
295
|
+
echo ""
|
|
296
|
+
echo -e "${_CLR_CYAN}💡 If you see 'pairing required' error:${_CLR_RESET}"
|
|
297
|
+
echo -e " 1. Run: $(_cmd clawdock-devices)"
|
|
298
|
+
echo " 2. Copy the Request ID from the Pending table"
|
|
299
|
+
echo -e " 3. Run: $(_cmd 'clawdock-approve <request-id>')"
|
|
300
|
+
else
|
|
301
|
+
echo "❌ Failed to get dashboard URL"
|
|
302
|
+
echo -e " Try restarting: $(_cmd clawdock-restart)"
|
|
303
|
+
fi
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
# List device pairings
|
|
307
|
+
clawdock-devices() {
|
|
308
|
+
_clawdock_ensure_dir || return 1
|
|
309
|
+
|
|
310
|
+
echo "🔍 Checking device pairings..."
|
|
311
|
+
local output exit_status
|
|
312
|
+
output=$(_clawdock_compose exec openclaw-gateway node dist/index.js devices list 2>&1)
|
|
313
|
+
exit_status=$?
|
|
314
|
+
printf "%s\n" "$output" | _clawdock_filter_warnings
|
|
315
|
+
if [ $exit_status -ne 0 ]; then
|
|
316
|
+
echo ""
|
|
317
|
+
echo -e "${_CLR_CYAN}💡 If you see token errors above:${_CLR_RESET}"
|
|
318
|
+
echo -e " 1. Verify token is set: $(_cmd clawdock-token)"
|
|
319
|
+
echo " 2. Try manual config inside container:"
|
|
320
|
+
echo -e " $(_cmd clawdock-shell)"
|
|
321
|
+
echo -e " $(_cmd 'openclaw config get gateway.remote.token')"
|
|
322
|
+
return 1
|
|
323
|
+
fi
|
|
324
|
+
|
|
325
|
+
echo ""
|
|
326
|
+
echo -e "${_CLR_CYAN}💡 To approve a pairing request:${_CLR_RESET}"
|
|
327
|
+
echo -e " $(_cmd 'clawdock-approve <request-id>')"
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
# Approve device pairing request
|
|
331
|
+
clawdock-approve() {
|
|
332
|
+
_clawdock_ensure_dir || return 1
|
|
333
|
+
|
|
334
|
+
if [[ -z "$1" ]]; then
|
|
335
|
+
echo -e "❌ Usage: $(_cmd 'clawdock-approve <request-id>')"
|
|
336
|
+
echo ""
|
|
337
|
+
echo -e "${_CLR_CYAN}💡 How to approve a device:${_CLR_RESET}"
|
|
338
|
+
echo -e " 1. Run: $(_cmd clawdock-devices)"
|
|
339
|
+
echo " 2. Find the Request ID in the Pending table (long UUID)"
|
|
340
|
+
echo -e " 3. Run: $(_cmd 'clawdock-approve <that-request-id>')"
|
|
341
|
+
echo ""
|
|
342
|
+
echo "Example:"
|
|
343
|
+
echo -e " $(_cmd 'clawdock-approve 6f9db1bd-a1cc-4d3f-b643-2c195262464e')"
|
|
344
|
+
return 1
|
|
345
|
+
fi
|
|
346
|
+
|
|
347
|
+
echo "✅ Approving device: $1"
|
|
348
|
+
_clawdock_compose exec openclaw-gateway \
|
|
349
|
+
node dist/index.js devices approve "$1" 2>&1 | _clawdock_filter_warnings
|
|
350
|
+
|
|
351
|
+
echo ""
|
|
352
|
+
echo "✅ Device approved! Refresh your browser."
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
# Show all available clawdock helper commands
|
|
356
|
+
clawdock-help() {
|
|
357
|
+
echo -e "\n${_CLR_BOLD}${_CLR_CYAN}🦞 ClawDock - Docker Helpers for OpenClaw${_CLR_RESET}\n"
|
|
358
|
+
|
|
359
|
+
echo -e "${_CLR_BOLD}${_CLR_MAGENTA}⚡ Basic Operations${_CLR_RESET}"
|
|
360
|
+
echo -e " $(_cmd clawdock-start) ${_CLR_DIM}Start the gateway${_CLR_RESET}"
|
|
361
|
+
echo -e " $(_cmd clawdock-stop) ${_CLR_DIM}Stop the gateway${_CLR_RESET}"
|
|
362
|
+
echo -e " $(_cmd clawdock-restart) ${_CLR_DIM}Restart the gateway${_CLR_RESET}"
|
|
363
|
+
echo -e " $(_cmd clawdock-status) ${_CLR_DIM}Check container status${_CLR_RESET}"
|
|
364
|
+
echo -e " $(_cmd clawdock-logs) ${_CLR_DIM}View live logs (follows)${_CLR_RESET}"
|
|
365
|
+
echo ""
|
|
366
|
+
|
|
367
|
+
echo -e "${_CLR_BOLD}${_CLR_MAGENTA}🐚 Container Access${_CLR_RESET}"
|
|
368
|
+
echo -e " $(_cmd clawdock-shell) ${_CLR_DIM}Shell into container (openclaw alias ready)${_CLR_RESET}"
|
|
369
|
+
echo -e " $(_cmd clawdock-cli) ${_CLR_DIM}Run CLI commands (e.g., clawdock-cli status)${_CLR_RESET}"
|
|
370
|
+
echo -e " $(_cmd clawdock-exec) ${_CLR_CYAN}<cmd>${_CLR_RESET} ${_CLR_DIM}Execute command in gateway container${_CLR_RESET}"
|
|
371
|
+
echo ""
|
|
372
|
+
|
|
373
|
+
echo -e "${_CLR_BOLD}${_CLR_MAGENTA}🌐 Web UI & Devices${_CLR_RESET}"
|
|
374
|
+
echo -e " $(_cmd clawdock-dashboard) ${_CLR_DIM}Open web UI in browser ${_CLR_CYAN}(auto-guides you)${_CLR_RESET}"
|
|
375
|
+
echo -e " $(_cmd clawdock-devices) ${_CLR_DIM}List device pairings ${_CLR_CYAN}(auto-guides you)${_CLR_RESET}"
|
|
376
|
+
echo -e " $(_cmd clawdock-approve) ${_CLR_CYAN}<id>${_CLR_RESET} ${_CLR_DIM}Approve device pairing ${_CLR_CYAN}(with examples)${_CLR_RESET}"
|
|
377
|
+
echo ""
|
|
378
|
+
|
|
379
|
+
echo -e "${_CLR_BOLD}${_CLR_MAGENTA}⚙️ Setup & Configuration${_CLR_RESET}"
|
|
380
|
+
echo -e " $(_cmd clawdock-fix-token) ${_CLR_DIM}Configure gateway token ${_CLR_CYAN}(run once)${_CLR_RESET}"
|
|
381
|
+
echo ""
|
|
382
|
+
|
|
383
|
+
echo -e "${_CLR_BOLD}${_CLR_MAGENTA}🔧 Maintenance${_CLR_RESET}"
|
|
384
|
+
echo -e " $(_cmd clawdock-rebuild) ${_CLR_DIM}Rebuild Docker image${_CLR_RESET}"
|
|
385
|
+
echo -e " $(_cmd clawdock-clean) ${_CLR_RED}⚠️ Remove containers & volumes (nuclear)${_CLR_RESET}"
|
|
386
|
+
echo ""
|
|
387
|
+
|
|
388
|
+
echo -e "${_CLR_BOLD}${_CLR_MAGENTA}🛠️ Utilities${_CLR_RESET}"
|
|
389
|
+
echo -e " $(_cmd clawdock-health) ${_CLR_DIM}Run health check${_CLR_RESET}"
|
|
390
|
+
echo -e " $(_cmd clawdock-token) ${_CLR_DIM}Show gateway auth token${_CLR_RESET}"
|
|
391
|
+
echo -e " $(_cmd clawdock-cd) ${_CLR_DIM}Jump to openclaw project directory${_CLR_RESET}"
|
|
392
|
+
echo -e " $(_cmd clawdock-config) ${_CLR_DIM}Open config directory (~/.openclaw)${_CLR_RESET}"
|
|
393
|
+
echo -e " $(_cmd clawdock-workspace) ${_CLR_DIM}Open workspace directory${_CLR_RESET}"
|
|
394
|
+
echo ""
|
|
395
|
+
|
|
396
|
+
echo -e "${_CLR_BOLD}${_CLR_CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${_CLR_RESET}"
|
|
397
|
+
echo -e "${_CLR_BOLD}${_CLR_GREEN}🚀 First Time Setup${_CLR_RESET}"
|
|
398
|
+
echo -e "${_CLR_CYAN} 1.${_CLR_RESET} $(_cmd clawdock-start) ${_CLR_DIM}# Start the gateway${_CLR_RESET}"
|
|
399
|
+
echo -e "${_CLR_CYAN} 2.${_CLR_RESET} $(_cmd clawdock-fix-token) ${_CLR_DIM}# Configure token${_CLR_RESET}"
|
|
400
|
+
echo -e "${_CLR_CYAN} 3.${_CLR_RESET} $(_cmd clawdock-dashboard) ${_CLR_DIM}# Open web UI${_CLR_RESET}"
|
|
401
|
+
echo -e "${_CLR_CYAN} 4.${_CLR_RESET} $(_cmd clawdock-devices) ${_CLR_DIM}# If pairing needed${_CLR_RESET}"
|
|
402
|
+
echo -e "${_CLR_CYAN} 5.${_CLR_RESET} $(_cmd clawdock-approve) ${_CLR_CYAN}<id>${_CLR_RESET} ${_CLR_DIM}# Approve pairing${_CLR_RESET}"
|
|
403
|
+
echo ""
|
|
404
|
+
|
|
405
|
+
echo -e "${_CLR_BOLD}${_CLR_GREEN}💬 WhatsApp Setup${_CLR_RESET}"
|
|
406
|
+
echo -e " $(_cmd clawdock-shell)"
|
|
407
|
+
echo -e " ${_CLR_BLUE}>${_CLR_RESET} $(_cmd 'openclaw channels login --channel whatsapp')"
|
|
408
|
+
echo -e " ${_CLR_BLUE}>${_CLR_RESET} $(_cmd 'openclaw status')"
|
|
409
|
+
echo ""
|
|
410
|
+
|
|
411
|
+
echo -e "${_CLR_BOLD}${_CLR_CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${_CLR_RESET}"
|
|
412
|
+
echo ""
|
|
413
|
+
|
|
414
|
+
echo -e "${_CLR_CYAN}💡 All commands guide you through next steps!${_CLR_RESET}"
|
|
415
|
+
echo -e "${_CLR_BLUE}📚 Docs: ${_CLR_RESET}${_CLR_CYAN}https://docs.openclaw.ai${_CLR_RESET}"
|
|
416
|
+
echo ""
|
|
417
|
+
}
|