SDK Overview
morse-sdk is the TypeScript client for the Morse decentralized CMS protocol. It packages Sui transaction building, Walrus blob upload and download, and Seal threshold encryption behind a small, swappable adapter pattern.
morse-sdk version. Each release pins the latest packageId and originalPackageId into morseConfig(). Publications and other objects created under a previous contract instance remain on-chain but belong to the old package; they are not migrated to the new deployment.Getting started
Install the SDK and its peer dependencies, then wire a wallet adapter and Walrus configuration for your environment. See SDK Setup for installation and configuration, and SDK Cookbooks for step-by-step guides.
Capabilities
MorseError. Narrow by class + property (e.g. ContractAbortError.reason); no string parsing.addEntryFromBytes collapses register + certify + add-entry into 2 transactions instead of 3 via a flow-aware Walrus capability.scripts/phase-N-*.ts run against live testnet (real WAL, real SUI) to verify the public surface on every release.Adapter architecture
The SDK is built around four swappable abstractions. Pick the shipped default or implement the interface against whatever signing / storage / encryption stack you already have.
The rest of the SDK (functions like createPublication, addEntryFromBytes, the RpcPublicationReader) composes these adapters. Swapping an adapter requires no changes to call sites.
Known limitations
- gRPC client only. Reader and adapter interfaces are typed against
SuiGrpcClientfrom@mysten/sui/grpc. The SDK makes no JSON-RPC calls. - No encrypted publish path. The Move contract hardcodes
encrypted=falseonpublish_from_draftandpublish_direct. Encrypted content stays as drafts. See SDK Cookbooks → Encrypted content for the full lifecycle. - Only the
Publisheraccess policy is enforced. TheSubscriptionpolicy is not yet active. listEntriesis not sorted chronologically. Results follow on-chain storage order. Sort byentry.idfor insertion order.- zkLogin support is untested. The decoder is included, but Walrus and Seal
SessionKeyflows have not been verified with zkLogin signatures. Use keypair or passkey accounts until you have tested your setup.
encrypted=false on publish_from_draft and publish_direct, so published revisions are always unencrypted and public. See Entries → Adding an entry for the full explanation.