@spatialwalk/avatarkit 1.0.0-beta.27 → 1.0.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +37 -4
  2. package/README.md +30 -31
  3. package/dist/StreamingAudioPlayer-C-_1X8K-.js +398 -0
  4. package/dist/animation/AnimationWebSocketClient.d.ts +0 -20
  5. package/dist/animation/utils/eventEmitter.d.ts +0 -3
  6. package/dist/animation/utils/flameConverter.d.ts +3 -10
  7. package/dist/audio/AnimationPlayer.d.ts +0 -46
  8. package/dist/audio/StreamingAudioPlayer.d.ts +0 -81
  9. package/dist/avatar_core_wasm-i0Ocpx6q.js +2693 -0
  10. package/dist/config/app-config.d.ts +1 -5
  11. package/dist/config/constants.d.ts +2 -10
  12. package/dist/config/sdk-config-loader.d.ts +2 -8
  13. package/dist/core/Avatar.d.ts +0 -6
  14. package/dist/core/AvatarController.d.ts +0 -111
  15. package/dist/core/AvatarDownloader.d.ts +0 -75
  16. package/dist/core/AvatarManager.d.ts +6 -13
  17. package/dist/core/AvatarSDK.d.ts +21 -0
  18. package/dist/core/AvatarView.d.ts +4 -103
  19. package/dist/core/NetworkLayer.d.ts +0 -6
  20. package/dist/generated/driveningress/v1/driveningress.d.ts +1 -11
  21. package/dist/generated/driveningress/v2/driveningress.d.ts +0 -2
  22. package/dist/generated/google/protobuf/struct.d.ts +5 -38
  23. package/dist/generated/google/protobuf/timestamp.d.ts +1 -102
  24. package/dist/index-BpVIIm3g.js +7921 -0
  25. package/dist/index.d.ts +1 -4
  26. package/dist/index.js +17 -17
  27. package/dist/renderer/RenderSystem.d.ts +0 -8
  28. package/dist/renderer/covariance.d.ts +0 -11
  29. package/dist/renderer/sortSplats.d.ts +0 -10
  30. package/dist/renderer/webgl/reorderData.d.ts +0 -12
  31. package/dist/renderer/webgl/webglRenderer.d.ts +3 -39
  32. package/dist/renderer/webgpu/webgpuRenderer.d.ts +3 -27
  33. package/dist/types/character-settings.d.ts +0 -4
  34. package/dist/types/character.d.ts +3 -9
  35. package/dist/types/index.d.ts +14 -21
  36. package/dist/utils/animation-interpolation.d.ts +3 -12
  37. package/dist/utils/client-id.d.ts +0 -5
  38. package/dist/utils/cls-tracker.d.ts +5 -26
  39. package/dist/utils/conversationId.d.ts +0 -18
  40. package/dist/utils/error-utils.d.ts +1 -24
  41. package/dist/utils/heartbeat-manager.d.ts +0 -26
  42. package/dist/utils/id-manager.d.ts +0 -23
  43. package/dist/utils/logger.d.ts +1 -4
  44. package/dist/utils/usage-tracker.d.ts +2 -17
  45. package/dist/wasm/avatarCoreAdapter.d.ts +0 -134
  46. package/dist/wasm/avatarCoreMemory.d.ts +0 -52
  47. package/package.json +1 -1
  48. package/dist/StreamingAudioPlayer-C6v9Ed55.js +0 -352
  49. package/dist/avatar_core_wasm-BPIbbUx_.js +0 -1663
  50. package/dist/core/AvatarKit.d.ts +0 -48
  51. package/dist/index-s9KqPWVW.js +0 -6770
package/dist/index.d.ts CHANGED
@@ -1,9 +1,6 @@
1
- /**
2
- * SPAvatar SDK - 统一公开接口
3
- */
4
1
  export { Avatar } from './core/Avatar';
5
2
  export { AvatarController } from './core/AvatarController';
6
- export { AvatarKit } from './core/AvatarKit';
3
+ export { AvatarSDK } from './core/AvatarSDK';
7
4
  export { AvatarManager } from './core/AvatarManager';
