Skip to content

事件类型定义

本文档定义了XAI-SDK事件系统中使用的类型和接口。

基础事件接口

Event

基础事件接口:

typescript
interface Event {
  /** 事件类型 */
  type: string
  
  /** 事件ID */
  id: string
  
  /** 事件时间戳 */
  timestamp: Date
  
  /** 事件数据 */
  data?: any
  
  /** 事件来源 */
  source?: string
  
  /** 事件目标 */
  target?: string
  
  /** 事件元数据 */
  metadata?: EventMetadata
  
  /** 事件优先级 */
  priority?: EventPriority
  
  /** 事件标签 */
  tags?: string[]
}

EventMetadata

事件元数据:

typescript
interface EventMetadata {
  /** 用户ID */
  userId?: string
  
  /** 会话ID */
  sessionId?: string
  
  /** 请求ID */
  requestId?: string
  
  /** 执行ID */
  executionId?: string
  
  /** 用户代理 */
  userAgent?: string
  
  /** IP地址 */
  ipAddress?: string
  
  /** 地理位置 */
  location?: {
    country?: string
    region?: string
    city?: string
  }
  
  /** 设备信息 */
  device?: {
    type?: 'desktop' | 'mobile' | 'tablet' | 'server'
    os?: string
    browser?: string
  }
  
  /** 自定义属性 */
  custom?: Record<string, any>
}

EventPriority

事件优先级:

typescript
type EventPriority = 'low' | 'normal' | 'high' | 'critical'

SDK事件类型

SDKEvent

SDK事件接口:

typescript
interface SDKEvent extends Event {
  type: SDKEventType
  source: 'sdk'
}

SDKEventType

SDK事件类型:

typescript
type SDKEventType =
  | 'sdk:initialized'
  | 'sdk:destroyed'
  | 'sdk:config:updated'
  | 'sdk:health:check'
  | 'sdk:stats:updated'
  | 'sdk:error'

SDKInitializedEvent

SDK初始化事件:

typescript
interface SDKInitializedEvent extends SDKEvent {
  type: 'sdk:initialized'
  data: {
    version: string
    config: XAIConfig
    adapters: string[]
    plugins: string[]
    tools: string[]
    initTime: number
  }
}

SDKDestroyedEvent

SDK销毁事件:

typescript
interface SDKDestroyedEvent extends SDKEvent {
  type: 'sdk:destroyed'
  data: {
    reason: 'manual' | 'error' | 'shutdown'
    uptime: number
    stats: SDKStats
  }
}

SDKConfigUpdatedEvent

SDK配置更新事件:

typescript
interface SDKConfigUpdatedEvent extends SDKEvent {
  type: 'sdk:config:updated'
  data: {
    oldConfig: XAIConfig
    newConfig: XAIConfig
    changes: ConfigChange[]
  }
}

ConfigChange

配置变更:

typescript
interface ConfigChange {
  /** 变更路径 */
  path: string
  
  /** 变更类型 */
  type: 'added' | 'modified' | 'removed'
  
  /** 旧值 */
  oldValue?: any
  
  /** 新值 */
  newValue?: any
}

请求事件类型

RequestEvent

请求事件接口:

typescript
interface RequestEvent extends Event {
  type: RequestEventType
  source: 'request'
  data: RequestEventData
}

RequestEventType

请求事件类型:

typescript
type RequestEventType =
  | 'request:started'
  | 'request:completed'
  | 'request:failed'
  | 'request:timeout'
  | 'request:cancelled'
  | 'request:retry'

RequestEventData

请求事件数据:

typescript
interface RequestEventData {
  /** 请求ID */
  requestId: string
  
  /** 适配器名称 */
  adapter: string
  
  /** 模型名称 */
  model: string
  
  /** 消息数量 */
  messageCount: number
  
  /** 请求选项 */
  options: ChatOptions
  
  /** 响应数据(完成时) */
  response?: ChatResponse
  
  /** 错误信息(失败时) */
  error?: Error
  
  /** 执行时间(毫秒) */
  duration?: number
  
  /** 重试次数 */
  retryCount?: number
}

RequestStartedEvent

请求开始事件:

typescript
interface RequestStartedEvent extends RequestEvent {
  type: 'request:started'
  data: Omit<RequestEventData, 'response' | 'error' | 'duration'>
}

RequestCompletedEvent

