#!/usr/bin/env bash # 共用模块必须逐字节相同 —— 见 docs/PLUGIN-CONTRACT.md 第六节。 # # 一侧改了另一侧没改,两个平台的行为就会悄悄分叉:同一封邮件在 opencode 那边 # 标了已读、在 DSH 那边没标,而两处代码看起来都"对"。 set -euo pipefail A=plugins/opencode-mail-bridge B=plugins/dsh-mail-bridge fail=0 for f in relay-dedup inbox-format session-snapshot workspace model-scope catchup; do if ! diff -q "$A/lib/$f.js" "$B/lib/$f.js" >/dev/null 2>&1; then echo "共用模块已分叉:lib/$f.js" >&2 diff "$A/lib/$f.js" "$B/lib/$f.js" | head -20 >&2 fail=1 fi done for f in inbox-format session-snapshot workspace model-scope catchup; do if ! diff -q "$A/test/$f.test.mjs" "$B/test/$f.test.mjs" >/dev/null 2>&1; then echo "共用测试已分叉:test/$f.test.mjs" >&2 fail=1 fi done [[ $fail -eq 0 ]] && echo " 共用模块两侧同源" || exit 1