8
5
  export { AvatarView } from './core/AvatarView';
9
6
  export * from './types';
package/dist/index.js CHANGED
@@ -1,19 +1,19 @@
1
- import { b as e, c as s, d as t, f as o, j as v, g as n, C as i, i as A, D as c, E as S, k as g, h as C, L as d, R as l, S as E, m as L } from "./index-s9KqPWVW.js";
1
+ import { b, c, f, d, j, g, C, i, D, E, k, h, L, R, S, m } from "./index-BpVIIm3g.js";
2
2
  export {
3
- e as Avatar,
4
- s as AvatarController,
5
- t as AvatarKit,
6
- o as AvatarManager,
7
- v as AvatarState,
8
- n as AvatarView,
9
- i as ConnectionState,
10
- A as ConversationState,
11
- c as DrivingServiceMode,
12
- S as Environment,
13
- g as ErrorCode,
14
- C as LoadProgress,
15
- d as LogLevel,
16
- l as ResourceType,
17
- E as SPAvatarError,
18
- L as extractResourceUrls
3
+ b as Avatar,
4
+ c as AvatarController,
5
+ f as AvatarManager,
6
+ d as AvatarSDK,
7
+ j as AvatarState,
8
+ g as AvatarView,
9
+ C as ConnectionState,
10
+ i as ConversationState,
11
+ D as DrivingServiceMode,
12
+ E as Environment,
13
+ k as ErrorCode,
14
+ h as LoadProgress,
15
+ L as LogLevel,
16
+ R as ResourceType,
17
+ S as SPAvatarError,
18
+ m as extractResourceUrls
19
19
  };
@@ -1,9 +1 @@
1
- /**
2
- * Render System - Unified WebGL/WebGPU rendering management
3
- *
4
- * Responsibilities:
5
- * 1. Automatically select rendering backend (WebGPU preferred, fallback to WebGL)
6
- * 2. Camera management
7
- * 3. Matrix calculations
8
- */
9
1
  export {};
@@ -1,12 +1 @@
1
- /**
2
- * 3D 协方差矩阵计算工具
3
- * 用于从缩放和旋转参数计算 Gaussian Splat 的协方差矩阵
4
- */
5
- /**
6
- * 计算 3D 协方差矩阵
7
- *
8
- * @param scale - 缩放向量 [sx, sy, sz]
9
- * @param rotation - 四元数旋转 [qx, qy, qz, qw]
10
- * @returns 3x3 协方差矩阵
11
- */
12
1
  export declare function computeCovariance3D(scale: number[], rotation: number[]): number[][];
@@ -1,11 +1 @@
1
- /**
2
- * Splat 深度排序(Radix Sort 优化版)
3
- * 使用 11-bit 两轮基数排序,O(n) 时间复杂度
4
- */
5
- /**
6
- * 对 splats 进行深度排序(Radix Sort)
7
- * @param packedData Packed 格式数据 [pos3, color4, cov6] x N
8
- * @param cameraPosition 相机位置
9
- * @param cameraForward 相机前向向量
10
- */
11
1
  export declare function sortSplats(packedData: Float32Array, cameraPosition: [number, number, number], cameraForward: [number, number, number]): Uint32Array;
@@ -1,13 +1 @@
1
- /**
2
- * Packed Data 工具函数
3
- *
4
- * Packed 格式:[pos3, color4, cov6] x N 个点
5
- * 每个点 13 个 float,共 52 bytes
6
- */
7
- /**
8
- * 重新排序 packed 数据(复用缓冲区)
9
- * @param packedData 原始数据 [pos3, color4, cov6] x N
10
- * @param sortOrder 排序索引数组
11
- * @returns 重排序后的数据(复用的缓冲区引用)
12
- */
13
1
  export declare function reorderPackedData(packedData: Float32Array, sortOrder: Uint32Array): Float32Array;
@@ -12,54 +12,18 @@ export declare class WebGLRenderer implements I3DGSRenderer {
12
12
  private splatCount;
13
13
  private isInitialized;
14
14
  private splatBufferSize;
15
- constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]);
16
- /**
17
- * 初始化 WebGL 渲染器
18
- */
15
+ constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number], alpha?: boolean);
16
+ private alpha;
19
17
  initialize(): Promise<void>;
