@gguf/claw 2026.2.9 → 2026.2.13
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/CHANGELOG.md +159 -0
- package/LICENSE +1 -1
- package/dist/{accounts-MyAvfCVH.js → accounts-54zZMYCo.js} +5 -2
- package/dist/{accounts-DbzMEfKN.js → accounts-Bvh0DFxS.js} +5 -2
- package/dist/{acp-cli-MZ3h1E1n.js → acp-cli-BslcOPdx.js} +146 -25
- package/dist/{acp-cli-DKJRTfwB.js → acp-cli-D6rk5cOh.js} +145 -24
- package/dist/{agent-whSJT2Lk.js → agent-C0yL70cy.js} +26 -20
- package/dist/{agent-c1QNeDmV.js → agent-DjZxytiC.js} +26 -20
- package/dist/{agent-scope-D3me2AZa.js → agent-scope-Bkr9fZtl.js} +31 -14
- package/dist/{agent-scope-Dp8sREli.js → agent-scope-DASgjz2_.js} +199 -14
- package/dist/{agent-scope-DnyDZ5RH.js → agent-scope-GYIs5dyU.js} +30 -13
- package/dist/{agent-scope-Dpav7C-i.js → agent-scope-okUOVjE5.js} +32 -11
- package/dist/audio-preflight-B0kLz-Ma.js +60 -0
- package/dist/audio-preflight-BCs_J33s.js +60 -0
- package/dist/audio-preflight-CTl2RCyF.js +71 -0
- package/dist/audio-preflight-MhF6YlAY.js +74 -0
- package/dist/{audit-BFYy1qSw.js → audit-BYfhZ7LA.js} +454 -31
- package/dist/{audit-Dn2cBl2x.js → audit-CfPZ_5Id.js} +452 -29
- package/dist/auth-9nTeB2Je.js +602 -0
- package/dist/auth-CLhyWwAU.js +593 -0
- package/dist/{auth-health-Cx5exPMV.js → auth-health-CWiLyzSr.js} +1 -1
- package/dist/{auth-health-DjT4fUpw.js → auth-health-qD4RND47.js} +1 -1
- package/dist/{auth-profiles-FJ3VY25a.js → auth-profiles-Cp9MtUdM.js} +353 -33
- package/dist/build-info.json +2 -2
- package/dist/bundled/boot-md/handler.js +33 -25
- package/dist/bundled/session-memory/handler.js +33 -22
- package/dist/{call-CD2IZCHT.js → call-CjEdFGAf.js} +7 -7
- package/dist/{call-CM25qgxz.js → call-DAfkvtVq.js} +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +7 -1
- package/dist/{channel-options-CremuJyh.js → channel-options-B8dPzlyO.js} +4 -4
- package/dist/{channel-options-D-JnJ4Ft.js → channel-options-Bq5IC5Tv.js} +12 -7
- package/dist/{channel-selection-DAHCVAX4.js → channel-selection-BaW1xXEa.js} +2 -2
- package/dist/{channel-selection-DPV9hvY8.js → channel-selection-dR0jCgTn.js} +2 -2
- package/dist/{channels-cli-6deHFr9t.js → channels-cli-hPo28hWS.js} +61 -56
- package/dist/{channels-cli-D3tKmhlt.js → channels-cli-zi3rO0jq.js} +62 -57
- package/dist/{channels-status-issues-BN1ICfdy.js → channels-status-issues-kb-M2Fi0.js} +1 -1
- package/dist/{channels-status-issues-DFhI_u0p.js → channels-status-issues-ketdwZun.js} +1 -1
- package/dist/{chrome-B2UjqY-9.js → chrome--Fe8F5Kf.js} +24 -12
- package/dist/{chrome-COabMr6f.js → chrome-BWeMtFGf.js} +24 -12
- package/dist/{chrome-CQd_MVOA.js → chrome-Bx24uq7B.js} +27 -15
- package/dist/{chrome-CxRJz4ZD.js → chrome-n_3rtK2c.js} +22 -11
- package/dist/{clack-prompter-BkNZ4Xdw.js → clack-prompter-B-tJmODa.js} +5 -5
- package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-DpuKn_Uy.js} +5 -5
- package/dist/cli/daemon-cli.js +8 -1
- package/dist/cli-9lwO6Ttx.js +94 -0
- package/dist/cli-CNNdyxPO.js +91 -0
- package/dist/{client-DMloFP_O.js → client-BhZjzrH2.js} +73 -9
- package/dist/{client-C0gQ7hrj.js → client-DyAxKXKY.js} +73 -9
- package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
- package/dist/{command-options-BQdH6qnK.js → command-options-BDV7Xgs-.js} +9 -4
- package/dist/{commands-BWHYcc83.js → commands-gOiRcfoU.js} +4 -4
- package/dist/{tui-formatters-BDP_71Xt.js → commands-registry-6NUFrejL.js} +6 -114
- package/dist/{tui-formatters-CIx4sCQO.js → commands-registry-DGgkLQ7A.js} +6 -114
- package/dist/{completion-cli-DEJia0V1.js → completion-cli-B1kHKJZX.js} +30 -30
- package/dist/{completion-cli-D_0fx2O6.js → completion-cli-Drks7xRK.js} +3 -3
- package/dist/{config-CQt4vGxI.js → config-7NCznPmF.js} +336 -97
- package/dist/{config-fCnPoWjU.js → config-B8v0zg48.js} +295 -99
- package/dist/{config-Bj2eDa02.js → config-CeWMHOiQ.js} +295 -99
- package/dist/{config-ethqi73X.js → config-D8pgDSNo.js} +358 -99
- package/dist/{config-guard-BJuqQvng.js → config-guard-RbHxYc9j.js} +212 -63
- package/dist/{configure-skrLiSwW.js → configure-DLp2Xz7L.js} +59 -40
- package/dist/{configure-C-pYuYg_.js → configure-Su1S0gi-.js} +58 -39
- package/dist/control-auth-BlWU-jBl.js +54 -0
- package/dist/control-auth-C8rIqEdA.js +54 -0
- package/dist/{control-service-BDgF-FZ0.js → control-service-BNDthc1N.js} +11 -5
- package/dist/{control-service-Djd_WI3_.js → control-service-COF59GQe.js} +10 -4
- package/dist/control-ui/assets/{index-CnB9IO4a.js → index-BECn2L1T.js} +369 -368
- package/dist/control-ui/assets/index-BECn2L1T.js.map +1 -0
- package/dist/control-ui/assets/index-DRPcd1Z4.css +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/{cron-cli-CB6CufAb.js → cron-cli-CSy4-JGS.js} +20 -20
- package/dist/{cron-cli-Db6fardJ.js → cron-cli-Db3uCDIT.js} +21 -21
- package/dist/{daemon-cli-Xe22v7lZ.js → daemon-cli-BLbzcTuD.js} +61 -22
- package/dist/{daemon-cli-BlHK0ly2.js → daemon-cli-DR0D35MO.js} +60 -21
- package/dist/{daemon-runtime-CMqH8BUE.js → daemon-runtime-ZWXvLDxx.js} +3 -3
- package/dist/{daemon-runtime-DwQFvDXZ.js → daemon-runtime-pVcZ2KDE.js} +3 -3
- package/dist/{deliver-CD7-BhYD.js → deliver-BHNoC9Yk.js} +396 -290
- package/dist/{deliver-BdGjIcTC.js → deliver-C_5eGQrX.js} +392 -286
- package/dist/{deliver-nTKaXF--.js → deliver-DPHZlWgr.js} +392 -287
- package/dist/{deliver-CDMGxRoW.js → deliver-geVWJ52I.js} +394 -288
- package/dist/{deps-BDQ_K8zf.js → deps-CP0dcOgD.js} +2 -2
- package/dist/{deps-D60FbgTP.js → deps-DW5r2IEk.js} +2 -2
- package/dist/{devices-cli-N559801X.js → devices-cli-BViqX5pl.js} +15 -15
- package/dist/{devices-cli-IxmPLIk8.js → devices-cli-DpYaY-iM.js} +14 -14
- package/dist/{directory-cli-Caq-OYk8.js → directory-cli-BWD1DdKf.js} +16 -16
- package/dist/{directory-cli-ClrdmQL-.js → directory-cli-BcvZfkfo.js} +17 -17
- package/dist/{dispatcher-BfXtm4Dl.js → dispatcher-4Qn951N3.js} +5 -3
- package/dist/{dns-cli-DgVO0Pkw.js → dns-cli-_Ych2tu9.js} +12 -12
- package/dist/{dns-cli-BTNZkWHs.js → dns-cli-gQCxUXgU.js} +13 -13
- package/dist/{docs-cli-9Xan7C6D.js → docs-cli-Bseiau7J.js} +7 -7
- package/dist/{docs-cli-DZULc91f.js → docs-cli-DzBTlWQE.js} +8 -8
- package/dist/{doctor-D39rZvNH.js → doctor-BNkYYahD.js} +37 -36
- package/dist/{doctor-Dq1YeYdH.js → doctor-DzIgdPx1.js} +37 -36
- package/dist/entry.js +77 -21
- package/dist/{env-B5YXooWp.js → env-BUuSkE19.js} +1 -1
- package/dist/{exec-DFOtZbI0.js → exec-BPQSKwGa.js} +5 -3
- package/dist/{exec-B8JKbXKW.js → exec-DqZFMawz.js} +5 -3
- package/dist/{exec-Bas1hoSJ.js → exec-EKUaAU91.js} +57 -18
- package/dist/{exec-CiH_vkWn.js → exec-_PSUrMP8.js} +528 -19
- package/dist/{exec-approvals-DGPTjO0N.js → exec-approvals-Bqk-tIxY.js} +134 -51
- package/dist/{exec-approvals-C9InMoAB.js → exec-approvals-C67V-ljH.js} +134 -51
- package/dist/{exec-approvals-cli-EASbqFd-.js → exec-approvals-cli-D6vfSqQu.js} +22 -22
- package/dist/{exec-approvals-cli-DPHItoxG.js → exec-approvals-cli-DAdoki_R.js} +21 -21
- package/dist/extensionAPI.js +8518 -9140
- package/dist/fetch-Bz1WxfzV.js +285 -0
- package/dist/fetch-D2O8s8I1.js +285 -0
- package/dist/fetch-Dm-nCwa_.js +285 -0
- package/dist/fetch-wuOZDzdT.js +285 -0
- package/dist/{gateway-cli-BFqUIif8.js → gateway-cli-C-k7JPlr.js} +1868 -1072
- package/dist/{gateway-cli-v4kSPsLE.js → gateway-cli-DIIJ9Z0Y.js} +1870 -1074
- package/dist/{gateway-rpc-D6LrkcSA.js → gateway-rpc-D6jLh81b.js} +3 -3
- package/dist/{gateway-rpc-dHFK02Kk.js → gateway-rpc-aqysUyf5.js} +3 -3
- package/dist/{github-copilot-auth-CQIWc0hC.js → github-copilot-auth-BUqfX7hG.js} +316 -52
- package/dist/{github-copilot-auth-D2jfnapd.js → github-copilot-auth-By-nyRb6.js} +316 -52
- package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-C9W4SY9o.js} +7 -4
- package/dist/{github-copilot-token-BW-SEg7E.js → github-copilot-token-CiF5Iyi2.js} +6 -3
- package/dist/{github-copilot-token-C9IJh2Pn.js → github-copilot-token-DatTe1w-.js} +6 -3
- package/dist/{github-copilot-token-wCk9Fg_E.js → github-copilot-token-c9Igt3ZH.js} +6 -3
- package/dist/{gmail-setup-utils-CVNgLkXL.js → gmail-setup-utils-HvKMdooP.js} +4 -4
- package/dist/{gmail-setup-utils-CAM1vbUS.js → gmail-setup-utils-c-iF00aL.js} +3 -3
- package/dist/{health-format-C77hrjEQ.js → health-format-BORnJOeS.js} +106 -44
- package/dist/{health-format-DDYtlkB9.js → health-format-Nd0jcoqM.js} +105 -43
- package/dist/{help-format-CUnac_bT.js → help-format-Cd5PLwXe.js} +1 -1
- package/dist/{help-format-aiW76js8.js → help-format-DYBEvMOX.js} +1 -1
- package/dist/{hooks-cli-DsflBRxX.js → hooks-cli-3KdsbdRi.js} +53 -47
- package/dist/{hooks-cli-C7kctMuZ.js → hooks-cli-BThja6wK.js} +53 -47
- package/dist/{hooks-status-DRAVHSPg.js → hooks-status-BbIz0zmm.js} +6 -5
- package/dist/{hooks-status-lHWrY64E.js → hooks-status-DPJORMB6.js} +6 -5
- package/dist/{image--gbzucyh.js → image-BaJKrmCs.js} +12 -8
- package/dist/{image-ORs4LLwg.js → image-D-5pUELC.js} +13 -9
- package/dist/{image-DMnjYGdA.js → image-TvL5YI_W.js} +13 -9
- package/dist/{image-BVNytEIn.js → image-bodq5cUH.js} +13 -9
- package/dist/index.js +261 -109
- package/dist/{installs-CXGV291R.js → installs-BrOMqREO.js} +7 -6
- package/dist/{installs-89zeUsVn.js → installs-z69au9Te.js} +7 -6
- package/dist/{links-Dg90NTyF.js → links-AVB88xxH.js} +1 -1
- package/dist/{links-7M-j83As.js → links-DpxpaKe1.js} +1 -1
- package/dist/llm-slug-generator.js +18 -19
- package/dist/{loader-BnzQyT31.js → loader-CS-5lMQa.js} +3694 -4531
- package/dist/{logging-DuK6YXuK.js → logging-B3KnAryz.js} +2 -2
- package/dist/{logging-CNq0UUgf.js → logging-DEPo2hji.js} +1 -1
- package/dist/{login-qr-CJ__cE3-.js → login-qr--28WL1TN.js} +11 -5
- package/dist/{login-qr-BVeOFfNW.js → login-qr-4o2aC2UE.js} +9 -4
- package/dist/{login-qr-BJChByHH.js → login-qr-BUdeu1Sl.js} +8 -2
- package/dist/{login-qr-KUOtNJaQ.js → login-qr-BsYM2E1y.js} +12 -6
- package/dist/{logs-cli-Cm7AiarR.js → logs-cli-DDMD5w5_.js} +38 -22
- package/dist/{logs-cli-BWmtAsjp.js → logs-cli-DvPoVKCN.js} +38 -22
- package/dist/{manager-C-jXr9ks.js → manager-CXo1uqmO.js} +102 -86
- package/dist/{manager-CMFBuvVd.js → manager-ChW0jk7T.js} +101 -85
- package/dist/{manager-D2Ndphg3.js → manager-DUOe7ud6.js} +100 -85
- package/dist/{manager-BsdlwsL5.js → manager-PoxUqdN_.js} +98 -82
- package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-CVsqjgX0.js} +40 -2
- package/dist/{manifest-registry-DyMRD3rY.js → manifest-registry-jeAPx6AW.js} +40 -2
- package/dist/{message-channel-CHRYQtAM.js → message-channel-CTtrEkmW.js} +1 -1
- package/dist/{message-channel-BlgPSDAh.js → message-channel-DWcu72r7.js} +1 -1
- package/dist/{model-auth-BqjMkNFs.js → model-auth-BvODRbV0.js} +362 -35
- package/dist/{model-selection-DbsbOAoh.js → model-selection-B53OvWCf.js} +353 -33
- package/dist/{model-selection-DlV6wnTr.js → model-selection-vC82fEiP.js} +331 -30
- package/dist/{models-cli-DIFBrK4W.js → models-cli-DqsKsOgd.js} +66 -55
- package/dist/{models-cli-0XhQQbMW.js → models-cli-NV0bnh8l.js} +66 -55
- package/dist/{node-cli-BMUfVCSq.js → node-cli-C7YleuBk.js} +54 -44
- package/dist/{node-cli-DY4lzhDA.js → node-cli-CxwoHnZ6.js} +54 -44
- package/dist/{node-service-DQ-tiSie.js → node-service-C7f_uvx9.js} +2 -2
- package/dist/{node-service-u8g85nD3.js → node-service-De_WkxJe.js} +2 -2
- package/dist/{nodes-cli-BX6oWnLC.js → nodes-cli-BxrMVI9V.js} +25 -23
- package/dist/{nodes-cli-CVHzcQo2.js → nodes-cli-Clb0ocwB.js} +24 -22
- package/dist/{nodes-screen-DGlNPbk4.js → nodes-screen-CVL9363A.js} +48 -6
- package/dist/{nodes-screen-lykd2cny.js → nodes-screen-DsHJIN2I.js} +47 -5
- package/dist/{note-Ci08TSbV.js → note-Duiadw1g.js} +1 -1
- package/dist/{note-DVO1KLaW.js → note-uC6iDp4y.js} +2 -2
- package/dist/{onboard-channels-DTkFFbzS.js → onboard-channels-C5Iaafwb.js} +10 -10
- package/dist/{onboard-channels-CtDnwaF5.js → onboard-channels-C5uL3i8d.js} +11 -11
- package/dist/{onboard-skills-BnAcpzfX.js → onboard-skills-BFxdI1Y1.js} +1143 -112
- package/dist/{onboard-skills-DuoDzEmI.js → onboard-skills-DUG8Y0se.js} +1142 -111
- package/dist/{onboarding-DvhiiHh0.js → onboarding-ClzElK4D.js} +56 -48
- package/dist/{openclaw-root-93W6UrUK.js → openclaw-root-BKsZvO6K.js} +6 -2
- package/dist/{openclaw-root-9ILYSmJ9.js → openclaw-root-CEnmuBUN.js} +6 -2
- package/dist/{pairing-cli-BKJHBxwT.js → pairing-cli-BWWFZF7Q.js} +16 -16
- package/dist/{pairing-cli-DJHjPBwu.js → pairing-cli-BrFLxnug.js} +16 -16
- package/dist/{pairing-labels-xImhiJax.js → pairing-labels-C8KULWNH.js} +1 -1
- package/dist/{pairing-labels-CHxlh3tT.js → pairing-labels-Dt2vXyI7.js} +1 -1
- package/dist/{pairing-store-CO6umWFP.js → pairing-store-Dz-ArTQS.js} +3 -3
- package/dist/{pairing-store-BpPUNzmB.js → pairing-store-gQdv7Ruh.js} +2 -2
- package/dist/{path-env-Nq83EHH9.js → path-env-BRKerjt1.js} +2 -2
- package/dist/{path-env-CXWUFfFv.js → path-env-OJAyUeWW.js} +1 -1
- package/dist/paths-BZK4Ct0I.js +81 -0
- package/dist/paths-DWYi0R_2.js +78 -0
- package/dist/{paths-Bkhd_qY8.js → paths-DdKf4lHp.js} +35 -5
- package/dist/paths-SFzVNGbc.js +78 -0
- package/dist/pi-auth-json-D7hGObyW.js +12 -0
- package/dist/pi-auth-json-DgvHjfJy.js +8 -0
- package/dist/pi-auth-json-la6lnAzY.js +79 -0
- package/dist/pi-auth-json-p3vsMR7W.js +79 -0
- package/dist/{pi-embedded-C1qKCgDT.js → pi-embedded-De6SeAPs.js} +9518 -9968
- package/dist/{pi-embedded-helpers-DtPn5RC8.js → pi-embedded-helpers-BrUBxrE2.js} +70 -10
- package/dist/{pi-embedded-helpers-DhEkdWB1.js → pi-embedded-helpers-D0mqOwwq.js} +821 -128
- package/dist/{pi-embedded-helpers-7AjuNiiJ.js → pi-embedded-helpers-DpJb0kUk.js} +69 -9
- package/dist/{pi-embedded-helpers-BTkXgwJ7.js → pi-embedded-helpers-ZI1UCSRM.js} +927 -136
- package/dist/{pi-tools.policy-gG96mWwA.js → pi-tools.policy-z5Wd_2WN.js} +4 -4
- package/dist/{plugin-auto-enable-D5ye7QnB.js → plugin-auto-enable-B8mX3rX3.js} +14 -5
- package/dist/{plugin-auto-enable-BROgMZcf.js → plugin-auto-enable-OO0eDINB.js} +14 -5
- package/dist/plugin-sdk/agents/apply-patch-update.d.ts +3 -1
- package/dist/plugin-sdk/agents/apply-patch.d.ts +11 -3
- package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +5 -0
- package/dist/plugin-sdk/agents/auth-profiles.d.ts +1 -1
- package/dist/plugin-sdk/agents/bash-process-registry.d.ts +1 -0
- package/dist/plugin-sdk/agents/bash-tools.exec.d.ts +26 -0
- package/dist/plugin-sdk/agents/current-time.d.ts +17 -0
- package/dist/plugin-sdk/agents/huggingface-models.d.ts +17 -0
- package/dist/plugin-sdk/agents/models-config.providers.d.ts +10 -0
- package/dist/plugin-sdk/agents/openclaw-tools.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-auth-json.d.ts +14 -0
- package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +5 -1
- package/dist/plugin-sdk/agents/pi-embedded-helpers.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-runner/google.d.ts +1 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/images.d.ts +9 -4
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/params.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-tools.read.d.ts +8 -3
- package/dist/plugin-sdk/agents/sandbox/constants.d.ts +1 -1
- package/dist/plugin-sdk/agents/sandbox/docker.d.ts +14 -3
- package/dist/plugin-sdk/agents/sandbox/fs-bridge.d.ts +56 -0
- package/dist/plugin-sdk/agents/sandbox/types.d.ts +2 -0
- package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
- package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
- package/dist/plugin-sdk/agents/subagent-registry.d.ts +3 -1
- package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -0
- package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +2 -2
- package/dist/plugin-sdk/agents/tools/common.d.ts +4 -0
- package/dist/plugin-sdk/agents/tools/image-tool.d.ts +9 -1
- package/dist/plugin-sdk/agents/tools/web-search.d.ts +10 -1
- package/dist/plugin-sdk/agents/usage.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/memory-flush.d.ts +2 -2
- package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +3 -0
- package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
- package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
- package/dist/plugin-sdk/auto-reply/status.d.ts +2 -0
- package/dist/plugin-sdk/auto-reply/templating.d.ts +3 -0
- package/dist/plugin-sdk/auto-reply/thinking.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
- package/dist/plugin-sdk/browser/cdp.helpers.d.ts +2 -1
- package/dist/plugin-sdk/browser/client-actions-core.d.ts +1 -0
- package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
- package/dist/plugin-sdk/browser/pw-ai.d.ts +1 -1
- package/dist/plugin-sdk/browser/pw-session.d.ts +25 -0
- package/dist/plugin-sdk/browser/pw-tools-core.interactions.d.ts +2 -0
- package/dist/plugin-sdk/browser/routes/dispatcher.d.ts +1 -0
- package/dist/plugin-sdk/browser/routes/types.d.ts +5 -0
- package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
- package/dist/plugin-sdk/channels/registry.d.ts +2 -2
- package/dist/plugin-sdk/cli/nodes-camera.d.ts +8 -2
- package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
- package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
- package/dist/plugin-sdk/commands/onboard-helpers.d.ts +1 -0
- package/dist/plugin-sdk/commands/onboard-types.d.ts +9 -1
- package/dist/plugin-sdk/commands/signal-install.d.ts +20 -0
- package/dist/plugin-sdk/config/config.d.ts +1 -1
- package/dist/plugin-sdk/config/group-policy.d.ts +3 -0
- package/dist/plugin-sdk/config/merge-patch.d.ts +1 -0
- package/dist/plugin-sdk/config/sessions/paths.d.ts +14 -4
- package/dist/plugin-sdk/config/sessions/store.d.ts +8 -0
- package/dist/plugin-sdk/config/sessions/types.d.ts +8 -0
- package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
- package/dist/plugin-sdk/config/types.channels.d.ts +2 -0
- package/dist/plugin-sdk/config/types.d.ts +1 -0
- package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
- package/dist/plugin-sdk/config/types.gateway.d.ts +35 -0
- package/dist/plugin-sdk/config/types.hooks.d.ts +23 -1
- package/dist/plugin-sdk/config/types.irc.d.ts +96 -0
- package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
- package/dist/plugin-sdk/config/types.openclaw.d.ts +6 -0
- package/dist/plugin-sdk/config/types.queue.d.ts +1 -0
- package/dist/plugin-sdk/config/types.slack.d.ts +2 -0
- package/dist/plugin-sdk/config/types.telegram.d.ts +2 -0
- package/dist/plugin-sdk/config/validation.d.ts +20 -0
- package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
- package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +193 -2
- package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +3 -2
- package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +378 -0
- package/dist/plugin-sdk/config/zod-schema.providers.d.ts +176 -0
- package/dist/plugin-sdk/config/zod-schema.sensitive.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.session.d.ts +1 -0
- package/dist/plugin-sdk/cron/service/jobs.d.ts +8 -0
- package/dist/plugin-sdk/cron/service/state.d.ts +1 -0
- package/dist/plugin-sdk/cron/types.d.ts +2 -0
- package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +15 -0
- package/dist/plugin-sdk/discord/send.types.d.ts +5 -0
- package/dist/plugin-sdk/gateway/auth-rate-limit.d.ts +59 -0
- package/dist/plugin-sdk/gateway/auth.d.ts +47 -0
- package/dist/plugin-sdk/gateway/net.d.ts +5 -0
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +7 -7
- package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +7 -1
- package/dist/plugin-sdk/gateway/protocol/schema/channels.d.ts +21 -0
- package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -1
- package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
- package/dist/plugin-sdk/gateway/session-utils.types.d.ts +1 -0
- package/dist/plugin-sdk/imessage/send.d.ts +12 -0
- package/dist/plugin-sdk/index.js +2147 -900
- package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
- package/dist/plugin-sdk/infra/brew.d.ts +8 -0
- package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
- package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
- package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +8 -1
- package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
- package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
- package/dist/plugin-sdk/infra/outbound/message.d.ts +2 -0
- package/dist/plugin-sdk/infra/outbound/outbound-send-service.d.ts +2 -0
- package/dist/plugin-sdk/infra/session-cost-usage.d.ts +3 -0
- package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
- package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
- package/dist/plugin-sdk/logging/console.d.ts +4 -0
- package/dist/plugin-sdk/logging/logger.d.ts +1 -1
- package/dist/plugin-sdk/logging/state.d.ts +1 -0
- package/dist/plugin-sdk/logging.d.ts +2 -2
- package/dist/plugin-sdk/markdown/ir.d.ts +1 -1
- package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
- package/dist/plugin-sdk/media/input-files.d.ts +5 -0
- package/dist/plugin-sdk/media/store.d.ts +10 -0
- package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
- package/dist/plugin-sdk/media-understanding/types.d.ts +1 -0
- package/dist/plugin-sdk/memory/backend-config.d.ts +2 -1
- package/dist/plugin-sdk/memory/embedding-chunk-limits.d.ts +3 -0
- package/dist/plugin-sdk/memory/embedding-input-limits.d.ts +2 -0
- package/dist/plugin-sdk/memory/embedding-model-limits.d.ts +2 -0
- package/dist/plugin-sdk/memory/embeddings.d.ts +1 -0
- package/dist/plugin-sdk/memory/internal.d.ts +11 -0
- package/dist/plugin-sdk/memory/manager.d.ts +0 -6
- package/dist/plugin-sdk/memory/qmd-manager.d.ts +2 -0
- package/dist/plugin-sdk/memory/qmd-query-parser.d.ts +8 -0
- package/dist/plugin-sdk/memory/session-files.d.ts +2 -0
- package/dist/plugin-sdk/process/command-queue.d.ts +16 -0
- package/dist/plugin-sdk/providers/github-copilot-token.d.ts +3 -0
- package/dist/plugin-sdk/routing/resolve-route.d.ts +3 -1
- package/dist/plugin-sdk/security/external-content.d.ts +1 -1
- package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
- package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
- package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
- package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
- package/dist/plugin-sdk/slack/monitor/commands.d.ts +5 -0
- package/dist/plugin-sdk/slack/monitor/media.d.ts +21 -0
- package/dist/plugin-sdk/slack/types.d.ts +1 -0
- package/dist/plugin-sdk/telegram/bot-message-context.d.ts +2 -1
- package/dist/plugin-sdk/telegram/fetch.d.ts +1 -0
- package/dist/plugin-sdk/telegram/monitor.d.ts +1 -0
- package/dist/plugin-sdk/telegram/send.d.ts +3 -0
- package/dist/plugin-sdk/tts/tts.d.ts +2 -2
- package/dist/plugin-sdk/utils/fetch-timeout.d.ts +2 -0
- package/dist/plugin-sdk/web/media.d.ts +12 -2
- package/dist/{plugins-CQw3z3Nw.js → plugins-CTjLu-z-.js} +4 -4
- package/dist/{plugins-B7F0Ly9G.js → plugins-CxrdL_IZ.js} +3 -3
- package/dist/{plugins-cli-CJ74eHvr.js → plugins-cli-CbX97Kvt.js} +259 -49
- package/dist/{plugins-cli-ubDwUAzK.js → plugins-cli-Dn9OeO53.js} +257 -47
- package/dist/{ports-kYsTYQdA.js → ports-C8YYHVlc.js} +2 -2
- package/dist/{program-1bQ15ivo.js → program-D-mNC0It.js} +86 -83
- package/dist/{progress-Da1ehW-x.js → progress-COHv-uNT.js} +1 -1
- package/dist/{progress-COzt9PNY.js → progress-DZb6yPcJ.js} +1 -1
- package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-Cf1r1L6k.js} +1 -1
- package/dist/{prompt-style-DjZDxcFg.js → prompt-style-lSlXMhsd.js} +1 -1
- package/dist/{pw-ai-CQ4-gUNR.js → pw-ai-6GzTgK5g.js} +205 -32
- package/dist/{pw-ai-1NN0FrJb.js → pw-ai-C8YhJRaI.js} +207 -32
- package/dist/{pw-ai-qEMUq5Mt.js → pw-ai-CKGenizV.js} +203 -29
- package/dist/{pw-ai-IOqEXO1O.js → pw-ai-D7devT89.js} +206 -32
- package/dist/{qmd-manager-CEwp3el1.js → qmd-manager-CQzWovq-.js} +71 -90
- package/dist/{qmd-manager-D6N3qvQ5.js → qmd-manager-Cs8RJVQp.js} +73 -90
- package/dist/{qmd-manager-C48QzrRe.js → qmd-manager-DdgrQ2kc.js} +71 -88
- package/dist/{qmd-manager-DaUqCKB_.js → qmd-manager-dyIoOvKl.js} +73 -90
- package/dist/{register.subclis-Cm-VJ5nP.js → register.subclis-ifHtmF3e.js} +29 -29
- package/dist/{reply-CBs4e9Rm.js → reply-VIHqsQ-k.js} +7906 -8743
- package/dist/{routes-9ygR0GOk.js → routes-CaCvio4Q.js} +36 -15
- package/dist/{routes-BrWrBk2R.js → routes-Cpfxk96k.js} +36 -14
- package/dist/{rpc-Cjuz2Gv1.js → rpc-BhB01Bhj.js} +3 -3
- package/dist/{rpc-DhkLVY5H.js → rpc-C5WsS_Ne.js} +3 -3
- package/dist/{run-main-BlZ5l-X9.js → run-main-DVy6KJTe.js} +88 -85
- package/dist/runner-B7CKBC80.js +1800 -0
- package/dist/runner-BEy5ZGFv.js +1901 -0
- package/dist/runner-Bv0BmJPF.js +1800 -0
- package/dist/runner-ChqVEgPx.js +1901 -0
- package/dist/{sandbox-qt49csTr.js → sandbox-BAChxjC5.js} +627 -157
- package/dist/{sandbox-CPZiaKcS.js → sandbox-DNHDwHw8.js} +628 -158
- package/dist/{sandbox-cli-C6_iNuqO.js → sandbox-cli-9oq67QEg.js} +22 -22
- package/dist/{sandbox-cli-C_wK-KAE.js → sandbox-cli-BiNq9yUe.js} +22 -22
- package/dist/{security-cli-CTTD1vms.js → security-cli-CRg03hvq.js} +28 -28
- package/dist/{security-cli-DRpGF2Yc.js → security-cli-LmBBHnmh.js} +28 -28
- package/dist/{server-context-lyNcqJYD.js → server-context-FwqBRH3K.js} +10 -10
- package/dist/{server-context-39mkstUs.js → server-context-RY7lRaxl.js} +9 -9
- package/dist/{server-node-events-V_G9BRRw.js → server-node-events-BbHOZX3O.js} +48 -43
- package/dist/{server-node-events-o9G18PaE.js → server-node-events-CngNLVL-.js} +50 -45
- package/dist/{service-DOlJdIqe.js → service-BnqdBTAK.js} +8 -4
- package/dist/{service-DDPRbf8a.js → service-DZN7KRok.js} +8 -4
- package/dist/{service-audit-VDRrWefh.js → service-audit-0Eil3ISN.js} +4 -4
- package/dist/{service-audit-CVy00Ze_.js → service-audit-B8KIOe8A.js} +4 -4
- package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-B-tyjp76.js} +14 -14
- package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-BYUb7fov.js} +14 -14
- package/dist/{shared-BnpC3wMU.js → shared-BCdNboU1.js} +3 -3
- package/dist/{shared-CagUDdmp.js → shared-CsAwU6-q.js} +3 -3
- package/dist/{shared-BDk_zC9p.js → shared-Csn6DLBA.js} +5 -5
- package/dist/{shared-C92wo-6f.js → shared-DEanAgja.js} +4 -4
- package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-BrGkh5K7.js} +1 -1
- package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-CucvxYhu.js} +1 -1
- package/dist/{skills-Ccsv3IQq.js → skills-CE7by2IF.js} +151 -8
- package/dist/{skills-_eKGrw9z.js → skills-Dz15dAM4.js} +152 -9
- package/dist/{skills-cli-DqvLjooh.js → skills-cli-B5b75pDK.js} +13 -13
- package/dist/{skills-cli-DUncybht.js → skills-cli-CbCDrYwp.js} +13 -13
- package/dist/{skills-status-Cp2ZFhIx.js → skills-status-B99Us6yS.js} +2 -2
- package/dist/{skills-status-Ck0CCFZG.js → skills-status-ChM7JE47.js} +3 -3
- package/dist/{sqlite-DODNHWJb.js → sqlite-2UsPaJz5.js} +97 -2
- package/dist/{sqlite-cSdsHVEw.js → sqlite-CASnHrgX.js} +97 -1
- package/dist/{sqlite-Bwo2rASR.js → sqlite-CVWiMkGu.js} +97 -1
- package/dist/{sqlite-CpqIbY4-.js → sqlite-CcIWkGaM.js} +97 -1
- package/dist/{status-Bmx9_1C7.js → status-CKuX1-zb.js} +3 -3
- package/dist/{status-CBGgwlTW.js → status-Cm4q6o-I.js} +57 -49
- package/dist/{status-DkJgtvSz.js → status-DD2iqGc9.js} +4 -4
- package/dist/{subsystem-DPnkvS73.js → subsystem-DHfJG4gk.js} +73 -20
- package/dist/{system-cli-9fQ1uLiz.js → system-cli-BVJDR474.js} +87 -15
- package/dist/{system-cli-Gq8OWHFg.js → system-cli-C3Y_9VpI.js} +88 -16
- package/dist/{systemd-Pa7LURHB.js → systemd-DxddcFsa.js} +3 -3
- package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-BVLopJ9O.js} +1 -1
- package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-BThjV1Sr.js} +2 -2
- package/dist/{systemd-linger-6_naJcJp.js → systemd-linger-D3Va1Cv7.js} +2 -2
- package/dist/{systemd-BEWwfwn0.js → systemd-s3S2HVog.js} +3 -3
- package/dist/{table-Bb9gAVIp.js → table-BIk8Aan_.js} +2 -2
- package/dist/{table-cCoGqLsk.js → table-Bvka_vkc.js} +1 -1
- package/dist/{tool-display-DUVhO36P.js → tool-display-DbdMQFZx.js} +2 -2
- package/dist/{tool-display-DNOVCI6J.js → tool-display-kpW5Hg2z.js} +2 -2
- package/dist/{tui-DDVqLwqT.js → tui-B40Z2jMa.js} +120 -14
- package/dist/{tui-cli-CurbazQf.js → tui-cli-Bwa6K7xR.js} +28 -28
- package/dist/{tui-cli-BeN2K38I.js → tui-cli-DD6g7uZb.js} +27 -27
- package/dist/{tui-B9zLJxf6.js → tui-lFMZUnx6.js} +121 -13
- package/dist/{update-Ct9sqJC_.js → update-Bos8PPCG.js} +3 -3
- package/dist/{update--i077azM.js → update-Cg8MtrEr.js} +3 -3
- package/dist/{update-cli-CT5W0kpw.js → update-cli-CC-wTeje.js} +92 -73
- package/dist/{update-cli-C87lNK1S.js → update-cli-CULnXFL_.js} +91 -72
- package/dist/{update-runner-BIttRDyV.js → update-runner-BaLsla0c.js} +11 -11
- package/dist/{update-runner-xbeVkAD9.js → update-runner-Dbsdl5AU.js} +10 -10
- package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
- package/dist/{utils-BTaR--Ln.js → utils-BtIMES3N.js} +1 -1
- package/dist/{webhooks-cli-Db3zyJaw.js → webhooks-cli-ClHLUu_j.js} +21 -13
- package/dist/{webhooks-cli-DUUa8gVY.js → webhooks-cli-DVXr2uyN.js} +21 -13
- package/dist/{widearea-dns-BgYasW6m.js → widearea-dns-C4RnIR9O.js} +3 -3
- package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-Ypwgjpsr.js} +3 -3
- package/dist/{ws-C0k_dhCP.js → ws-BcJt4pcg.js} +24 -2
- package/dist/{ws-DtDKpbLR.js → ws-MC-rTJLe.js} +24 -2
- package/dist/{ws-log-cMNgAyLy.js → ws-log-WrJ4QYu7.js} +1 -1
- package/dist/{ws-log-C6vm_XMA.js → ws-log-lip4ETlm.js} +2 -2
- package/dist/{wsl-rfIr_Sde.js → wsl-BvTIzy-8.js} +5 -3
- package/docs/assets/install-script.svg +1 -0
- package/docs/automation/hooks.md +1 -38
- package/docs/automation/webhook.md +52 -2
- package/docs/channels/discord.md +389 -381
- package/docs/channels/grammy.md +1 -1
- package/docs/channels/imessage.md +229 -218
- package/docs/channels/index.md +1 -0
- package/docs/channels/irc.md +234 -0
- package/docs/channels/msteams.md +2 -0
- package/docs/channels/pairing.md +1 -1
- package/docs/channels/slack.md +295 -415
- package/docs/channels/telegram.md +397 -460
- package/docs/channels/whatsapp.md +338 -310
- package/docs/ci.md +0 -12
- package/docs/cli/hooks.md +1 -14
- package/docs/cli/index.md +6 -1
- package/docs/cli/logs.md +4 -0
- package/docs/cli/onboard.md +33 -0
- package/docs/cli/plugins.md +20 -1
- package/docs/cli/security.md +2 -0
- package/docs/concepts/architecture.md +0 -16
- package/docs/concepts/memory.md +7 -4
- package/docs/concepts/model-providers.md +27 -0
- package/docs/concepts/session-tool.md +1 -0
- package/docs/concepts/system-prompt.md +13 -0
- package/docs/docs.json +18 -12
- package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +229 -0
- package/docs/gateway/configuration-examples.md +9 -2
- package/docs/gateway/configuration-reference.md +2345 -0
- package/docs/gateway/configuration.md +338 -3297
- package/docs/gateway/index.md +162 -238
- package/docs/gateway/openai-http-api.md +1 -0
- package/docs/gateway/openresponses-http-api.md +16 -0
- package/docs/gateway/remote-gateway-readme.md +0 -16
- package/docs/gateway/security/index.md +4 -16
- package/docs/gateway/tools-invoke-http-api.md +26 -1
- package/docs/help/faq.md +9 -0
- package/docs/help/testing.md +11 -0
- package/docs/install/docker.md +18 -0
- package/docs/install/hetzner.md +21 -0
- package/docs/install/installer.md +20 -0
- package/docs/nodes/audio.md +19 -0
- package/docs/platforms/mac/release.md +7 -7
- package/docs/providers/glm.md +3 -3
- package/docs/providers/huggingface.md +209 -0
- package/docs/providers/index.md +3 -0
- package/docs/providers/litellm.md +153 -0
- package/docs/providers/together.md +2 -2
- package/docs/providers/vllm.md +92 -0
- package/docs/providers/zai.md +2 -2
- package/docs/reference/credits.md +4 -28
- package/docs/reference/test.md +2 -1
- package/docs/reference/token-use.md +1 -1
- package/docs/reference/transcript-hygiene.md +18 -0
- package/docs/start/getting-started.md +5 -0
- package/docs/start/onboarding-overview.md +51 -0
- package/docs/start/onboarding.md +1 -0
- package/docs/start/openclaw.md +0 -16
- package/docs/start/wizard-cli-automation.md +17 -0
- package/docs/start/wizard-cli-reference.md +12 -0
- package/docs/start/wizard.md +3 -1
- package/docs/tools/browser.md +6 -0
- package/docs/zh-CN/automation/hooks.md +1 -38
- package/docs/zh-CN/cli/hooks.md +1 -14
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/monitor.test.ts +40 -28
- package/extensions/bluebubbles/src/monitor.ts +0 -4
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +10 -10
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +2 -5
- package/extensions/feishu/src/bot.checkBotMentioned.test.ts +64 -0
- package/extensions/feishu/src/bot.test.ts +265 -0
- package/extensions/feishu/src/bot.ts +73 -18
- package/extensions/feishu/src/channel.test.ts +48 -0
- package/extensions/feishu/src/channel.ts +1 -3
- package/extensions/feishu/src/config-schema.ts +6 -0
- package/extensions/feishu/src/docx.ts +14 -4
- package/extensions/feishu/src/media.test.ts +151 -0
- package/extensions/feishu/src/media.ts +27 -13
- package/extensions/feishu/src/reply-dispatcher.test.ts +116 -0
- package/extensions/feishu/src/reply-dispatcher.ts +124 -67
- package/extensions/feishu/src/streaming-card.ts +223 -0
- package/extensions/feishu/src/targets.test.ts +16 -0
- package/extensions/feishu/src/targets.ts +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/oauth.test.ts +4 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/googlechat/src/channel.ts +3 -20
- package/extensions/googlechat/src/resolve-target.test.ts +138 -0
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/index.ts +17 -0
- package/extensions/irc/openclaw.plugin.json +9 -0
- package/extensions/irc/package.json +14 -0
- package/extensions/irc/src/accounts.ts +268 -0
- package/extensions/irc/src/channel.ts +367 -0
- package/extensions/irc/src/client.test.ts +43 -0
- package/extensions/irc/src/client.ts +439 -0
- package/extensions/irc/src/config-schema.test.ts +27 -0
- package/extensions/irc/src/config-schema.ts +97 -0
- package/extensions/irc/src/control-chars.ts +22 -0
- package/extensions/irc/src/inbound.ts +334 -0
- package/extensions/irc/src/monitor.test.ts +43 -0
- package/extensions/irc/src/monitor.ts +158 -0
- package/extensions/irc/src/normalize.test.ts +46 -0
- package/extensions/irc/src/normalize.ts +117 -0
- package/extensions/irc/src/onboarding.test.ts +118 -0
- package/extensions/irc/src/onboarding.ts +479 -0
- package/extensions/irc/src/policy.test.ts +132 -0
- package/extensions/irc/src/policy.ts +157 -0
- package/extensions/irc/src/probe.ts +64 -0
- package/extensions/irc/src/protocol.test.ts +44 -0
- package/extensions/irc/src/protocol.ts +169 -0
- package/extensions/irc/src/runtime.ts +14 -0
- package/extensions/irc/src/send.ts +99 -0
- package/extensions/irc/src/types.ts +94 -0
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +6 -0
- package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
- package/extensions/matrix/node_modules/.bin/markdown-it.CMD +2 -2
- package/extensions/matrix/node_modules/.bin/markdown-it.ps1 +2 -2
- package/extensions/matrix/package.json +2 -2
- package/extensions/matrix/src/matrix/monitor/media.ts +4 -2
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/index.ts +6 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +2 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +2 -2
- package/extensions/memory-lancedb/package.json +2 -2
- package/extensions/minimax-portal-auth/index.ts +7 -5
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/media-helpers.test.ts +9 -0
- package/extensions/msteams/src/media-helpers.ts +15 -1
- package/extensions/msteams/src/mentions.test.ts +235 -0
- package/extensions/msteams/src/mentions.ts +114 -0
- package/extensions/msteams/src/messenger.test.ts +81 -1
- package/extensions/msteams/src/messenger.ts +11 -2
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -0
- package/extensions/nostr/package.json +2 -2
- package/extensions/open-prose/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/telegram/src/channel.ts +1 -0
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/onboarding.test.ts +5 -0
- package/extensions/twitch/src/outbound.test.ts +17 -6
- package/extensions/twitch/src/outbound.ts +12 -10
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/media-stream.ts +7 -1
- package/extensions/voice-call/src/providers/twilio.test.ts +5 -3
- package/extensions/voice-call/src/providers/twilio.ts +12 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/whatsapp/src/channel.ts +6 -16
- package/extensions/whatsapp/src/resolve-target.test.ts +154 -0
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +26 -22
- package/dist/auth-BcNHFK-i.js +0 -184
- package/dist/auth-DkjJ3pm-.js +0 -184
- package/dist/boolean-M-esQJt6.js +0 -30
- package/dist/bundled/soul-evil/HOOK.md +0 -71
- package/dist/bundled/soul-evil/handler.js +0 -194
- package/dist/cli-B631__JU.js +0 -89
- package/dist/cli-DVhCVZZ6.js +0 -86
- package/dist/config-CI7EpvlP.js +0 -15
- package/dist/constants-DuoCkWRh.js +0 -65
- package/dist/control-ui/assets/index-CnB9IO4a.js.map +0 -1
- package/dist/control-ui/assets/index-DWhx-9JL.css +0 -1
- package/dist/date-time-c6HTX6IW.js +0 -187
- package/dist/frontmatter-xwTm0734.js +0 -105
- package/dist/parse-DqAvJRIf.js +0 -23
- package/dist/parse-duration-De_tAQSe.js +0 -24
- package/dist/parse-timeout-DV8NQQWk.js +0 -16
- package/dist/paths-IivnSNkP.js +0 -51
- package/dist/paths-MnZaxqPw.js +0 -48
- package/dist/paths-uoGO2aiO.js +0 -48
- package/dist/pi-model-discovery-DzFOAbQt.js +0 -20
- package/dist/plugin-sdk/tui/tui-formatters.d.ts +0 -31
- package/dist/session-key-nXYQSv-a.js +0 -167
- package/dist/tailscale-DU6DgqVy.js +0 -225
- package/dist/tailscale-DzJUWmKf.js +0 -252
- package/dist/utils-dp_OM900.js +0 -476
- package/docs/hooks/soul-evil.md +0 -69
- package/docs/zh-CN/hooks/soul-evil.md +0 -72
- package/skills/local-places/SERVER_README.md +0 -101
- package/skills/local-places/SKILL.md +0 -102
- package/skills/local-places/pyproject.toml +0 -21
- package/skills/local-places/src/local_places/__init__.py +0 -2
- package/skills/local-places/src/local_places/google_places.py +0 -314
- package/skills/local-places/src/local_places/main.py +0 -65
- package/skills/local-places/src/local_places/schemas.py +0 -107
- /package/dist/{archive-CXhvR9nU.js → archive-aSMUcOc6.js} +0 -0
- /package/dist/{archive-D0z3LZDK.js → archive-beaSfAzA.js} +0 -0
- /package/dist/{brew-BIrWdDps.js → brew-DlQQMJ3n.js} +0 -0
- /package/dist/{brew-B7YK4ZoL.js → brew-ROHf0-Xp.js} +0 -0
- /package/dist/{cli-utils-PlLcDZlM.js → cli-utils-CRhVAaLV.js} +0 -0
- /package/dist/{cli-utils-R-ECs5cY.js → cli-utils-CodyYLHe.js} +0 -0
- /package/dist/{command-format-BUxhT1xL.js → command-format-qUVxzqYm.js} +0 -0
- /package/dist/{constants-CNTiY-ZN.js → constants-BvQ6S8j5.js} +0 -0
- /package/dist/{errors-D3tYRJWG.js → errors-B91HIDPD.js} +0 -0
- /package/dist/{errors-B0eT3jVv.js → errors-Bv81hF2P.js} +0 -0
- /package/dist/{errors-x4NYs-1P.js → errors-Cojm0Kl7.js} +0 -0
- /package/dist/{format-CaxeRcue.js → format-CL8VOhxX.js} +0 -0
- /package/dist/{format-DLOJPZmo.js → format-DcfK-dwd.js} +0 -0
- /package/dist/{format-duration-CEmFWLyX.js → format-duration--hQihAvf.js} +0 -0
- /package/dist/{format-duration-DCXJx2ba.js → format-duration-84n6_DgO.js} +0 -0
- /package/dist/{format-relative-79_Y1n2Y.js → format-relative-Cywx6ldk.js} +0 -0
- /package/dist/{format-relative-Db7eqEu8.js → format-relative-cegC_FF5.js} +0 -0
- /package/dist/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
- /package/dist/{helpers-DdwqKAAS.js → helpers-ByYj2Aq5.js} +0 -0
- /package/dist/{helpers-CRzoyyXS.js → helpers-CUVSCDJV.js} +0 -0
- /package/dist/{helpers-C89IG08W.js → helpers-HyeZXsnu.js} +0 -0
- /package/dist/{is-main-qJ675wPV.js → is-main-B9A8S9YC.js} +0 -0
- /package/dist/{is-main-WWuz28Ip.js → is-main-BWoXGz7p.js} +0 -0
- /package/dist/{logging-BzvBIA3Y.js → logging-D-Jq2wIo.js} +0 -0
- /package/dist/{logging-CfEk_PnX.js → logging-fywhKCmE.js} +0 -0
- /package/dist/{parse-Cjiudy6x.js → parse-Bw0oH-rT.js} +0 -0
- /package/dist/{parse-log-line-CUrpqe1w.js → parse-log-line-BuRiE-Ij.js} +0 -0
- /package/dist/{parse-log-line-D2UGw0wR.js → parse-log-line-CfVgwy6x.js} +0 -0
- /package/dist/{parse-timeout-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
- /package/dist/{pi-model-discovery-CV2V1HHz.js → pi-model-discovery-DqgqUyAv.js} +0 -0
- /package/dist/{pi-model-discovery-DzEIEgHL.js → pi-model-discovery-EwKVHlZB.js} +0 -0
- /package/dist/{prompts--d-6l5Ln.js → prompts-Bg96reub.js} +0 -0
- /package/dist/{prompts-CXLLIBwP.js → prompts-Dszjy1n_.js} +0 -0
- /package/dist/{redact-BRmQPYDR.js → redact-BIMJ3ntQ.js} +0 -0
- /package/dist/{redact-BHmk44DI.js → redact-BRsnXqwD.js} +0 -0
- /package/dist/{redact-DAKeu7PA.js → redact-UvkXqguc.js} +0 -0
- /package/dist/{status-Cv36yYdi.js → status-C_dMhoE0.js} +0 -0
- /package/dist/{status-Drziap9H.js → status-DCkF_L3U.js} +0 -0
- /package/dist/{systemd-hints-CH4pbCFD.js → systemd-hints-CXNtLw9Q.js} +0 -0
- /package/dist/{tailnet-CL5GtL7t.js → tailnet-DATIFSsY.js} +0 -0
- /package/dist/{tailnet-DGRSvYuQ.js → tailnet-uoFvUSsw.js} +0 -0
- /package/dist/{transcript-events-BlIONGVn.js → transcript-events-BHS7QoRl.js} +0 -0
- /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
- /package/dist/{transcript-events-CZ8CG4ht.js → transcript-events-Ch7wLX-j.js} +0 -0
- /package/dist/{usage-format-6Uar63S0.js → usage-format-Bhl_WCWP.js} +0 -0
- /package/dist/{usage-format-hd37en6b.js → usage-format-CpORtVCG.js} +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/claw +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/claw.CMD +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/claw.ps1 +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/moltbot +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.CMD +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.ps1 +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/pigbot +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.CMD +0 -0
- /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.ps1 +0 -0
package/docs/channels/slack.md
CHANGED
|
@@ -1,26 +1,47 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary: "Slack setup
|
|
3
|
-
read_when:
|
|
2
|
+
summary: "Slack setup and runtime behavior (Socket Mode + HTTP Events API)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up Slack or debugging Slack socket/HTTP mode
|
|
4
5
|
title: "Slack"
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Slack
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
Status: production-ready for DMs + channels via Slack app integrations. Default mode is Socket Mode; HTTP Events API mode is also supported.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
<CardGroup cols={3}>
|
|
13
|
+
<Card title="Pairing" icon="link" href="/channels/pairing">
|
|
14
|
+
Slack DMs default to pairing mode.
|
|
15
|
+
</Card>
|
|
16
|
+
<Card title="Slash commands" icon="terminal" href="/tools/slash-commands">
|
|
17
|
+
Native command behavior and command catalog.
|
|
18
|
+
</Card>
|
|
19
|
+
<Card title="Channel troubleshooting" icon="wrench" href="/channels/troubleshooting">
|
|
20
|
+
Cross-channel diagnostics and repair playbooks.
|
|
21
|
+
</Card>
|
|
22
|
+
</CardGroup>
|
|
12
23
|
|
|
13
|
-
|
|
14
|
-
2. Create an **App Token** (`xapp-...`) and **Bot Token** (`xoxb-...`).
|
|
15
|
-
3. Set tokens for OpenClaw and start the gateway.
|
|
24
|
+
## Quick setup
|
|
16
25
|
|
|
17
|
-
|
|
26
|
+
<Tabs>
|
|
27
|
+
<Tab title="Socket Mode (default)">
|
|
28
|
+
<Steps>
|
|
29
|
+
<Step title="Create Slack app and tokens">
|
|
30
|
+
In Slack app settings:
|
|
31
|
+
|
|
32
|
+
- enable **Socket Mode**
|
|
33
|
+
- create **App Token** (`xapp-...`) with `connections:write`
|
|
34
|
+
- install app and copy **Bot Token** (`xoxb-...`)
|
|
35
|
+
</Step>
|
|
36
|
+
|
|
37
|
+
<Step title="Configure OpenClaw">
|
|
18
38
|
|
|
19
39
|
```json5
|
|
20
40
|
{
|
|
21
41
|
channels: {
|
|
22
42
|
slack: {
|
|
23
43
|
enabled: true,
|
|
44
|
+
mode: "socket",
|
|
24
45
|
appToken: "xapp-...",
|
|
25
46
|
botToken: "xoxb-...",
|
|
26
47
|
},
|
|
@@ -28,143 +49,244 @@ Minimal config:
|
|
|
28
49
|
}
|
|
29
50
|
```
|
|
30
51
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
1. Create a Slack app (From scratch) in [https://api.slack.com/apps](https://api.slack.com/apps).
|
|
34
|
-
2. **Socket Mode** → toggle on. Then go to **Basic Information** → **App-Level Tokens** → **Generate Token and Scopes** with scope `connections:write`. Copy the **App Token** (`xapp-...`).
|
|
35
|
-
3. **OAuth & Permissions** → add bot token scopes (use the manifest below). Click **Install to Workspace**. Copy the **Bot User OAuth Token** (`xoxb-...`).
|
|
36
|
-
4. Optional: **OAuth & Permissions** → add **User Token Scopes** (see the read-only list below). Reinstall the app and copy the **User OAuth Token** (`xoxp-...`).
|
|
37
|
-
5. **Event Subscriptions** → enable events and subscribe to:
|
|
38
|
-
- `message.*` (includes edits/deletes/thread broadcasts)
|
|
39
|
-
- `app_mention`
|
|
40
|
-
- `reaction_added`, `reaction_removed`
|
|
41
|
-
- `member_joined_channel`, `member_left_channel`
|
|
42
|
-
- `channel_rename`
|
|
43
|
-
- `pin_added`, `pin_removed`
|
|
44
|
-
6. Invite the bot to channels you want it to read.
|
|
45
|
-
7. Slash Commands → create `/openclaw` if you use `channels.slack.slashCommand`. If you enable native commands, add one slash command per built-in command (same names as `/help`). Native defaults to off for Slack unless you set `channels.slack.commands.native: true` (global `commands.native` is `"auto"` which leaves Slack off).
|
|
46
|
-
8. App Home → enable the **Messages Tab** so users can DM the bot.
|
|
52
|
+
Env fallback (default account only):
|
|
47
53
|
|
|
48
|
-
|
|
54
|
+
```bash
|
|
55
|
+
SLACK_APP_TOKEN=xapp-...
|
|
56
|
+
SLACK_BOT_TOKEN=xoxb-...
|
|
57
|
+
```
|
|
49
58
|
|
|
50
|
-
|
|
59
|
+
</Step>
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
<Step title="Subscribe app events">
|
|
62
|
+
Subscribe bot events for:
|
|
53
63
|
|
|
54
|
-
|
|
64
|
+
- `app_mention`
|
|
65
|
+
- `message.channels`, `message.groups`, `message.im`, `message.mpim`
|
|
66
|
+
- `reaction_added`, `reaction_removed`
|
|
67
|
+
- `member_joined_channel`, `member_left_channel`
|
|
68
|
+
- `channel_rename`
|
|
69
|
+
- `pin_added`, `pin_removed`
|
|
55
70
|
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
Also enable App Home **Messages Tab** for DMs.
|
|
72
|
+
</Step>
|
|
58
73
|
|
|
59
|
-
|
|
74
|
+
<Step title="Start gateway">
|
|
60
75
|
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
channels: {
|
|
64
|
-
slack: {
|
|
65
|
-
enabled: true,
|
|
66
|
-
appToken: "xapp-...",
|
|
67
|
-
botToken: "xoxb-...",
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
}
|
|
76
|
+
```bash
|
|
77
|
+
openclaw gateway
|
|
71
78
|
```
|
|
72
79
|
|
|
73
|
-
|
|
80
|
+
</Step>
|
|
81
|
+
</Steps>
|
|
74
82
|
|
|
75
|
-
|
|
76
|
-
pins, reactions, emoji, member info). By default this stays read-only: reads
|
|
77
|
-
prefer the user token when present, and writes still use the bot token unless
|
|
78
|
-
you explicitly opt in. Even with `userTokenReadOnly: false`, the bot token stays
|
|
79
|
-
preferred for writes when it is available.
|
|
83
|
+
</Tab>
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
85
|
+
<Tab title="HTTP Events API mode">
|
|
86
|
+
<Steps>
|
|
87
|
+
<Step title="Configure Slack app for HTTP">
|
|
83
88
|
|
|
84
|
-
|
|
89
|
+
- set mode to HTTP (`channels.slack.mode="http"`)
|
|
90
|
+
- copy Slack **Signing Secret**
|
|
91
|
+
- set Event Subscriptions + Interactivity + Slash command Request URL to the same webhook path (default `/slack/events`)
|
|
85
92
|
|
|
86
|
-
|
|
87
|
-
{
|
|
88
|
-
channels: {
|
|
89
|
-
slack: {
|
|
90
|
-
enabled: true,
|
|
91
|
-
appToken: "xapp-...",
|
|
92
|
-
botToken: "xoxb-...",
|
|
93
|
-
userToken: "xoxp-...",
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
}
|
|
97
|
-
```
|
|
93
|
+
</Step>
|
|
98
94
|
|
|
99
|
-
|
|
95
|
+
<Step title="Configure OpenClaw HTTP mode">
|
|
100
96
|
|
|
101
97
|
```json5
|
|
102
98
|
{
|
|
103
99
|
channels: {
|
|
104
100
|
slack: {
|
|
105
101
|
enabled: true,
|
|
106
|
-
|
|
102
|
+
mode: "http",
|
|
107
103
|
botToken: "xoxb-...",
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
signingSecret: "your-signing-secret",
|
|
105
|
+
webhookPath: "/slack/events",
|
|
110
106
|
},
|
|
111
107
|
},
|
|
112
108
|
}
|
|
113
109
|
```
|
|
114
110
|
|
|
115
|
-
|
|
111
|
+
</Step>
|
|
116
112
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
- Write operations (send/edit/delete messages, add/remove reactions, pin/unpin,
|
|
120
|
-
file uploads) use the bot token by default. If `userTokenReadOnly: false` and
|
|
121
|
-
no bot token is available, OpenClaw falls back to the user token.
|
|
113
|
+
<Step title="Use unique webhook paths for multi-account HTTP">
|
|
114
|
+
Per-account HTTP mode is supported.
|
|
122
115
|
|
|
123
|
-
|
|
116
|
+
Give each account a distinct `webhookPath` so registrations do not collide.
|
|
117
|
+
</Step>
|
|
118
|
+
</Steps>
|
|
124
119
|
|
|
125
|
-
|
|
126
|
-
|
|
120
|
+
</Tab>
|
|
121
|
+
</Tabs>
|
|
127
122
|
|
|
128
|
-
##
|
|
123
|
+
## Token model
|
|
129
124
|
|
|
130
|
-
|
|
131
|
-
HTTP mode
|
|
125
|
+
- `botToken` + `appToken` are required for Socket Mode.
|
|
126
|
+
- HTTP mode requires `botToken` + `signingSecret`.
|
|
127
|
+
- Config tokens override env fallback.
|
|
128
|
+
- `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` env fallback applies only to the default account.
|
|
129
|
+
- `userToken` (`xoxp-...`) is config-only (no env fallback) and defaults to read-only behavior (`userTokenReadOnly: true`).
|
|
132
130
|
|
|
133
|
-
|
|
131
|
+
<Tip>
|
|
132
|
+
For actions/directory reads, user token can be preferred when configured. For writes, bot token remains preferred; user-token writes are only allowed when `userTokenReadOnly: false` and bot token is unavailable.
|
|
133
|
+
</Tip>
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
2. **Basic Information** → copy the **Signing Secret**.
|
|
137
|
-
3. **OAuth & Permissions** → install the app and copy the **Bot User OAuth Token** (`xoxb-...`).
|
|
138
|
-
4. **Event Subscriptions** → enable events and set the **Request URL** to your gateway webhook path (default `/slack/events`).
|
|
139
|
-
5. **Interactivity & Shortcuts** → enable and set the same **Request URL**.
|
|
140
|
-
6. **Slash Commands** → set the same **Request URL** for your command(s).
|
|
135
|
+
## Access control and routing
|
|
141
136
|
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
<Tabs>
|
|
138
|
+
<Tab title="DM policy">
|
|
139
|
+
`channels.slack.dm.policy` controls DM access:
|
|
144
140
|
|
|
145
|
-
|
|
141
|
+
- `pairing` (default)
|
|
142
|
+
- `allowlist`
|
|
143
|
+
- `open` (requires `dm.allowFrom` to include `"*"`)
|
|
144
|
+
- `disabled`
|
|
146
145
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
botToken: "xoxb-...",
|
|
154
|
-
signingSecret: "your-signing-secret",
|
|
155
|
-
webhookPath: "/slack/events",
|
|
156
|
-
},
|
|
157
|
-
},
|
|
158
|
-
}
|
|
159
|
-
```
|
|
146
|
+
DM flags:
|
|
147
|
+
|
|
148
|
+
- `dm.enabled` (default true)
|
|
149
|
+
- `dm.allowFrom`
|
|
150
|
+
- `dm.groupEnabled` (group DMs default false)
|
|
151
|
+
- `dm.groupChannels` (optional MPIM allowlist)
|
|
160
152
|
|
|
161
|
-
|
|
162
|
-
`webhookPath` per account so each Slack app can point to its own URL.
|
|
153
|
+
Pairing in DMs uses `openclaw pairing approve slack <code>`.
|
|
163
154
|
|
|
164
|
-
|
|
155
|
+
</Tab>
|
|
165
156
|
|
|
166
|
-
|
|
167
|
-
|
|
157
|
+
<Tab title="Channel policy">
|
|
158
|
+
`channels.slack.groupPolicy` controls channel handling:
|
|
159
|
+
|
|
160
|
+
- `open`
|
|
161
|
+
- `allowlist`
|
|
162
|
+
- `disabled`
|
|
163
|
+
|
|
164
|
+
Channel allowlist lives under `channels.slack.channels`.
|
|
165
|
+
|
|
166
|
+
Runtime note: if `channels.slack` is completely missing (env-only setup) and `channels.defaults.groupPolicy` is unset, runtime falls back to `groupPolicy="open"` and logs a warning.
|
|
167
|
+
|
|
168
|
+
Name/ID resolution:
|
|
169
|
+
|
|
170
|
+
- channel allowlist entries and DM allowlist entries are resolved at startup when token access allows
|
|
171
|
+
- unresolved entries are kept as configured
|
|
172
|
+
|
|
173
|
+
</Tab>
|
|
174
|
+
|
|
175
|
+
<Tab title="Mentions and channel users">
|
|
176
|
+
Channel messages are mention-gated by default.
|
|
177
|
+
|
|
178
|
+
Mention sources:
|
|
179
|
+
|
|
180
|
+
- explicit app mention (`<@botId>`)
|
|
181
|
+
- mention regex patterns (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
|
|
182
|
+
- implicit reply-to-bot thread behavior
|
|
183
|
+
|
|
184
|
+
Per-channel controls (`channels.slack.channels.<id|name>`):
|
|
185
|
+
|
|
186
|
+
- `requireMention`
|
|
187
|
+
- `users` (allowlist)
|
|
188
|
+
- `allowBots`
|
|
189
|
+
- `skills`
|
|
190
|
+
- `systemPrompt`
|
|
191
|
+
- `tools`, `toolsBySender`
|
|
192
|
+
|
|
193
|
+
</Tab>
|
|
194
|
+
</Tabs>
|
|
195
|
+
|
|
196
|
+
## Commands and slash behavior
|
|
197
|
+
|
|
198
|
+
- Native command auto-mode is **off** for Slack (`commands.native: "auto"` does not enable Slack native commands).
|
|
199
|
+
- Enable native Slack command handlers with `channels.slack.commands.native: true` (or global `commands.native: true`).
|
|
200
|
+
- When native commands are enabled, register matching slash commands in Slack (`/<command>` names).
|
|
201
|
+
- If native commands are not enabled, you can run a single configured slash command via `channels.slack.slashCommand`.
|
|
202
|
+
|
|
203
|
+
Default slash command settings:
|
|
204
|
+
|
|
205
|
+
- `enabled: false`
|
|
206
|
+
- `name: "openclaw"`
|
|
207
|
+
- `sessionPrefix: "slack:slash"`
|
|
208
|
+
- `ephemeral: true`
|
|
209
|
+
|
|
210
|
+
Slash sessions use isolated keys:
|
|
211
|
+
|
|
212
|
+
- `agent:<agentId>:slack:slash:<userId>`
|
|
213
|
+
|
|
214
|
+
and still route command execution against the target conversation session (`CommandTargetSessionKey`).
|
|
215
|
+
|
|
216
|
+
## Threading, sessions, and reply tags
|
|
217
|
+
|
|
218
|
+
- DMs route as `direct`; channels as `channel`; MPIMs as `group`.
|
|
219
|
+
- With default `session.dmScope=main`, Slack DMs collapse to agent main session.
|
|
220
|
+
- Channel sessions: `agent:<agentId>:slack:channel:<channelId>`.
|
|
221
|
+
- Thread replies can create thread session suffixes (`:thread:<threadTs>`) when applicable.
|
|
222
|
+
- `channels.slack.thread.historyScope` default is `thread`; `thread.inheritParent` default is `false`.
|
|
223
|
+
- `channels.slack.thread.initialHistoryLimit` controls how many existing thread messages are fetched when a new thread session starts (default `20`; set `0` to disable).
|
|
224
|
+
|
|
225
|
+
Reply threading controls:
|
|
226
|
+
|
|
227
|
+
- `channels.slack.replyToMode`: `off|first|all` (default `off`)
|
|
228
|
+
- `channels.slack.replyToModeByChatType`: per `direct|group|channel`
|
|
229
|
+
- legacy fallback for direct chats: `channels.slack.dm.replyToMode`
|
|
230
|
+
|
|
231
|
+
Manual reply tags are supported:
|
|
232
|
+
|
|
233
|
+
- `[[reply_to_current]]`
|
|
234
|
+
- `[[reply_to:<id>]]`
|
|
235
|
+
|
|
236
|
+
## Media, chunking, and delivery
|
|
237
|
+
|
|
238
|
+
<AccordionGroup>
|
|
239
|
+
<Accordion title="Inbound attachments">
|
|
240
|
+
Slack file attachments are downloaded from Slack-hosted private URLs (token-authenticated request flow) and written to the media store when fetch succeeds and size limits permit.
|
|
241
|
+
|
|
242
|
+
Runtime inbound size cap defaults to `20MB` unless overridden by `channels.slack.mediaMaxMb`.
|
|
243
|
+
|
|
244
|
+
</Accordion>
|
|
245
|
+
|
|
246
|
+
<Accordion title="Outbound text and files">
|
|
247
|
+
- text chunks use `channels.slack.textChunkLimit` (default 4000)
|
|
248
|
+
- `channels.slack.chunkMode="newline"` enables paragraph-first splitting
|
|
249
|
+
- file sends use Slack upload APIs and can include thread replies (`thread_ts`)
|
|
250
|
+
- outbound media cap follows `channels.slack.mediaMaxMb` when configured; otherwise channel sends use MIME-kind defaults from media pipeline
|
|
251
|
+
</Accordion>
|
|
252
|
+
|
|
253
|
+
<Accordion title="Delivery targets">
|
|
254
|
+
Preferred explicit targets:
|
|
255
|
+
|
|
256
|
+
- `user:<id>` for DMs
|
|
257
|
+
- `channel:<id>` for channels
|
|
258
|
+
|
|
259
|
+
Slack DMs are opened via Slack conversation APIs when sending to user targets.
|
|
260
|
+
|
|
261
|
+
</Accordion>
|
|
262
|
+
</AccordionGroup>
|
|
263
|
+
|
|
264
|
+
## Actions and gates
|
|
265
|
+
|
|
266
|
+
Slack actions are controlled by `channels.slack.actions.*`.
|
|
267
|
+
|
|
268
|
+
Available action groups in current Slack tooling:
|
|
269
|
+
|
|
270
|
+
| Group | Default |
|
|
271
|
+
| ---------- | ------- |
|
|
272
|
+
| messages | enabled |
|
|
273
|
+
| reactions | enabled |
|
|
274
|
+
| pins | enabled |
|
|
275
|
+
| memberInfo | enabled |
|
|
276
|
+
| emojiList | enabled |
|
|
277
|
+
|
|
278
|
+
## Events and operational behavior
|
|
279
|
+
|
|
280
|
+
- Message edits/deletes/thread broadcasts are mapped into system events.
|
|
281
|
+
- Reaction add/remove events are mapped into system events.
|
|
282
|
+
- Member join/leave, channel created/renamed, and pin add/remove events are mapped into system events.
|
|
283
|
+
- `channel_id_changed` can migrate channel config keys when `configWrites` is enabled.
|
|
284
|
+
- Channel topic/purpose metadata is treated as untrusted context and can be injected into routing context.
|
|
285
|
+
|
|
286
|
+
## Manifest and scope checklist
|
|
287
|
+
|
|
288
|
+
<AccordionGroup>
|
|
289
|
+
<Accordion title="Slack app manifest example">
|
|
168
290
|
|
|
169
291
|
```json
|
|
170
292
|
{
|
|
@@ -196,14 +318,8 @@ user scopes if you plan to configure a user token.
|
|
|
196
318
|
"channels:history",
|
|
197
319
|
"channels:read",
|
|
198
320
|
"groups:history",
|
|
199
|
-
"groups:read",
|
|
200
|
-
"groups:write",
|
|
201
321
|
"im:history",
|
|
202
|
-
"im:read",
|
|
203
|
-
"im:write",
|
|
204
322
|
"mpim:history",
|
|
205
|
-
"mpim:read",
|
|
206
|
-
"mpim:write",
|
|
207
323
|
"users:read",
|
|
208
324
|
"app_mentions:read",
|
|
209
325
|
"reactions:read",
|
|
@@ -214,21 +330,6 @@ user scopes if you plan to configure a user token.
|
|
|
214
330
|
"commands",
|
|
215
331
|
"files:read",
|
|
216
332
|
"files:write"
|
|
217
|
-
],
|
|
218
|
-
"user": [
|
|
219
|
-
"channels:history",
|
|
220
|
-
"channels:read",
|
|
221
|
-
"groups:history",
|
|
222
|
-
"groups:read",
|
|
223
|
-
"im:history",
|
|
224
|
-
"im:read",
|
|
225
|
-
"mpim:history",
|
|
226
|
-
"mpim:read",
|
|
227
|
-
"users:read",
|
|
228
|
-
"reactions:read",
|
|
229
|
-
"pins:read",
|
|
230
|
-
"emoji:read",
|
|
231
|
-
"search:read"
|
|
232
333
|
]
|
|
233
334
|
}
|
|
234
335
|
},
|
|
@@ -254,321 +355,100 @@ user scopes if you plan to configure a user token.
|
|
|
254
355
|
}
|
|
255
356
|
```
|
|
256
357
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
## Scopes (current vs optional)
|
|
260
|
-
|
|
261
|
-
Slack's Conversations API is type-scoped: you only need the scopes for the
|
|
262
|
-
conversation types you actually touch (channels, groups, im, mpim). See
|
|
263
|
-
[https://docs.slack.dev/apis/web-api/using-the-conversations-api/](https://docs.slack.dev/apis/web-api/using-the-conversations-api/) for the overview.
|
|
264
|
-
|
|
265
|
-
### Bot token scopes (required)
|
|
266
|
-
|
|
267
|
-
- `chat:write` (send/update/delete messages via `chat.postMessage`)
|
|
268
|
-
[https://docs.slack.dev/reference/methods/chat.postMessage](https://docs.slack.dev/reference/methods/chat.postMessage)
|
|
269
|
-
- `im:write` (open DMs via `conversations.open` for user DMs)
|
|
270
|
-
[https://docs.slack.dev/reference/methods/conversations.open](https://docs.slack.dev/reference/methods/conversations.open)
|
|
271
|
-
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
|
272
|
-
[https://docs.slack.dev/reference/methods/conversations.history](https://docs.slack.dev/reference/methods/conversations.history)
|
|
273
|
-
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
|
274
|
-
[https://docs.slack.dev/reference/methods/conversations.info](https://docs.slack.dev/reference/methods/conversations.info)
|
|
275
|
-
- `users:read` (user lookup)
|
|
276
|
-
[https://docs.slack.dev/reference/methods/users.info](https://docs.slack.dev/reference/methods/users.info)
|
|
277
|
-
- `reactions:read`, `reactions:write` (`reactions.get` / `reactions.add`)
|
|
278
|
-
[https://docs.slack.dev/reference/methods/reactions.get](https://docs.slack.dev/reference/methods/reactions.get)
|
|
279
|
-
[https://docs.slack.dev/reference/methods/reactions.add](https://docs.slack.dev/reference/methods/reactions.add)
|
|
280
|
-
- `pins:read`, `pins:write` (`pins.list` / `pins.add` / `pins.remove`)
|
|
281
|
-
[https://docs.slack.dev/reference/scopes/pins.read](https://docs.slack.dev/reference/scopes/pins.read)
|
|
282
|
-
[https://docs.slack.dev/reference/scopes/pins.write](https://docs.slack.dev/reference/scopes/pins.write)
|
|
283
|
-
- `emoji:read` (`emoji.list`)
|
|
284
|
-
[https://docs.slack.dev/reference/scopes/emoji.read](https://docs.slack.dev/reference/scopes/emoji.read)
|
|
285
|
-
- `files:write` (uploads via `files.uploadV2`)
|
|
286
|
-
[https://docs.slack.dev/messaging/working-with-files/#upload](https://docs.slack.dev/messaging/working-with-files/#upload)
|
|
287
|
-
|
|
288
|
-
### User token scopes (optional, read-only by default)
|
|
289
|
-
|
|
290
|
-
Add these under **User Token Scopes** if you configure `channels.slack.userToken`.
|
|
291
|
-
|
|
292
|
-
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
|
293
|
-
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
|
294
|
-
- `users:read`
|
|
295
|
-
- `reactions:read`
|
|
296
|
-
- `pins:read`
|
|
297
|
-
- `emoji:read`
|
|
298
|
-
- `search:read`
|
|
299
|
-
|
|
300
|
-
### Not needed today (but likely future)
|
|
301
|
-
|
|
302
|
-
- `mpim:write` (only if we add group-DM open/DM start via `conversations.open`)
|
|
303
|
-
- `groups:write` (only if we add private-channel management: create/rename/invite/archive)
|
|
304
|
-
- `chat:write.public` (only if we want to post to channels the bot isn't in)
|
|
305
|
-
[https://docs.slack.dev/reference/scopes/chat.write.public](https://docs.slack.dev/reference/scopes/chat.write.public)
|
|
306
|
-
- `users:read.email` (only if we need email fields from `users.info`)
|
|
307
|
-
[https://docs.slack.dev/changelog/2017-04-narrowing-email-access](https://docs.slack.dev/changelog/2017-04-narrowing-email-access)
|
|
308
|
-
- `files:read` (only if we start listing/reading file metadata)
|
|
309
|
-
|
|
310
|
-
## Config
|
|
311
|
-
|
|
312
|
-
Slack uses Socket Mode only (no HTTP webhook server). Provide both tokens:
|
|
313
|
-
|
|
314
|
-
```json
|
|
315
|
-
{
|
|
316
|
-
"slack": {
|
|
317
|
-
"enabled": true,
|
|
318
|
-
"botToken": "xoxb-...",
|
|
319
|
-
"appToken": "xapp-...",
|
|
320
|
-
"groupPolicy": "allowlist",
|
|
321
|
-
"dm": {
|
|
322
|
-
"enabled": true,
|
|
323
|
-
"policy": "pairing",
|
|
324
|
-
"allowFrom": ["U123", "U456", "*"],
|
|
325
|
-
"groupEnabled": false,
|
|
326
|
-
"groupChannels": ["G123"],
|
|
327
|
-
"replyToMode": "all"
|
|
328
|
-
},
|
|
329
|
-
"channels": {
|
|
330
|
-
"C123": { "allow": true, "requireMention": true },
|
|
331
|
-
"#general": {
|
|
332
|
-
"allow": true,
|
|
333
|
-
"requireMention": true,
|
|
334
|
-
"users": ["U123"],
|
|
335
|
-
"skills": ["search", "docs"],
|
|
336
|
-
"systemPrompt": "Keep answers short."
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
"reactionNotifications": "own",
|
|
340
|
-
"reactionAllowlist": ["U123"],
|
|
341
|
-
"replyToMode": "off",
|
|
342
|
-
"actions": {
|
|
343
|
-
"reactions": true,
|
|
344
|
-
"messages": true,
|
|
345
|
-
"pins": true,
|
|
346
|
-
"memberInfo": true,
|
|
347
|
-
"emojiList": true
|
|
348
|
-
},
|
|
349
|
-
"slashCommand": {
|
|
350
|
-
"enabled": true,
|
|
351
|
-
"name": "openclaw",
|
|
352
|
-
"sessionPrefix": "slack:slash",
|
|
353
|
-
"ephemeral": true
|
|
354
|
-
},
|
|
355
|
-
"textChunkLimit": 4000,
|
|
356
|
-
"mediaMaxMb": 20
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
Tokens can also be supplied via env vars:
|
|
362
|
-
|
|
363
|
-
- `SLACK_BOT_TOKEN`
|
|
364
|
-
- `SLACK_APP_TOKEN`
|
|
365
|
-
|
|
366
|
-
Ack reactions are controlled globally via `messages.ackReaction` +
|
|
367
|
-
`messages.ackReactionScope`. Use `messages.removeAckAfterReply` to clear the
|
|
368
|
-
ack reaction after the bot replies.
|
|
369
|
-
|
|
370
|
-
## Limits
|
|
371
|
-
|
|
372
|
-
- Outbound text is chunked to `channels.slack.textChunkLimit` (default 4000).
|
|
373
|
-
- Optional newline chunking: set `channels.slack.chunkMode="newline"` to split on blank lines (paragraph boundaries) before length chunking.
|
|
374
|
-
- Media uploads are capped by `channels.slack.mediaMaxMb` (default 20).
|
|
358
|
+
</Accordion>
|
|
375
359
|
|
|
376
|
-
|
|
360
|
+
<Accordion title="Optional user-token scopes (read operations)">
|
|
361
|
+
If you configure `channels.slack.userToken`, typical read scopes are:
|
|
377
362
|
|
|
378
|
-
|
|
363
|
+
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
|
364
|
+
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
|
365
|
+
- `users:read`
|
|
366
|
+
- `reactions:read`
|
|
367
|
+
- `pins:read`
|
|
368
|
+
- `emoji:read`
|
|
369
|
+
- `search:read` (if you depend on Slack search reads)
|
|
379
370
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
| `off` | **Default.** Reply in main channel. Only thread if the triggering message was already in a thread. |
|
|
383
|
-
| `first` | First reply goes to thread (under the triggering message), subsequent replies go to main channel. Useful for keeping context visible while avoiding thread clutter. |
|
|
384
|
-
| `all` | All replies go to thread. Keeps conversations contained but may reduce visibility. |
|
|
371
|
+
</Accordion>
|
|
372
|
+
</AccordionGroup>
|
|
385
373
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
### Per-chat-type threading
|
|
389
|
-
|
|
390
|
-
You can configure different threading behavior per chat type by setting `channels.slack.replyToModeByChatType`:
|
|
391
|
-
|
|
392
|
-
```json5
|
|
393
|
-
{
|
|
394
|
-
channels: {
|
|
395
|
-
slack: {
|
|
396
|
-
replyToMode: "off", // default for channels
|
|
397
|
-
replyToModeByChatType: {
|
|
398
|
-
direct: "all", // DMs always thread
|
|
399
|
-
group: "first", // group DMs/MPIM thread first reply
|
|
400
|
-
},
|
|
401
|
-
},
|
|
402
|
-
},
|
|
403
|
-
}
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
Supported chat types:
|
|
407
|
-
|
|
408
|
-
- `direct`: 1:1 DMs (Slack `im`)
|
|
409
|
-
- `group`: group DMs / MPIMs (Slack `mpim`)
|
|
410
|
-
- `channel`: standard channels (public/private)
|
|
411
|
-
|
|
412
|
-
Precedence:
|
|
413
|
-
|
|
414
|
-
1. `replyToModeByChatType.<chatType>`
|
|
415
|
-
2. `replyToMode`
|
|
416
|
-
3. Provider default (`off`)
|
|
374
|
+
## Troubleshooting
|
|
417
375
|
|
|
418
|
-
|
|
376
|
+
<AccordionGroup>
|
|
377
|
+
<Accordion title="No replies in channels">
|
|
378
|
+
Check, in order:
|
|
419
379
|
|
|
420
|
-
|
|
380
|
+
- `groupPolicy`
|
|
381
|
+
- channel allowlist (`channels.slack.channels`)
|
|
382
|
+
- `requireMention`
|
|
383
|
+
- per-channel `users` allowlist
|
|
421
384
|
|
|
422
|
-
|
|
385
|
+
Useful commands:
|
|
423
386
|
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
replyToMode: "off",
|
|
429
|
-
replyToModeByChatType: { direct: "all" },
|
|
430
|
-
},
|
|
431
|
-
},
|
|
432
|
-
}
|
|
387
|
+
```bash
|
|
388
|
+
openclaw channels status --probe
|
|
389
|
+
openclaw logs --follow
|
|
390
|
+
openclaw doctor
|
|
433
391
|
```
|
|
434
392
|
|
|
435
|
-
|
|
393
|
+
</Accordion>
|
|
436
394
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
channels: {
|
|
440
|
-
slack: {
|
|
441
|
-
replyToMode: "off",
|
|
442
|
-
replyToModeByChatType: { group: "first" },
|
|
443
|
-
},
|
|
444
|
-
},
|
|
445
|
-
}
|
|
446
|
-
```
|
|
395
|
+
<Accordion title="DM messages ignored">
|
|
396
|
+
Check:
|
|
447
397
|
|
|
448
|
-
|
|
398
|
+
- `channels.slack.dm.enabled`
|
|
399
|
+
- `channels.slack.dm.policy`
|
|
400
|
+
- pairing approvals / allowlist entries
|
|
449
401
|
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
channels: {
|
|
453
|
-
slack: {
|
|
454
|
-
replyToMode: "first",
|
|
455
|
-
replyToModeByChatType: { direct: "off", group: "off" },
|
|
456
|
-
},
|
|
457
|
-
},
|
|
458
|
-
}
|
|
402
|
+
```bash
|
|
403
|
+
openclaw pairing list slack
|
|
459
404
|
```
|
|
460
405
|
|
|
461
|
-
|
|
406
|
+
</Accordion>
|
|
462
407
|
|
|
463
|
-
|
|
408
|
+
<Accordion title="Socket mode not connecting">
|
|
409
|
+
Validate bot + app tokens and Socket Mode enablement in Slack app settings.
|
|
410
|
+
</Accordion>
|
|
464
411
|
|
|
465
|
-
|
|
466
|
-
|
|
412
|
+
<Accordion title="HTTP mode not receiving events">
|
|
413
|
+
Validate:
|
|
467
414
|
|
|
468
|
-
|
|
415
|
+
- signing secret
|
|
416
|
+
- webhook path
|
|
417
|
+
- Slack Request URLs (Events + Interactivity + Slash Commands)
|
|
418
|
+
- unique `webhookPath` per HTTP account
|
|
469
419
|
|
|
470
|
-
|
|
471
|
-
- Channels map to `agent:<agentId>:slack:channel:<channelId>` sessions.
|
|
472
|
-
- Slash commands use `agent:<agentId>:slack:slash:<userId>` sessions (prefix configurable via `channels.slack.slashCommand.sessionPrefix`).
|
|
473
|
-
- If Slack doesn’t provide `channel_type`, OpenClaw infers it from the channel ID prefix (`D`, `C`, `G`) and defaults to `channel` to keep session keys stable.
|
|
474
|
-
- Native command registration uses `commands.native` (global default `"auto"` → Slack off) and can be overridden per-workspace with `channels.slack.commands.native`. Text commands require standalone `/...` messages and can be disabled with `commands.text: false`. Slack slash commands are managed in the Slack app and are not removed automatically. Use `commands.useAccessGroups: false` to bypass access-group checks for commands.
|
|
475
|
-
- Full command list + config: [Slash commands](/tools/slash-commands)
|
|
420
|
+
</Accordion>
|
|
476
421
|
|
|
477
|
-
|
|
422
|
+
<Accordion title="Native/slash commands not firing">
|
|
423
|
+
Verify whether you intended:
|
|
478
424
|
|
|
479
|
-
-
|
|
480
|
-
-
|
|
481
|
-
- To allow anyone: set `channels.slack.dm.policy="open"` and `channels.slack.dm.allowFrom=["*"]`.
|
|
482
|
-
- `channels.slack.dm.allowFrom` accepts user IDs, @handles, or emails (resolved at startup when tokens allow). The wizard accepts usernames and resolves them to ids during setup when tokens allow.
|
|
425
|
+
- native command mode (`channels.slack.commands.native: true`) with matching slash commands registered in Slack
|
|
426
|
+
- or single slash command mode (`channels.slack.slashCommand.enabled: true`)
|
|
483
427
|
|
|
484
|
-
|
|
428
|
+
Also check `commands.useAccessGroups` and channel/user allowlists.
|
|
485
429
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
- If you only set `SLACK_BOT_TOKEN`/`SLACK_APP_TOKEN` and never create a `channels.slack` section,
|
|
489
|
-
the runtime defaults `groupPolicy` to `open`. Add `channels.slack.groupPolicy`,
|
|
490
|
-
`channels.defaults.groupPolicy`, or a channel allowlist to lock it down.
|
|
491
|
-
- The configure wizard accepts `#channel` names and resolves them to IDs when possible
|
|
492
|
-
(public + private); if multiple matches exist, it prefers the active channel.
|
|
493
|
-
- On startup, OpenClaw resolves channel/user names in allowlists to IDs (when tokens allow)
|
|
494
|
-
and logs the mapping; unresolved entries are kept as typed.
|
|
495
|
-
- To allow **no channels**, set `channels.slack.groupPolicy: "disabled"` (or keep an empty allowlist).
|
|
430
|
+
</Accordion>
|
|
431
|
+
</AccordionGroup>
|
|
496
432
|
|
|
497
|
-
|
|
433
|
+
## Configuration reference pointers
|
|
498
434
|
|
|
499
|
-
|
|
500
|
-
- `requireMention`: mention gating for the channel.
|
|
501
|
-
- `tools`: optional per-channel tool policy overrides (`allow`/`deny`/`alsoAllow`).
|
|
502
|
-
- `toolsBySender`: optional per-sender tool policy overrides within the channel (keys are sender ids/@handles/emails; `"*"` wildcard supported).
|
|
503
|
-
- `allowBots`: allow bot-authored messages in this channel (default: false).
|
|
504
|
-
- `users`: optional per-channel user allowlist.
|
|
505
|
-
- `skills`: skill filter (omit = all skills, empty = none).
|
|
506
|
-
- `systemPrompt`: extra system prompt for the channel (combined with topic/purpose).
|
|
507
|
-
- `enabled`: set `false` to disable the channel.
|
|
508
|
-
|
|
509
|
-
## Delivery targets
|
|
510
|
-
|
|
511
|
-
Use these with cron/CLI sends:
|
|
512
|
-
|
|
513
|
-
- `user:<id>` for DMs
|
|
514
|
-
- `channel:<id>` for channels
|
|
515
|
-
|
|
516
|
-
## Tool actions
|
|
517
|
-
|
|
518
|
-
Slack tool actions can be gated with `channels.slack.actions.*`:
|
|
519
|
-
|
|
520
|
-
| Action group | Default | Notes |
|
|
521
|
-
| ------------ | ------- | ---------------------- |
|
|
522
|
-
| reactions | enabled | React + list reactions |
|
|
523
|
-
| messages | enabled | Read/send/edit/delete |
|
|
524
|
-
| pins | enabled | Pin/unpin/list |
|
|
525
|
-
| memberInfo | enabled | Member info |
|
|
526
|
-
| emojiList | enabled | Custom emoji list |
|
|
527
|
-
|
|
528
|
-
## Security notes
|
|
529
|
-
|
|
530
|
-
- Writes default to the bot token so state-changing actions stay scoped to the
|
|
531
|
-
app's bot permissions and identity.
|
|
532
|
-
- Setting `userTokenReadOnly: false` allows the user token to be used for write
|
|
533
|
-
operations when a bot token is unavailable, which means actions run with the
|
|
534
|
-
installing user's access. Treat the user token as highly privileged and keep
|
|
535
|
-
action gates and allowlists tight.
|
|
536
|
-
- If you enable user-token writes, make sure the user token includes the write
|
|
537
|
-
scopes you expect (`chat:write`, `reactions:write`, `pins:write`,
|
|
538
|
-
`files:write`) or those operations will fail.
|
|
539
|
-
|
|
540
|
-
## Troubleshooting
|
|
541
|
-
|
|
542
|
-
Run this ladder first:
|
|
543
|
-
|
|
544
|
-
```bash
|
|
545
|
-
openclaw status
|
|
546
|
-
openclaw gateway status
|
|
547
|
-
openclaw logs --follow
|
|
548
|
-
openclaw doctor
|
|
549
|
-
openclaw channels status --probe
|
|
550
|
-
```
|
|
551
|
-
|
|
552
|
-
Then confirm DM pairing state if needed:
|
|
553
|
-
|
|
554
|
-
```bash
|
|
555
|
-
openclaw pairing list slack
|
|
556
|
-
```
|
|
435
|
+
Primary reference:
|
|
557
436
|
|
|
558
|
-
|
|
437
|
+
- [Configuration reference - Slack](/gateway/configuration-reference#slack)
|
|
559
438
|
|
|
560
|
-
-
|
|
561
|
-
- DMs ignored: sender not approved when `channels.slack.dm.policy="pairing"`.
|
|
562
|
-
- API errors (`missing_scope`, `not_in_channel`, auth failures): bot/app tokens or Slack scopes are incomplete.
|
|
439
|
+
High-signal Slack fields:
|
|
563
440
|
|
|
564
|
-
|
|
441
|
+
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
|
|
442
|
+
- DM access: `dm.enabled`, `dm.policy`, `dm.allowFrom`, `dm.groupEnabled`, `dm.groupChannels`
|
|
443
|
+
- channel access: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
|
|
444
|
+
- threading/history: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
|
445
|
+
- delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`
|
|
446
|
+
- ops/features: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
|
|
565
447
|
|
|
566
|
-
##
|
|
448
|
+
## Related
|
|
567
449
|
|
|
568
|
-
-
|
|
569
|
-
-
|
|
570
|
-
-
|
|
571
|
-
-
|
|
572
|
-
-
|
|
573
|
-
- For the Slack tool, reaction removal semantics are in [/tools/reactions](/tools/reactions).
|
|
574
|
-
- Attachments are downloaded to the media store when permitted and under the size limit.
|
|
450
|
+
- [Pairing](/channels/pairing)
|
|
451
|
+
- [Channel routing](/channels/channel-routing)
|
|
452
|
+
- [Troubleshooting](/channels/troubleshooting)
|
|
453
|
+
- [Configuration](/gateway/configuration)
|
|
454
|
+
- [Slash commands](/tools/slash-commands)
|