typescript-sdk
Original:🇺🇸 English
Translated
Use the @contextvm/sdk TypeScript SDK effectively. Reference for core interfaces, signers, relay handlers, transports, encryption, logging, and SDK patterns. Use when implementing SDK components, extending interfaces, configuring transports, or debugging SDK usage.
15installs
Sourcecontextvm/cvmi
Added on
NPX Install
npx skill4agent add contextvm/cvmi typescript-sdkTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →ContextVM TypeScript SDK
Reference guide for using effectively.
@contextvm/sdkInstallation
bash
npm install @contextvm/sdk
# or
bun add @contextvm/sdkCore Imports
typescript
// Transports
import { NostrClientTransport, NostrServerTransport } from "@contextvm/sdk";
// Signers
import { PrivateKeySigner } from "@contextvm/sdk";
// Relay Handlers
import { ApplesauceRelayPool } from "@contextvm/sdk";
// Components
import { NostrMCPProxy, NostrMCPGateway } from "@contextvm/sdk";
// Core types and utilities
import {
EncryptionMode,
CTXVM_MESSAGES_KIND,
SERVER_ANNOUNCEMENT_KIND,
createLogger,
} from "@contextvm/sdk";Core Interfaces
NostrSigner
Abstracts cryptographic signing:
typescript
interface NostrSigner {
getPublicKey(): Promise<string>;
signEvent(event: EventTemplate): Promise<NostrEvent>;
nip44?: {
encrypt(pubkey: string, plaintext: string): Promise<string>;
decrypt(pubkey: string, ciphertext: string): Promise<string>;
};
}Implement for custom key management (hardware wallets, browser extensions, etc.).
RelayHandler
Manages relay connections:
typescript
interface RelayHandler {
connect(): Promise<void>;
disconnect(relayUrls?: string[]): Promise<void>;
publish(event: NostrEvent): Promise<void>;
subscribe(
filters: Filter[],
onEvent: (event: NostrEvent) => void,
onEose?: () => void,
): Promise<void>;
unsubscribe(): void;
}Must be non-blocking - returns immediately.
subscribe()Signers
PrivateKeySigner
Default signer using raw private key:
typescript
const signer = new PrivateKeySigner("32-byte-hex-private-key");
const pubkey = await signer.getPublicKey();Security: Never hardcode keys. Use environment variables.
Custom Signers
Implement for:
NostrSigner- Browser extensions (NIP-07)
- Hardware wallets
- Remote signing services
- Secure enclaves
See for examples.
references/custom-signers.mdRelay Handlers
ApplesauceRelayPool (Recommended)
Production-grade relay management:
typescript
const pool = new ApplesauceRelayPool([
"wss://relay.contextvm.org",
"wss://cvm.otherstuff.ai",
]);Features:
- Automatic reconnection
- Connection monitoring
- RxJS-based observables
- Persistent subscriptions
SimpleRelayPool (Deprecated)
Basic relay management:
typescript
const pool = new SimpleRelayPool(relayUrls);Use for new projects.
ApplesauceRelayPoolEncryption Modes
typescript
enum EncryptionMode {
OPTIONAL = "optional", // Use if supported (default)
REQUIRED = "required", // Fail if not supported
DISABLED = "disabled", // Never encrypt
}Logging
typescript
import { createLogger } from "@contextvm/sdk/core";
const logger = createLogger("my-module");
logger.info("event.name", {
module: "my-module",
txId: "abc-123",
durationMs: 245,
});Configure via environment:
LOG_LEVEL=debug|info|warn|errorLOG_DESTINATION=stderr|stdout|fileLOG_FILE=/path/to/fileLOG_ENABLED=true|false
Constants
| Constant | Value | Description |
|---|---|---|
| 25910 | Ephemeral messages |
| 11316 | Server metadata |
| 11317 | Tools announcement |
| 11318 | Resources announcement |
| 1059 | Encrypted messages |
SDK Patterns
See for:
references/patterns.md- Error handling
- Retry strategies
- Connection lifecycle
- Resource cleanup
API Reference
- - Complete interface definitions
references/interfaces.md - - All exported constants
references/constants.md - - Logging best practices
references/logging.md