Adds a dev-only harness that closes the "needs a live daemon" gap for the new
chat wire paths, fund-safely on an isolated regtest chain:
- tools/chat_regtest_smoke.cpp (+ an EXCLUDE_FROM_ALL CMake target): a small
driver linking the chat library — derive identity / compose a message or a
Control memo / extract + decrypt harvested memos. Secret-safe.
- tools/chat_regtest.py: starts a throwaway regtest dragonxd (own datadir,
-regtest, no network — nothing touches ~/.hush), funds a shielded note, then
drives a full round-trip through the real daemon: compose -> z_sendmany the
memo outputs -> mine -> z_listreceivedbyaddress -> feed back to the driver.
Verified on dragonxd v1.3.0: a chunked 1529-byte message (8 memo outputs in one
tx) and a self-addressed Control(del) memo both round-trip verbatim and
reassemble/extract correctly — i.e. the real node accepts a multi-output 0-value
chat tx and returns its memos intact. Paths are env-overridable
(DRAGONX_REGTEST_DAEMON_DIR / DRAGONX_CHAT_SMOKE / DRAGONX_REGTEST_RUN).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>