请求完成事件:

typescript
interface RequestCompletedEvent extends RequestEvent {
  type: 'request:completed'
  data: Required<Omit<RequestEventData, 'error'>>
}

RequestFailedEvent

请求失败事件:

typescript
interface RequestFailedEvent extends RequestEvent {
  type: 'request:failed'
  data: Required<Omit<RequestEventData, 'response'>> & {
    errorCode: string
    retryable: boolean
  }
}

流式事件类型

StreamEvent

流式事件接口:

typescript
interface StreamEvent extends Event {
  type: StreamEventType
  source: 'stream'
  data: StreamEventData
}

StreamEventType

流式事件类型:

typescript
type StreamEventType =
  | 'stream:started'
  | 'stream:chunk'
  | 'stream:completed'
  | 'stream:error'
  | 'stream:cancelled'

StreamEventData

流式事件数据:

typescript
interface StreamEventData {
  /** 流ID */
  streamId: string
  
  /** 请求ID */
  requestId: string
  
  /** 数据块(chunk事件时) */
  chunk?: StreamChunk
  
  /** 完整内容(完成时) */
  fullContent?: string
  
  /** 错误信息(错误时) */
  error?: Error
  
  /** 流统计 */
  stats?: StreamStats
}

StreamStats

流统计信息:

typescript
interface StreamStats {
  /** 数据块数量 */
  chunkCount: number
  
  /** 总字符数 */
  totalCharacters: number
  
  /** 流持续时间(毫秒) */
  duration: number
  
  /** 平均块大小 */
  averageChunkSize: number
  
  /** 流速率(字符/秒) */
  charactersPerSecond: number
}

适配器事件类型

AdapterEvent

适配器事件接口:

typescript
interface AdapterEvent extends Event {
  type: AdapterEventType
  source: 'adapter'
  data: AdapterEventData
}

AdapterEventType

适配器事件类型:

typescript
type AdapterEventType =
  | 'adapter:registered'
  | 'adapter:unregistered'
  | 'adapter:initialized'
  | 'adapter:destroyed'
  | 'adapter:health:check'
  | 'adapter:rate:limited'
  | 'adapter:error'

AdapterEventData

适配器事件数据:

typescript
interface AdapterEventData {
  /** 适配器名称 */
  name: string
  
  /** 适配器类型 */
  type: string
  
  /** 适配器配置 */
  config?: AdapterConfig
  
  /** 健康状态 */
  health?: HealthStatus
  
  /** 错误信息 */
  error?: Error
  
  /** 统计信息 */
  stats?: AdapterStats
}

插件事件类型

PluginEvent

插件事件接口:

typescript
interface PluginEvent extends Event {
  type: PluginEventType
  source: 'plugin'
  data: PluginEventData
}

PluginEventType

插件事件类型:

typescript
type PluginEventType =
  | 'plugin:registered'
  | 'plugin:unregistered'
  | 'plugin:enabled'
  | 'plugin:disabled'
  | 'plugin:initialized'
  | 'plugin:destroyed'
  | 'plugin:hook:executed'
  | 'plugin:error'

PluginEventData

插件事件数据:

typescript
interface PluginEventData {
  /** 插件名称 */
  name: string
  
  /** 插件版本 */
  version: string
  
  /** 插件配置 */
  config?: PluginConfig
  
  /** 钩子名称(钩子执行事件时) */
  hookName?: string
  
  /** 钩子执行时间(毫秒) */
  hookExecutionTime?: number
  
  /** 错误信息 */
  error?: Error
  
  /** 插件状态 */
  status?: PluginStatus
}

工具事件类型

ToolEvent

工具事件接口:

typescript
interface ToolEvent extends Event {
  type: ToolEventType
  source: 'tool'
  data: ToolEventData
}

ToolEventType

工具事件类型:

typescript
type ToolEventType =
  | 'tool:registered'
  | 'tool:unregistered'
  | 'tool:execution:started'
  | 'tool:execution:completed'
  | 'tool:execution:failed'
  | 'tool:execution:timeout'
  | 'tool:cache:hit'
  | 'tool:cache:miss'
  | 'tool:rate:limited'
  | 'tool:permission:denied'

ToolEventData

工具事件数据:

typescript
interface ToolEventData {
  /** 工具名称 */
  name: string
  
  /** 执行ID */
  executionId?: string
  
