Changelog
Release history for @opencoredev/sms-sdk.
This page summarizes CHANGELOG.md in the repository, which is the canonical record.
0.1.0 (unreleased)
First public version.
providerOptionsonsend()input: typed per-adapter provider parameters plus an unvalidatedextrapassthrough. Unknown keys, wrong types, and parameters the SDK sets throw before any request. Each entry applies only to its own adapter, is listed invalidate().providerOptionsFor, and is part of the idempotency fingerprint. Adapters declare options withSmsAdapter.providerOptionsand receive them asAdapterMessage.providerFields.createSmsClientwithsend(),validate(), andcapabilities().send()resolves only on provider acceptance. Rejections and unknown outcomes throw typed errors withcode,retrySafe, and redactedattempts.- Adapters: Twilio (supported), Telnyx (supported), Plivo (partial), and Vonage Messages API with Basic or JWT auth (partial).
- Opt-in fallback (
fallback: "on-known-rejection") forauth,rate_limited,sender, andaccountrejections only, never after an unknown outcome. - Rate-limit retries with exponential backoff, full jitter, and bounded
Retry-After. A 429 counts as a rate limit only with the provider’s documented rate-limit error. Any other 429 is an unknown outcome. - Per-request timeout and
AbortSignalsupport. - The
IdempotencyStorecontract with atomicreserveand owner-checkedfinalize, plusmemoryIdempotencyStore(). - GSM-7 and UCS-2 segment estimates, including extension characters and surrogate pairs at segment boundaries.
/webhooks: verified, normalized events for all four providers, with dedupe keys and STOP/HELP detection./testing: thememory()adapter,mockFetch(), signed webhook request builders, andrunSmsAdapterContract().sms-sdk doctor: a dry-run configuration check with a gated--livesend.