20
- /**
21
- * 设置着色器位置
22
- */
23
18
  private setupShaderLocations;
24
- /**
25
- * 设置 WebGL 渲染状态
26
- */
27
19
  private setupWebGLState;
28
- /**
29
- * 创建渲染缓冲区
30
- */
31
20
  private createBuffers;
32
- /**
33
- * 创建四边形顶点缓冲区(实例化渲染用)
34
- */
35
21
  private createQuadVertexBuffer;
36
- /**
37
- * 从已打包数据加载(零拷贝,GPU 优化路径)
38
- * 🚀 性能优化版本:直接使用 WASM 输出的 packed 数据
39
- * 🚀 Buffer 复用:避免每帧重新分配,使用 bufferSubData 更新
40
- * @param packedData Float32Array [pos3, color4, cov6] x N 个点
41
- * @param pointCount 点数
42
- * @param _sortOrder WebGL 忽略此参数(已在 RenderSystem 中重排序)
43
- */
44
22
  loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, _sortOrder?: Uint32Array): void;
45
- /**
46
- * 上传数据到 GPU
47
- */
48
23
  private uploadToGPU;
49
- /**
50
- * 设置实例化渲染顶点属性
51
- */
52
24
  private setupVertexAttributes;
53
- /**
54
- * 渲染一帧
55
- */
56
25
  render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number]): void;
57
- /**
58
- * 创建着色器程序
59
- */
60
26
  private createShaderProgram;
61
- /**
62
- * 清理资源
63
- */
27
+ updateBackgroundColor(backgroundColor: [number, number, number, number]): void;
64
28
  dispose(): void;
65
29
  }
@@ -15,39 +15,15 @@ export declare class WebGPURenderer implements I3DGSRenderer {
15
15
  private bindGroupNeedsUpdate;
16
16
  private splatCount;
17
17
  private presentationFormat;
18
- constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]);
19
- /**
20
- * 初始化 WebGPU 渲染器
21
- */
18
+ private alpha;
19
+ constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number], alpha?: boolean);
22
20
  initialize(): Promise<void>;
23
- /**
24
- * 创建 Uniform Buffer
25
- */
26
21
  private createUniformBuffer;
27
- /**
28
- * 创建四边形顶点缓冲区(实例化渲染用)
29
- */
30
22
  private createQuadVertexBuffer;
31
- /**
32
- * 创建 Render Pipeline
33
- */
34
23
  private createRenderPipeline;
35
- /**
36
- * 从已打包数据加载
37
- * 🚀 间接索引渲染:packedData 是原始数据,sortOrder 是排序索引
38
- * 🚀 完全消除 CPU 重排序开销
39
- */
40
24
  loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, sortOrder?: Uint32Array): void;
41
- /**
42
- * 渲染一帧
43
- */
44
25
  render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number]): void;
45
- /**
46
- * 更新 Uniform Buffer
47
- */
48
26
  private updateUniforms;
49
- /**
50
- * 清理资源
51
- */
27
+ updateBackgroundColor(backgroundColor: [number, number, number, number]): void;
52
28
  dispose(): void;
53
29
  }