  /** 工具参数 */
  parameters?: Record<string, any>
  
  /** 执行结果 */
  result?: ToolResult
  
  /** 执行时间(毫秒) */
  executionTime?: number
  
  /** 错误信息 */
  error?: ToolError
  
  /** 缓存信息 */
  cacheInfo?: CacheInfo
  
  /** 权限信息 */
  permissions?: string[]
}

缓存事件类型

CacheEvent

缓存事件接口:

typescript
interface CacheEvent extends Event {
  type: CacheEventType
  source: 'cache'
  data: CacheEventData
}

CacheEventType

缓存事件类型:

typescript
type CacheEventType =
  | 'cache:hit'
  | 'cache:miss'
  | 'cache:set'
  | 'cache:delete'
  | 'cache:clear'
  | 'cache:expired'
  | 'cache:evicted'

CacheEventData

缓存事件数据:

typescript
interface CacheEventData {
  /** 缓存键 */
  key: string
  
  /** 缓存值大小(字节) */
  size?: number
  
  /** 缓存TTL(秒) */
  ttl?: number
  
  /** 缓存来源 */
  source?: 'memory' | 'redis' | 'file'
  
  /** 过期时间 */
  expiresAt?: Date
  
  /** 访问次数 */
  accessCount?: number
  
  /** 最后访问时间 */
  lastAccessed?: Date
}

错误事件类型

ErrorEvent

错误事件接口:

typescript
interface ErrorEvent extends Event {
  type: ErrorEventType
  source: string
  data: ErrorEventData
  priority: 'high' | 'critical'
}

ErrorEventType

错误事件类型:

typescript
type ErrorEventType =
  | 'error:system'
  | 'error:request'
  | 'error:adapter'
  | 'error:plugin'
  | 'error:tool'
  | 'error:validation'
  | 'error:permission'
  | 'error:rate:limit'
  | 'error:timeout'
  | 'error:network'
  | 'error:unknown'

ErrorEventData

错误事件数据:

typescript
interface ErrorEventData {
  /** 错误对象 */
  error: Error
  
  /** 错误代码 */
  code: string
  
  /** 错误级别 */
  level: 'warning' | 'error' | 'critical'
  
  /** 错误上下文 */
  context?: any
  
  /** 堆栈跟踪 */
  stack?: string
  
  /** 是否可恢复 */
  recoverable: boolean
  
  /** 重试次数 */
  retryCount?: number
  
  /** 相关请求ID */
  requestId?: string
  
  /** 用户影响 */
  userImpact?: 'none' | 'low' | 'medium' | 'high'
}

性能事件类型

PerformanceEvent

性能事件接口:

typescript
interface PerformanceEvent extends Event {
  type: PerformanceEventType
  source: 'performance'
  data: PerformanceEventData
}

PerformanceEventType

性能事件类型:

typescript
type PerformanceEventType =
  | 'performance:slow:request'
  | 'performance:high:memory'
  | 'performance:high:cpu'
  | 'performance:bottleneck'
  | 'performance:threshold:exceeded'

PerformanceEventData

性能事件数据:

typescript
interface PerformanceEventData {
  /** 性能指标 */
  metric: string
  
  /** 当前值 */
  value: number
  
  /** 阈值 */
  threshold: number
  
  /** 单位 */
  unit: string
  
  /** 持续时间(毫秒) */
  duration?: number
  
  /** 相关组件 */
  component?: string
  
  /** 建议操作 */
  recommendation?: string
}

事件管理

EventEmitter

事件发射器接口:

typescript
interface EventEmitter {
  /** 发射事件 */
  emit(event: Event): void
  
  /** 发射事件(异步) */
  emitAsync(event: Event): Promise<void>
  
  /** 监听事件 */
  on(type: string, listener: EventListener): void
  
  /** 监听事件(一次) */
  once(type: string, listener: EventListener): void
  
  /** 移除监听器 */
  off(type: string, listener: EventListener): void
  
  /** 移除所有监听器 */
  removeAllListeners(type?: string): void
  
  /** 获取监听器数量 */
  listenerCount(type: string): number
  
  /** 获取所有事件类型 */
  eventNames(): string[]
}

EventListener

事件监听器:

typescript
type EventListener = (event: Event) => void | Promise<void>

EventFilter

事件过滤器:

