scv-clawbot 0.2.1

WeChat ClawBot bridge for the SCV daemon
Documentation

SCV WeChat Channel (ClawBot)

The WeChat channel for the SCV daemon: an iLink ClawBot transport for the shared bridge in scv-channels.

login(base_url, account) renders the QR code and saves credentials without printing the token. run_supervised(token, base_url, account, workspace, socket, tool_owner, cancellation, report, link) runs one account until cancelled; tool_owner carries the owner's iLink user_id, recorded at QR login, and link connects the account to the daemon's hub (scv_channels::hub). Health turns true only after an authenticated, validated getupdates response. HTTP redirects are disabled, including during login, and responses are bounded before parsing.

state::Account preserves old credentials while optionally recording bot_id and user_id; it intentionally has no Debug implementation. Its fingerprint covers the normalized API origin and the authenticated bot/user IDs, so a token rotation for the same identity preserves delivery state; credentials without both IDs are bound to their token.

Credentials live in <SCV home>/credentials/wechat, settings in [channels.wechat.<account>] of <SCV home>/config.toml, and delivery state in <SCV home>/state/channels/wechat. Old 0.1.9 standalone ClawBot processes do not honor the account locks; stop them manually before enabling the supervised component.

iLink accepts one message per context token, so only the first part of a reply carries it and later parts go out unprompted. Poll batches above 4096 messages are rejected before any message executes or the cursor advances.

Focused verification:

cargo test -p scv-clawbot --locked
cargo clippy -p scv-clawbot --all-targets --locked -- -D warnings
cargo fmt -p scv-clawbot --check

Tests use isolated temporary stores and local HTTP/Unix sockets, with no process environment mutation and no live WeChat credentials.