上下文VM SDK
一个JavaScript/TypeScript SDK,它执行上下文Vending Machine协议,连接诺斯特和模型上下文协议(MCP),以便分散访问和曝光计算服务.
概览
ContextVM协议定义了诺斯特和模型上下文机如何可以用来曝光MCP服务器能力,从而能够通过分散的,加密的安全通信系统,实现这些资源的标准化使用.
SDK提供了与上下文VM协议互动的必要组件:
- 核心单元:包含基本定义,常数,接口,以及公用设施(如加密,串行等).
- 运输:通信的关键,提供
NostrClientTransport财务报告和审定财务报表NostrServerTransport执行使MCP超越诺斯特. - 代理服务器:一个客户端-侧MCP服务器,通过诺斯特连接到其他服务器,在本地暴露服务器能力. 对不本土支持诺斯特运输的客户特别有用.
- 网关:执行诺斯特服务器传输,绑定在另一个MCP服务器上,并通过诺斯特网络暴露其能力.
- 中继:用于管理诺斯特继电器,抽象继电器相互作用的功能.
- 签名:提供诺斯特事件所需的加密签名能力.
代理和Gateway都以诺斯特运输为杠杆,使得现有的MCP服务器在获得诺斯特互操作性的同时能够保持常规运输.
安装
npm install @contextvm/sdk
说明: 您可以使用您的首选软件包管理器安装 SDK .
软件包结构
SDK支持两种导入模式:
主入口( 建议)
为方便从根导入 :
import { NostrClientTransport, createLogger } from '@contextvm/sdk';
子路径导入( Tree- 抖动)
对于更小的捆绑,直接从特定模块导入:
// Core utilities
import { createLogger } from '@contextvm/sdk/core';
// Transport implementations
import { NostrClientTransport } from '@contextvm/sdk/transport';
// Relay management
import { RelayPool } from '@contextvm/sdk/relay';
// Cryptographic signing
import { NostrSigner } from '@contextvm/sdk/signer';
// Gateway and Proxy
import { Gateway } from '@contextvm/sdk/gateway';
import { Proxy } from '@contextvm/sdk/proxy';
说明: 子路径导入帮助捆绑者消除未使用的代码 。 当捆绑大小重要时使用它们.
使用量
访问 背景VM 文档 用于了解如何使用上下文VM.
日志
SDK使用皮诺来进行高性能记录,并带有结构化的JSON输出. 默认情况下,会将日志写入 stderr,以符合MCP协议的预期.
基本用途
import { createLogger } from '@contextvm/sdk/core';
// Create a logger for your module
const logger = createLogger('my-module');
logger.info('Application started');
logger.error('An error occurred', { error: 'details' });
配置选项
您可以使用各种选项配置日志 :
import { createLogger, LoggerConfig } from '@contextvm/sdk/core';
const config: LoggerConfig = {
level: 'debug', // Minimum log level (debug, info, warn, error)
file: 'app.log', // Optional: log to a file instead of stderr
};
const logger = createLogger('my-module', config);
说明: 当日志被写成 stderr/stdout(不是文件),以便在开发期间更好的可读性时,会自动启用漂亮的打印.
配置环境变量
日志可以使用环境变量进行配置,这对调整日志输出而不改变代码是有用的.
LOG_LEVEL: 设置最小日志级别.- 数值数字 :
debug, (中文(简体) ),info, (中文(简体) ),warn, (中文(简体) ),error。 。 。 . - 默认数字 :
info。 。 。 .
- 数值数字 :
LOG_DESTINATION:设置日志输出目的地.- 数值数字 :
stderr(违约),stdout,或file。 。 。 .
- 数值数字 :
LOG_FILE: 指定文件路径时LOG_DESTINATION实值file。 。 。 .LOG_ENABLED: 启用或禁用日志.- 数值数字 :
true(违约)或false。 。 。 .
- 数值数字 :
在节点.js中的配置
在运行应用程序前设定您 shell 中的变量 :
# Set log level to debug
LOG_LEVEL=debug node app.js
# Log to a file instead of the console
LOG_DESTINATION=file LOG_FILE=./app.log node app.js
# Disable logging entirely
LOG_ENABLED=false node app.js
浏览器中的配置
在浏览器环境中,您可以通过设置全局配置日志级别 LOG_LEVEL 变量在 window 对象 在此之前 sDK是导入或使用的.
// Set this in a <script> tag in your HTML or at the top of your entry point
window.LOG_LEVEL = 'debug';
// Now, when you import and use the SDK, it will use the 'debug' log level.
import { logger } from '@contextvm/sdk';
logger.debug('This is a debug message.');
模块特定 Loggers
为不同的模块创建儿童日志以添加上下文 :
const baseLogger = createLogger('my-app');
const authLogger = baseLogger.withModule('auth');
const dbLogger = baseLogger.withModule('database');
authLogger.info('User login attempt');
dbLogger.debug('Query executed', { query: 'SELECT * FROM users' });
发展
这个项目需要 阿宝 (版本1.2.0或以上).
- 清除仓库 :
git clone https://github.com/ContextVM/sdk.git
cd sdk
- 安装依赖性 :
bun install
运行测试
要运行测试套房,请使用 Bun:
bun test