typescript
interface EventFilter {
  /** 事件类型过滤 */
  types?: string[]
  
  /** 事件来源过滤 */
  sources?: string[]
  
  /** 优先级过滤 */
  priorities?: EventPriority[]
  
  /** 标签过滤 */
  tags?: string[]
  
  /** 时间范围过滤 */
  timeRange?: {
    start: Date
    end: Date
  }
  
  /** 自定义过滤函数 */
  custom?: (event: Event) => boolean
}

EventStore

事件存储接口:

typescript
interface EventStore {
  /** 存储事件 */
  store(event: Event): Promise<void>
  
  /** 批量存储事件 */
  storeBatch(events: Event[]): Promise<void>
  
  /** 查询事件 */
  query(filter: EventFilter, options?: QueryOptions): Promise<Event[]>
  
  /** 获取事件数量 */
  count(filter: EventFilter): Promise<number>
  
  /** 删除事件 */
  delete(filter: EventFilter): Promise<number>
  
  /** 清空存储 */
  clear(): Promise<void>
}

QueryOptions

查询选项:

typescript
interface QueryOptions {
  /** 排序字段 */
  sortBy?: 'timestamp' | 'type' | 'priority'
  
  /** 排序方向 */
  sortOrder?: 'asc' | 'desc'
  
  /** 分页 */
  pagination?: {
    page: number
    size: number
  }
  
  /** 限制结果数量 */
  limit?: number
  
  /** 跳过结果数量 */
  offset?: number
}

事件处理器

EventHandler

事件处理器接口:

typescript
interface EventHandler {
  /** 处理器名称 */
  name: string
  
  /** 支持的事件类型 */
  supportedTypes: string[]
  
  /** 处理器优先级 */
  priority: number
  
  /** 处理事件 */
  handle(event: Event): Promise<void> | void
  
  /** 是否可以处理事件 */
  canHandle(event: Event): boolean
  
  /** 处理器配置 */
  config?: Record<string, any>
}

EventProcessor

事件处理器:

typescript
interface EventProcessor {
  /** 注册处理器 */
  register(handler: EventHandler): void
  
  /** 卸载处理器 */
  unregister(name: string): void
  
  /** 处理事件 */
  process(event: Event): Promise<void>
  
  /** 批量处理事件 */
  processBatch(events: Event[]): Promise<void>
  
  /** 获取处理器 */
  getHandler(name: string): EventHandler | undefined
  
  /** 获取所有处理器 */
  getAllHandlers(): EventHandler[]
}

事件聚合

EventAggregator

事件聚合器:

typescript
interface EventAggregator {
  /** 聚合事件 */
  aggregate(events: Event[], options: AggregationOptions): AggregationResult
  
  /** 实时聚合 */
  aggregateRealtime(filter: EventFilter, options: AggregationOptions): Promise<AggregationResult>
  
  /** 创建聚合视图 */
  createView(name: string, config: AggregationViewConfig): void
  
  /** 获取聚合视图 */
  getView(name: string): AggregationResult | undefined
}

AggregationOptions

聚合选项:

typescript
interface AggregationOptions {
  /** 聚合类型 */
  type: 'count' | 'sum' | 'average' | 'min' | 'max' | 'group'
  
  /** 聚合字段 */
  field?: string
  
  /** 分组字段 */
  groupBy?: string[]
  
  /** 时间窗口 */
  timeWindow?: {
    size: number
    unit: 'second' | 'minute' | 'hour' | 'day'
  }
  
  /** 过滤条件 */
  filter?: EventFilter
}

AggregationResult

聚合结果:

typescript
interface AggregationResult {
  /** 聚合类型 */
  type: string
  
  /** 聚合值 */
  value: any
  
  /** 分组结果 */
  groups?: Record<string, any>
  
  /** 时间序列数据 */
  timeSeries?: TimeSeriesData[]
  
  /** 聚合时间 */
  timestamp: Date
  
  /** 事件数量 */
  eventCount: number
}

TimeSeriesData

时间序列数据:

typescript
interface TimeSeriesData {
  /** 时间戳 */
  timestamp: Date
  
  /** 数值 */
  value: number
  
  /** 标签 */
  labels?: Record<string, string>
}

这些类型定义为XAI-SDK的事件系统提供了完整的类型支持,确保事件处理的类型安全和一致性。

Released under the MIT License.