@@ -1,7 +1,3 @@
1
- /**
2
- * Character settings type definitions for character templates
3
- * Backend guarantees the schema although it is weakly typed in proto.
4
- */
5
1
  export interface EyelidSettings {
6
2
  auto_eyelid_adjustment: boolean;
7
3
  enabled: boolean;
@@ -1,8 +1,6 @@
1
1
  import { CharacterAsset } from '../generated/driveningress/v2/driveningress';
2
2
  import { CameraSettings, CharacterSettings } from './character-settings';
3
- /**
4
- * 角色元数据
5
- */
3
+
6
4
  export type CharacterMeta = CharacterAsset & {
7
5
  characterSettings?: CharacterSettings;
8
6
  };
@@ -12,16 +10,12 @@ export type PreloadResources<T> = {
12
10
  export type PreloadCameraSettings = PreloadResources<{
13
11
  camera: CameraSettings;
14
12
  }>;
15
- /**
16
- * 资源类型枚举
17
- */
13
+
18
14
  export declare enum ResourceType {
19
15
  CAMERA = "camera",
20
16
  ANIMATION_IDLE = "frameIdle",
21
17
  MODEL_SHAPE = "shape",
22
18
  MODEL_GS = "gsStandard"
23
19
  }
24
- /**
25
- * 提取所有资源 URL
26
- */
20
+
27
21
  export declare function extractResourceUrls(meta: CharacterMeta): Record<ResourceType, string | null>;
@@ -1,32 +1,26 @@
1
- /**
2
- * 统一公开类型 & 接口
3
- */
4
1
  export declare enum Environment {
5
2
  cn = "cn",
6
- intl = "intl",
7
- test = "test"
3
+ intl = "intl"
8
4
  }
9
5
  export declare enum DrivingServiceMode {
10
- /** 由 SDK 直接驱动 */
6
+
11
7
  sdk = "sdk",
12
- /** 由宿主应用驱动 */
8
+
13
9
  host = "host"
14
10
  }
15
11
  export declare enum LogLevel {
16
- /** 关闭所有日志 */
12
+
17
13
  off = "off",
18
- /** 仅错误日志 */
14
+
19
15
  error = "error",
20
- /** 警告和错误日志 */
16
+
21
17
  warning = "warning",
22
- /** 所有日志(信息、警告、错误),默认值 */
18
+
23
19
  all = "all"
24
20
  }
25
21
  export interface Configuration {
26
22
  readonly environment: Environment;
27
- /** 驱动服务模式,默认为 sdk */
28
23
  readonly drivingServiceMode?: DrivingServiceMode;
29
- /** 日志等级,默认为 all */
30
24
  readonly logLevel?: LogLevel;
31
25
  }
32
26
  export interface SdkConfigResponse {
@@ -34,7 +28,6 @@ export interface SdkConfigResponse {
34
28
  cn?: string;
35
29
  intl?: string;
36
30
  us?: string;
37
- test?: string;
38
31
  };
39
32
  }
40
33
  export declare enum LoadProgress {
@@ -54,21 +47,21 @@ export declare enum ConnectionState {
54
47
  failed = "failed"
55
48
  }
56
49
  export declare enum ConversationState {
57
- /** 呼吸态 */
50
+
58
51
  idle = "idle",
59
- /** 播放态 */
52
+
60
53
  playing = "playing"
61
54
  }
62
55
  export declare enum ErrorCode {
63
- /** AppID 不可识别(预留,未来要做 appID 校验逻辑) */
56
+
64
57
  appIDUnrecognized = "appIDUnrecognized",
65
- /** Session Token 不可用 */
58
+
66
59
  sessionTokenInvalid = "sessionTokenInvalid",
67
- /** Session Token 已过期 */
60
+
68
61
  sessionTokenExpired = "sessionTokenExpired",
69
- /** 加载数字人元数据失败 */
62
+
70
63
  failedToFetchAvatarMetadata = "failedToFetchAvatarMetadata",
71
- /** 下载数字人资产失败 */
64
+
72
65
  failedToDownloadAvatarAssets = "failedToDownloadAvatarAssets"
73
66
  }
74
67
  export declare class SPAvatarError extends Error {
@@ -1,16 +1,7 @@
1
1
  import { Flame } from '../generated/driveningress/v1/driveningress';
2
- /**
3
- * Linear interpolation with cosine easing (ease-in-ease-out)
4
- * 0.5 - cos(progress * π) * 0.5
5
- */
2
+
6
3
  export declare function linearLerp(from: Flame, to: Flame, progress: number): Flame;
7
- /**
8
- * Generate transition keyframes between two Flame states
9
- * @param durationMs Transition duration (e.g. 400ms)
10
- * @param fps Frames per second (default 25)
11
- */
4
+
12
5
  export declare function generateTransitionFrames(from: Flame, to: Flame, durationMs: number, fps?: number): Flame[];
13
- /**
14
- * Create a neutral Flame
15
- */
6
+
16
7
  export declare function createNeutralFlame(): Flame;
@@ -1,6 +1 @@
1
- /**
2
- * Client ID 管理工具
3
- * 用于生成和持久化用户设备唯一标识
4
- * @internal
5
- */
6
1
  export {};
@@ -1,32 +1,11 @@
1
1
  import { Environment } from '../types';
2
- /**
3
- * 初始化 CLS(需要传入环境信息和 SDK 版本)
4
- */
2
+
5
3
  export declare function initializeCLS(environment: Environment, version: string): void;
6
- /**
7
- * 使用 sendBeacon 同步发送关键日志(用于页面关闭时)
8
- * @param event 事件名称
9
- * @param level 日志级别
10
- * @param contents 日志内容
11
- * @returns 是否发送成功
12
- */
4
+
13
5
  export declare function sendEventViaBeacon(event: string, level?: 'debug' | 'info' | 'warning' | 'error', contents?: Record<string, unknown>): boolean;
14
- /**
15
- * 上报日志到 CLS
16
- * @param event 事件名称
17
- * @param level 日志级别
18
- * @param contents 日志内容
19
- */
6
+
20
7
  export declare function trackEvent(event: string, level?: 'debug' | 'info' | 'warning' | 'error', contents?: Record<string, unknown>): void;
21
- /**
22
- * 清理 CLS(刷新剩余日志并停止定时器)
23
- */
8
+
24
9
  export declare function cleanupCLS(): void;
25
- /**
26
- * 统一的 Telemetry 日志接口
27
- * 用于 SDK 内部上报日志到 CLS
28
- * @param event 事件名称
29
- * @param level 日志级别
30
- * @param contents 日志内容
31
- */
10
+
32
11
  export declare function logEvent(event: string, level?: 'debug' | 'info' | 'warning' | 'error', contents?: Record<string, unknown>): void;
@@ -1,19 +1 @@
1
- /**
2
- * Conversation ID 生成工具
3
- *
4
- * 统一格式:时间戳(UTC时间,秒级,格式:YYYYMMDDHHmmss)+ 下划线 + 12位 NanoID
5
- * 示例:20251027143034_aB3dEf9hIjKl
6
- *
7
- * 时间部分使用 UTC 时间,便于跨端日志排查时统一转换时区检索
8
- */
9
- /**
10
- * 生成统一的会话 ID
11
- *
12
- * 格式:时间戳(UTC时间,秒级,格式:YYYYMMDDHHmmss)+ 下划线 + 12位 NanoID
13
- * 时间部分使用 UTC 时间,便于跨端日志排查时统一转换时区检索
14
- *
15
- * @returns 格式为 YYYYMMDDHHmmss_nanoid 的会话 ID
16
- * @example
17
- * generateConversationId() // "20251027143034_aB3dEf9hIjKl"
18
- */
19
1
  export declare function generateConversationId(): string;
@@ -1,26 +1,3 @@
1
- /**
2
- * Error Utility Functions
3
- * Provides consistent error handling and formatting across the application
4
- */
5
- /**
6
- * Convert unknown error to a readable error message string
7
- *
8
- * @param err - Unknown error object (could be Error, string, object, etc.)
9
- * @returns Formatted error message string
10
- *
11
- * @example
12
- * try {
13
- * riskyOperation()
14
- * } catch (err) {
15
- * const message = errorToMessage(err)
16
- * logger.error('Operation failed:', message)
17
- * }
18
- */
19
1
  export declare function errorToMessage(err: unknown): string;
20
- /**
21
- * Convert unknown error to a detailed error message with stack trace (for logging)
22
- *
23
- * @param err - Unknown error object
24
- * @returns Detailed error message with stack if available
25
- */
2
+
26
3
  export declare function errorToDetailedMessage(err: unknown): string;
@@ -6,38 +6,12 @@ declare class HeartbeatManager {
6
6
  private currentEnvironment;
7
7
  private currentAppId;
8
8
  private failureCount;
9
- /**
10
- * 启动心跳管理器
11
- */
12
9
  start(environment: Environment): void;
13
- /**
14
- * 停止心跳管理器
15
- */
16
10
  stop(): void;
17
- /**
18
- * 启动心跳定时器(每2分钟上报一次)
19
- * @private
20
- */
21
11
  private startHeartbeatTimer;
22
- /**
23
- * 停止心跳定时器
24
- * @private
25
- */
26
12
  private stopHeartbeatTimer;
27
- /**
28
- * 上报心跳事件
29
- * @private
30
- */
31
13
  private reportHeartbeat;
32
- /**
33
- * 设置页面可见性监听器(用于页面重新可见时立即上报心跳)
34
- * @private
35
- */
36
14
  private setupVisibilityListener;
37
- /**
38
- * 移除页面可见性监听器
39
- * @private
40
- */
41
15
  private removeVisibilityListener;
42
16
  }
43
17
  export declare const heartbeatManager: HeartbeatManager;
@@ -1,11 +1,3 @@
1
- /**
2
- * ID 管理器
3
- * 统一管理 SDK 中所有类型的 ID
4
- * @internal
5
- */
6
- /**
7
- * ID 类型定义
8
- */
9
1
  export interface SdkIds {
10
2
  clientId: string;
11
3
  userId: string | null;
@@ -24,26 +16,14 @@ declare class IdManager {
24
16
  getAppId(): string | null;
25
17
  setSessionToken(token: string | null): void;
26
18
  getSessionToken(): string | null;
27
- /**
28
- * 生成新的 connectionId(用于 WebSocket 连接)
29
- */
30
19
  generateConnectionId(): string;
31
20
  getConnectionId(): string | null;
32
21
  clearConnectionId(): void;
33
- /**
34
- * 生成新的 conversationId(用于每次对话)
35
- */
36
22
  generateNewConversationId(): string;
37
23
  getConversationId(): string | null;
38
24
  setConversationId(conversationId: string | null): void;
39
25
  clearConversationId(): void;
40
- /**
41
- * 获取所有 ID(用于日志上报)
42
- */
43
26
  getAllIds(): Readonly<SdkIds>;
44
- /**
45
- * 获取公共日志参数(包含所有必要的 ID)
46
- */
47
27
  getLogContext(): {
48
28
  client_id: string;
49
29
  user_id: string;
@@ -51,9 +31,6 @@ declare class IdManager {
51
31
  connection_id?: string;
52
32
  conversation_id?: string;
53
33
  };
54
- /**
55
- * 清理所有 ID(用于测试或重置)
56
- */
57
34
  clear(): void;
58
35
  }
59
36
  export declare const idManager: IdManager;
@@ -1,10 +1,7 @@
1
1
  import { LogLevel as GuiiaiLogLevel } from '@guiiai/logg';
2
2
  import { LogLevel } from '../types';
3
3
  export declare const logger: import('@guiiai/logg').Logg;
4
- /**
5
- * 设置 SDK 日志等级
6
- * @param level SDK 的 LogLevel 枚举值
7
- */
4
+
8
5
  export declare function setLogLevel(level: LogLevel): void;
9
6
  export declare const loggerWithUnknown: {
10
7
  error: (message: string, error?: unknown) => void;
@@ -1,20 +1,5 @@
1
- /**
2
- * 使用情况追踪工具
3
- * 用于判断首次使用、每日活跃等状态
4
- * @internal
5
- */
6
- /**
7
- * 检查是否为首次使用
8
- * @returns true 如果是首次使用,false 如果不是
9
- */
10
1
  export declare function isFirstUse(): boolean;
11
- /**
12
- * 检查今天是否已经活跃过
13
- * @returns true 如果今天首次活跃,false 如果今天已经活跃过
14
- */
2
+
15
3
  export declare function isDailyActive(): boolean;
16
- /**
17
- * 获取最后活跃日期
18
- * @returns 最后活跃日期(YYYY-MM-DD),如果不存在则返回 null
19
- */
4
+
20
5
  export declare function getLastActiveDate(): string | null;