@ enclave-vm/ 类型
EnclaveJS 流线运行时协议的类型定义和 Zod 计划
@enclave-vm/types包提供了TypeScript类型定义和运行时间验证计划,用于EnclaveJS流协议. 它作为EnclaveJS各组件之间进行类型安全通信的基础.
特征
- 类型脚本第一: 完整类型脚本支持并严格打字
- 佐德·斯克马斯: 所有协议消息的运行时间验证
- 协议类型: 流出消息的完整类型定义
- 会话类型: 会话管理和状态的类型
- 工具类型: 工具呼叫和响应的定义类型
安装
npm install @enclave-vm/types
# or
yarn add @enclave-vm/types
# or
pnpm add @enclave-vm/types
快速启动
import { isToolCallEvent, isFinalEvent, type StreamEvent } from '@enclave-vm/types';
// Type-safe event handling
function handleEvent(event: StreamEvent) {
if (isToolCallEvent(event)) {
console.log(`Tool: ${event.payload.toolName}, Args:`, event.payload.args);
} else if (isFinalEvent(event)) {
console.log(event.payload.ok ? 'Result:' : 'Error:', event.payload.result ?? event.payload.error);
}
}
议定书
串流事件
每个事件都有 protocolVersion, (中文(简体) ), sessionId,序列号 seq页:1 type (单位:千美元) payload数字 :
import { PROTOCOL_VERSION, type ToolCallEvent, type FinalEvent } from '@enclave-vm/types';
const toolCall: ToolCallEvent = {
protocolVersion: PROTOCOL_VERSION, // 2
sessionId: 's_3f0e2f6e-1c1b-4c57-9a55-0a8b5a3d2c11',
seq: 2,
type: 'tool_call',
payload: {
callId: 'c_9a55e2f6-4c57-1c1b-3f0e-0a8b5a3d2c11',
toolName: 'getUser',
args: { userId: 1 },
},
};
const final: FinalEvent = {
protocolVersion: PROTOCOL_VERSION,
sessionId: 's_3f0e2f6e-1c1b-4c57-9a55-0a8b5a3d2c11',
seq: 4,
type: 'final',
payload: {
ok: true,
result: { name: 'Alice' },
stats: { durationMs: 120, toolCallCount: 1, stdoutBytes: 0 },
},
};
活动类型是 session_init, (中文(简体) ), stdout, (中文(简体) ), log, (中文(简体) ), tool_call, (中文(简体) ), tool_result_applied, (中文(简体) ), final, (中文(简体) ), heartbeat, (中文(简体) ), error,自协议版本2起 partial_result, (中文(简体) ), tool_progress, (中文(简体) ), deadline_exceeded 财务报告和审定财务报表 catalog_changed。每个类型(ToolCallEvent),一个计划(ToolCallEventSchema)和一个类型后卫(isToolCallEvent) (中文(简体) ).
标识符和会话状态
import {
generateSessionId,
generateCallId,
isSessionId,
SessionState,
DEFAULT_SESSION_LIMITS,
} from '@enclave-vm/types';
const sessionId = generateSessionId(); // 's_' followed by a UUID
const callId = generateCallId(); // 'c_' followed by a UUID
isSessionId(sessionId); // true
SessionState.Running; // 'running'
// 'starting' | 'running' | 'waiting_for_tool' | 'completed' | 'cancelled' | 'failed'
DEFAULT_SESSION_LIMITS.maxToolCalls; // 50
佐德·斯克马斯
这些类型都有相应的Zod schemas用于运行时间验证:
import { StreamEventSchema, parseStreamEvent } from '@enclave-vm/types';
// Parse and validate
const parsed = StreamEventSchema.safeParse(untrustedData);
if (parsed.success) {
// parsed.data is typed as StreamEvent
handleEvent(parsed.data);
} else {
console.error('Invalid event:', parsed.error);
}
// The same, as a helper
const result = parseStreamEvent(untrustedData);
软件包不做什么
软件包定义了加密信封和密钥交换器的类型(EncryptedEnvelope, (中文(简体) ), ClientHello, (中文(简体) ), ServerHello) (中文(简体) ). 它们是定义: 此寄存器的客户端或经纪人没有加密一个会话, 他们描述的密钥交换没有认证 。 会话为普通JSON受运输保护.
相关软件包
| 软件包 | 说明 |
|---|---|
| @enclave-vm/ 流水 | 简化协议的执行 |
| @enclave-vm/ 经纪人 | 工具中介和会话管理 |
| @enclave-vm/客户端 | 浏览器/ Node.js 客户端 SDK |
| @enclave-vm/反应 | 反应钩和组件 |
| @enclave-vm/运行时间 | 运行时间工人构件(非可运行服务) |
许可证
阿帕奇 - 2.0