Skip to content

Add Resend migration verifier CLI#669

Merged
jaeyunha merged 1 commit into
stagingfrom
issue-643-migrate-from-resend
Jun 19, 2026
Merged

Add Resend migration verifier CLI#669
jaeyunha merged 1 commit into
stagingfrom
issue-643-migrate-from-resend

Conversation

@jaeyunha

Copy link
Copy Markdown
Member

Closes #643.

Summary

  • Adds private in-tree @opensend/migrate-from-resend package with migrate-from-resend CLI.
  • Scans a target repo for common Resend SDK imports/calls, Resend env vars, and raw REST endpoint usage.
  • Maps findings through a committed compatibility matrix with honest full, partial, unsupported, and unknown statuses.
  • Generates a shareable Markdown report with discovered usage, status counts, env/base URL diffs, caveats, evidence references, and rerun commands.
  • Adds sandbox request planning only via --sandbox-plan --base-url ... --api-key ...; no network calls, no sends, and no contact/domain/customer mutations.
  • Adds public “Migrate from Resend” docs page and regenerates /docs/llms.txt.

v1 boundaries / caveats

  • Static scan is advisory and regex-based; dynamic wrappers/generated endpoints may need manual review.
  • No codemods or automatic rewrites.
  • No historical data migration from Resend.
  • No npm publishing in this PR; package is private: true with no publish hook.
  • No live sends/mutations. Sandbox mode renders planned requests only and redacts auth.
  • CLI fails closed unless a target directory is supplied; --sandbox-plan requires explicit --base-url or OPENSEND_BASE_URL.

Report / dry-run evidence

Manual fixture command:

bun run --cwd packages/migrate-from-resend migrate-from-resend tests/fixtures/resend-app \
  --sandbox-plan \
  --base-url http://localhost:3015 \
  --api-key os_test \
  --output /tmp/opensend-migrate-report.md

Observed output:

Scanned 4 files, found 22 Resend compatibility findings (12 partial/unsupported/unknown).
Summary in report: Full 10, Partial 7, Unsupported 1, Unknown 4.
Sandbox request plan entries are `planned-not-sent` and use `Authorization: Bearer <redacted>`.

Guardrail evidence:

bun run --cwd packages/migrate-from-resend migrate-from-resend
→ target-dir is required; pass the application repository you want to scan

Validation

  • bun run --cwd packages/migrate-from-resend test ✅ (4 files / 9 tests)
  • bun run --cwd packages/migrate-from-resend typecheck
  • bun run docs:generate ✅ (217 markdown docs indexed)
  • bun test tests/docs-content.test.ts ✅ (14 tests)
  • make check ✅ (TypeCheck + Biome over 829 files)
  • make test ✅ (215 files passed, 3 skipped; 1754 tests passed, 10 skipped)
  • git diff --check HEAD~1..HEAD
  • Independent code-review lane: APPROVE, 0 issues.
  • Independent architecture recheck: CLEAR after fixing same-line unknown SDK-call false negative.

@jaeyunha jaeyunha merged commit 4990082 into staging Jun 19, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant