Loading...
Loading...
Compare original and translation side by side
@contextvm/sdk@contextvm/sdknpm install @contextvm/sdknpm install @contextvm/sdkundefinedundefined// 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";// 传输层
import { NostrClientTransport, NostrServerTransport } from "@contextvm/sdk";
// 签名器
import { PrivateKeySigner } from "@contextvm/sdk";
// 中继处理器
import { ApplesauceRelayPool } from "@contextvm/sdk";
// 组件
import { NostrMCPProxy, NostrMCPGateway } from "@contextvm/sdk";
// 核心类型与工具
import {
EncryptionMode,
CTXVM_MESSAGES_KIND,
SERVER_ANNOUNCEMENT_KIND,
createLogger,
} from "@contextvm/sdk";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>;
};
}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>;
};
}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;
}subscribe()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;
}subscribe()const signer = new PrivateKeySigner("32-byte-hex-private-key");
const pubkey = await signer.getPublicKey();const signer = new PrivateKeySigner("32-byte-hex-private-key");
const pubkey = await signer.getPublicKey();NostrSignerreferences/custom-signers.mdNostrSignerreferences/custom-signers.mdconst pool = new ApplesauceRelayPool([
"wss://relay.contextvm.org",
"wss://cvm.otherstuff.ai",
]);const pool = new ApplesauceRelayPool([
"wss://relay.contextvm.org",
"wss://cvm.otherstuff.ai",
]);const pool = new SimpleRelayPool(relayUrls);ApplesauceRelayPoolconst pool = new SimpleRelayPool(relayUrls);ApplesauceRelayPoolenum EncryptionMode {
OPTIONAL = "optional", // Use if supported (default)
REQUIRED = "required", // Fail if not supported
DISABLED = "disabled", // Never encrypt
}enum EncryptionMode {
OPTIONAL = "optional", // 支持则使用(默认)
REQUIRED = "required", // 不支持则报错
DISABLED = "disabled", // 从不加密
}import { createLogger } from "@contextvm/sdk/core";
const logger = createLogger("my-module");
logger.info("event.name", {
module: "my-module",
txId: "abc-123",
durationMs: 245,
});LOG_LEVEL=debug|info|warn|errorLOG_DESTINATION=stderr|stdout|fileLOG_FILE=/path/to/fileLOG_ENABLED=true|falseimport { createLogger } from "@contextvm/sdk/core";
const logger = createLogger("my-module");
logger.info("event.name", {
module: "my-module",
txId: "abc-123",
durationMs: 245,
});LOG_LEVEL=debug|info|warn|errorLOG_DESTINATION=stderr|stdout|fileLOG_FILE=/path/to/fileLOG_ENABLED=true|false| Constant | Value | Description |
|---|---|---|
| 25910 | Ephemeral messages |
| 11316 | Server metadata |
| 11317 | Tools announcement |
| 11318 | Resources announcement |
| 1059 | Encrypted messages |
| 常量名称 | 值 | 描述 |
|---|---|---|
| 25910 | 临时消息 |
| 11316 | 服务器元数据 |
| 11317 | 工具公告 |
| 11318 | 资源公告 |
| 1059 | 加密消息 |
references/patterns.mdreferences/patterns.mdreferences/interfaces.mdreferences/constants.mdreferences/logging.mdreferences/interfaces.mdreferences/constants.mdreferences/logging.md