@spatialwalk/avatarkit 1.0.0-beta.68 → 1.0.0-beta.69

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 (48) hide show
  1. package/CHANGELOG.md +24 -11
  2. package/README.md +102 -18
  3. package/dist/{StreamingAudioPlayer-DrTBMLSq.js → StreamingAudioPlayer-DiIRp5nx.js} +109 -1
  4. package/dist/animation/AnimationWebSocketClient.d.ts +26 -0
  5. package/dist/animation/utils/eventEmitter.d.ts +3 -0
  6. package/dist/animation/utils/flameConverter.d.ts +10 -3
  7. package/dist/audio/AnimationPlayer.d.ts +46 -0
  8. package/dist/audio/StreamingAudioPlayer.d.ts +93 -0
  9. package/dist/config/app-config.d.ts +5 -1
  10. package/dist/config/constants.d.ts +7 -1
  11. package/dist/config/sdk-config-loader.d.ts +11 -3
  12. package/dist/core/Avatar.d.ts +10 -0
  13. package/dist/core/AvatarController.d.ts +164 -2
  14. package/dist/core/AvatarDownloader.d.ts +10 -0
  15. package/dist/core/AvatarManager.d.ts +27 -1
  16. package/dist/core/AvatarSDK.d.ts +27 -0
  17. package/dist/core/AvatarView.d.ts +148 -3
  18. package/dist/core/NetworkLayer.d.ts +6 -0
  19. package/dist/generated/common/v1/models.d.ts +8 -1
  20. package/dist/generated/driveningress/v1/driveningress.d.ts +11 -1
  21. package/dist/generated/driveningress/v2/driveningress.d.ts +5 -2
  22. package/dist/generated/google/protobuf/struct.d.ts +38 -5
  23. package/dist/generated/google/protobuf/timestamp.d.ts +102 -1
  24. package/dist/{index-CF8Fvg7k.js → index-BT9yxWW8.js} +1468 -30
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.js +1 -1
  27. package/dist/renderer/RenderSystem.d.ts +8 -0
  28. package/dist/renderer/covariance.d.ts +11 -0
  29. package/dist/renderer/sortSplats.d.ts +10 -0
  30. package/dist/renderer/webgl/reorderData.d.ts +12 -0
  31. package/dist/renderer/webgl/webglRenderer.d.ts +53 -0
  32. package/dist/renderer/webgpu/webgpuRenderer.d.ts +38 -0
  33. package/dist/types/character-settings.d.ts +4 -0
  34. package/dist/types/character.d.ts +9 -3
  35. package/dist/types/index.d.ts +56 -23
  36. package/dist/utils/animation-interpolation.d.ts +30 -5
  37. package/dist/utils/client-id.d.ts +5 -0
  38. package/dist/utils/conversationId.d.ts +18 -0
  39. package/dist/utils/error-utils.d.ts +24 -1
  40. package/dist/utils/id-manager.d.ts +26 -0
  41. package/dist/utils/logger.d.ts +4 -1
  42. package/dist/utils/posthog-tracker.d.ts +27 -5
  43. package/dist/utils/pwa-cache-manager.d.ts +36 -0
  44. package/dist/utils/usage-tracker.d.ts +17 -2
  45. package/dist/vite.d.ts +16 -1
  46. package/dist/wasm/avatarCoreAdapter.d.ts +145 -0
  47. package/dist/wasm/avatarCoreMemory.d.ts +52 -0
  48. package/package.json +3 -3
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ /**
2
+ *AvatarKit SDK - 统一公开接口
3
+ */
1
4
  export { Avatar } from './core/Avatar';
2
5
  export { AvatarController } from './core/AvatarController';
3
6
  export { AvatarSDK } from './core/AvatarSDK';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b, c, m, f, d, j, g, C, i, D, E, k, h, L, R, n } from "./index-CF8Fvg7k.js";
1
+ import { b, c, m, f, d, j, g, C, i, D, E, k, h, L, R, n } from "./index-BT9yxWW8.js";
2
2
  export {
3
3
  b as Avatar,
4
4
  c as AvatarController,
@@ -1 +1,9 @@
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
+ */
1
9
  export {};
@@ -1 +1,12 @@
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
+ */
1
12
  export declare function computeCovariance3D(scale: number[], rotation: number[]): number[][];
@@ -1 +1,11 @@
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
+ */
1
11
  export declare function sortSplats(packedData: Float32Array, cameraPosition: [number, number, number], cameraForward: [number, number, number]): Uint32Array;
@@ -1 +1,13 @@
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
+ */
1
13
  export declare function reorderPackedData(packedData: Float32Array, sortOrder: Uint32Array): Float32Array;
@@ -24,20 +24,73 @@ export declare class WebGLRenderer implements I3DGSRenderer {
24
24
  private blitVAO;
25
25
  constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number], alpha?: boolean);
26
26
  private alpha;
27
+ /**
28
+ * 初始化 WebGL 渲染器
29
+ */
27
30
  initialize(): Promise<void>;
31
+ /**
32
+ * 设置着色器位置
33
+ */
28
34
  private setupShaderLocations;
35
+ /**
36
+ * 设置 WebGL 渲染状态
37
+ */
29
38
  private setupWebGLState;
39
+ /**
40
+ * 创建渲染缓冲区
41
+ */
30
42
  private createBuffers;
43
+ /**
44
+ * 创建四边形顶点缓冲区(实例化渲染用)
45
+ */
31
46
  private createQuadVertexBuffer;
47
+ /**
48
+ * 从已打包数据加载(零拷贝,GPU 优化路径)
49
+ * 🚀 性能优化版本:直接使用 WASM 输出的 packed 数据
50
+ * 🚀 Buffer 复用:避免每帧重新分配,使用 bufferSubData 更新
51
+ * @param packedData Float32Array [pos3, color4, cov6] x N 个点
52
+ * @param pointCount 点数
53
+ * @param _sortOrder WebGL 忽略此参数(已在 RenderSystem 中重排序)
54
+ */
32
55
  loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, _sortOrder?: Uint32Array): void;
56
+ /**
57
+ * 上传数据到 GPU
58
+ */
33
59
  private uploadToGPU;
60
+ /**
61
+ * 设置实例化渲染顶点属性
62
+ */
34
63
  private setupVertexAttributes;
64
+ /**
65
+ * 渲染一帧
66
+ */
35
67
  render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number], transform?: Transform): void;
68
+ /**
69
+ * 创建着色器程序
70
+ */
36
71
  private createShaderProgram;
72
+ /**
73
+ * 更新背景颜色
74
+ */
37
75
  updateBackgroundColor(backgroundColor: [number, number, number, number]): void;
76
+ /**
77
+ * 渲染 3DGS 场景(公共方法,用于直接渲染和渲染到 framebuffer)
78
+ */
38
79
  private render3DGS;
80
+ /**
81
+ * 创建 framebuffer 和 render texture
82
+ */
39
83
  private createFramebuffer;
84
+ /**
85
+ * 创建 blit shader(用于绘制 render texture 到屏幕)
86
+ */
40
87
  private createBlitShader;
88
+ /**
89
+ * 将 render texture 绘制到屏幕(应用 transform)
90
+ */
41
91
  private blitToScreen;
92
+ /**
93
+ * 清理资源
94
+ */
42
95
  dispose(): void;
43
96
  }
@@ -26,16 +26,54 @@ export declare class WebGPURenderer implements I3DGSRenderer {
26
26
  private blitQuadBuffer;
27
27
  private blitSampler;
28
28
  constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number], alpha?: boolean);
29
+ /**
30
+ * 初始化 WebGPU 渲染器
31
+ */
29
32
  initialize(): Promise<void>;
33
+ /**
34
+ * 创建 Uniform Buffer
35
+ */
30
36
  private createUniformBuffer;
37
+ /**
38
+ * 创建四边形顶点缓冲区(实例化渲染用)
39
+ */
31
40
  private createQuadVertexBuffer;
41
+ /**
42
+ * 创建 Render Pipeline
43
+ */
32
44
  private createRenderPipeline;
45
+ /**
46
+ * 创建 Blit Pipeline(用于绘制 render texture 到屏幕)
47
+ */
33
48
  private createBlitPipeline;
49
+ /**
50
+ * 创建 render texture 和 depth texture
51
+ */
34
52
  private createRenderTexture;
53
+ /**
54
+ * 从已打包数据加载
55
+ * 🚀 间接索引渲染:packedData 是原始数据,sortOrder 是排序索引
56
+ * 🚀 完全消除 CPU 重排序开销
57
+ */
35
58
  loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, sortOrder?: Uint32Array): void;
59
+ /**
60
+ * 渲染一帧
61
+ */
36
62
  render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number], transform?: Transform): void;
63
+ /**
64
+ * 将 render texture 绘制到屏幕(应用 transform)
65
+ */
37
66
  private blitToScreen;
67
+ /**
68
+ * 更新 Uniform Buffer
69
+ */
38
70
  private updateUniforms;
71
+ /**
72
+ * 更新背景颜色
73
+ */
39
74
  updateBackgroundColor(backgroundColor: [number, number, number, number]): void;
75
+ /**
76
+ * 清理资源
77
+ */
40
78
  dispose(): void;
41
79
  }
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Character settings type definitions for character templates
3
+ * Backend guarantees the schema although it is weakly typed in proto.
4
+ */
1
5
  export interface EyelidSettings {
2
6
  auto_eyelid_adjustment: boolean;
3
7
  enabled: boolean;
@@ -1,6 +1,8 @@
1
1
  import { CharacterAsset } from '../generated/driveningress/v2/driveningress';
2
2
  import { CameraSettings, CharacterSettings } from './character-settings';
3
-
3
+ /**
4
+ * 角色元数据
5
+ */
4
6
  export type CharacterMeta = CharacterAsset & {
5
7
  characterSettings?: CharacterSettings;
6
8
  };
@@ -10,12 +12,16 @@ export type PreloadResources<T> = {
10
12
  export type PreloadCameraSettings = PreloadResources<{
11
13
  camera: CameraSettings;
12
14
  }>;
13
-
15
+ /**
16
+ * 资源类型枚举
17
+ */
14
18
  export declare enum ResourceType {
15
19
  CAMERA = "camera",
16
20
  ANIMATION_IDLE = "frameIdle",
17
21
  MODEL_SHAPE = "shape",
18
22
  MODEL_GS = "gsStandard"
19
23
  }
20
-
24
+ /**
25
+ * 提取所有资源 URL
26
+ */
21
27
  export declare function extractResourceUrls(meta: CharacterMeta): Record<ResourceType, string | null>;
@@ -1,41 +1,43 @@
1
+ /**
2
+ * Unified public types & interfaces
3
+ */
1
4
  export declare enum Environment {
2
5
  cn = "cn",
3
6
  intl = "intl"
4
7
  }
5
8
  export declare enum DrivingServiceMode {
6
-
9
+ /** Driven by SDK directly */
7
10
  sdk = "sdk",
8
-
11
+ /** Driven by host application */
9
12
  host = "host"
10
13
  }
11
14
  export declare enum LogLevel {
12
-
15
+ /** Disable all logs */
13
16
  off = "off",
14
-
17
+ /** Error logs only */
15
18
  error = "error",
16
-
19
+ /** Warning and error logs */
17
20
  warning = "warning",
18
-
21
+ /** All logs (info, warning, error), default value */
19
22
  all = "all"
20
23
  }
21
24
  export interface AudioFormat {
25
+ /** Channel count, fixed to 1 (mono) */
22
26
  readonly channelCount: 1;
27
+ /** Sample rate, supported: 8000, 16000, 22050, 24000, 32000, 44100, 48000, default: 16000 */
23
28
  readonly sampleRate: number;
24
29
  }
25
30
  export interface Configuration {
26
31
  readonly environment: Environment;
32
+ /** Driving service mode, default is sdk */
27
33
  readonly drivingServiceMode?: DrivingServiceMode;
34
+ /** Log level, default is off */
28
35
  readonly logLevel?: LogLevel;
36
+ /** Audio format configuration, default is { channelCount: 1, sampleRate: 16000 } */
29
37
  readonly audioFormat?: AudioFormat;
38
+ /** Custom character data API base URL (optional, if provided will be used preferentially, otherwise use environment-configured sdkApiBaseUrl) */
30
39
  readonly characterApiBaseUrl?: string;
31
40
  }
32
- export interface SdkConfigResponse {
33
- endpoints: {
34
- cn?: string;
35
- intl?: string;
36
- us?: string;
37
- };
38
- }
39
41
  export declare enum LoadProgress {
40
42
  downloading = "downloading",
41
43
  completed = "completed",
@@ -53,25 +55,25 @@ export declare enum ConnectionState {
53
55
  failed = "failed"
54
56
  }
55
57
  export declare enum ConversationState {
56
-
58
+ /** Idle state (breathing animation) */
57
59
  idle = "idle",
58
-
60
+ /** Playing state */
59
61
  playing = "playing",
60
-
62
+ /** Pausing state */
61
63
  pausing = "pausing"
62
64
  }
63
65
  export declare enum ErrorCode {
64
-
66
+ /** AppID not recognized (reserved, future appID validation logic) */
65
67
  appIDUnrecognized = "appIDUnrecognized",
66
-
68
+ /** AvatarID not recognized */
67
69
  avatarIDUnrecognized = "avatarIDUnrecognized",
68
-
70
+ /** Session Token invalid */
69
71
  sessionTokenInvalid = "sessionTokenInvalid",
70
-
72
+ /** Session Token expired */
71
73
  sessionTokenExpired = "sessionTokenExpired",
72
-
74
+ /** Failed to fetch avatar metadata */
73
75
  failedToFetchAvatarMetadata = "failedToFetchAvatarMetadata",
74
-
76
+ /** Failed to download avatar assets */
75
77
  failedToDownloadAvatarAssets = "failedToDownloadAvatarAssets"
76
78
  }
77
79
  export declare class AvatarError extends Error {
@@ -95,18 +97,44 @@ export interface CameraConfig {
95
97
  up?: [number, number, number];
96
98
  aspect?: number;
97
99
  }
98
-
100
+ /**
101
+ * Animation keyframe data
102
+ * Used to represent avatar pose and expression parameters
103
+ */
104
+ export interface KeyframeData {
105
+ /** Translation [x, y, z] */
106
+ translation: number[];
107
+ /** Rotation [x, y, z] (Euler angles, in radians) */
108
+ rotation: number[];
109
+ /** Neck pose [x, y, z] (in radians) */
110
+ neckPose: number[];
111
+ /** Jaw pose [x, y, z] (in radians) */
112
+ jawPose: number[];
113
+ /** Eye pose [x, y, z, x, y, z] (3 parameters for each eye) */
114
+ eyePose: number[];
115
+ /** Eyelid [x, y] */
116
+ eyeLid: number[];
117
+ /** Expression parameters array */
118
+ expression: number[];
119
+ }
120
+ /**
121
+ * Post-processing parameter configuration
122
+ * Used to overlay in real-time on animation parameters returned by the server
123
+ */
99
124
  export interface PostProcessingConfig {
125
+ /** Rotation (Euler angles, in radians) */
100
126
  rotation?: {
101
127
  x?: number;
102
128
  y?: number;
103
129
  z?: number;
104
130
  };
131
+ /** Translation (position offset) */
105
132
  translation?: {
106
133
  x?: number;
107
134
  y?: number;
108
135
  z?: number;
109
136
  };
137
+ /** Neck pose offset (in radians) */
110
138
  neckPose?: {
111
139
  x?: number;
112
140
  y?: number;
@@ -115,12 +143,14 @@ export interface PostProcessingConfig {
115
143
  weightY?: number;
116
144
  weightZ?: number;
117
145
  };
146
+ /** Jaw pose offset (in radians) */
118
147
  jawPose?: {
119
148
  x?: number;
120
149
  y?: number;
121
150
  z?: number;
122
151
  weight?: number;
123
152
  };
153
+ /** Eye pose offset (in radians) */
124
154
  eyePose?: {
125
155
  x?: number;
126
156
  y?: number;
@@ -129,8 +159,11 @@ export interface PostProcessingConfig {
129
159
  weightY?: number;
130
160
  weightZ?: number;
131
161
  };
162
+ /** Eye blink value (-1.0 to 1.0, larger value means more closed) */
132
163
  eyeBlink?: number;
164
+ /** Expression weight (0.0-2.0, 0=no expression, 1=normal, >1=enhanced) */
133
165
  expressionWeight?: number;
166
+ /** Eye tracking complete configuration (real-time control of eye_focus, must provide complete configuration) */
134
167
  eyefocus?: {
135
168
  enabled: boolean;
136
169
  auto_eyelid_adjustment?: boolean;
@@ -1,11 +1,36 @@
1
1
  import { Flame } from '../generated/driveningress/v1/driveningress';
2
-
2
+ /**
3
+ * 线性插值(旧实现)
4
+ * @param from 起始 Flame
5
+ * @param to 目标 Flame
6
+ * @param progress 进度 (0-1)
7
+ */
3
8
  export declare function linearLerp(from: Flame, to: Flame, progress: number): Flame;
4
-
9
+ /**
10
+ * 使用线性插值生成过渡帧(旧实现,保留用于兼容)
11
+ * @param from 起始 Flame
12
+ * @param to 目标 Flame
13
+ * @param durationMs 总过渡时长 (e.g. 400ms)
14
+ * @param fps Frames per second (default 25)
15
+ */
5
16
  export declare function generateTransitionFramesLinear(from: Flame, to: Flame, durationMs: number, fps?: number): Flame[];
6
-
17
+ /**
18
+ * Bezier 曲线插值(使用不同部位的不同曲线和时间缩放)
19
+ * @param from 起始 Flame
20
+ * @param to 目标 Flame
21
+ * @param progress 全局进度 (0-1)
22
+ */
7
23
  export declare function bezierLerp(from: Flame, to: Flame, progress: number): Flame;
8
-
24
+ /**
25
+ * Generate transition keyframes between two Flame states with layered timing
26
+ * Different facial components transition at different speeds and timings
27
+ * @param from 起始 Flame
28
+ * @param to 目标 Flame
29
+ * @param durationMs 总过渡时长 (e.g. 400ms)
30
+ * @param fps Frames per second (default 25)
31
+ */
9
32
  export declare function generateTransitionFrames(from: Flame, to: Flame, durationMs: number, fps?: number): Flame[];
10
-
33
+ /**
34
+ * Create a neutral Flame
35
+ */
11
36
  export declare function createNeutralFlame(): Flame;
@@ -1 +1,6 @@
1
+ /**
2
+ * Client ID 管理工具
3
+ * 用于生成和持久化用户设备唯一标识
4
+ * @internal
5
+ */
1
6
  export {};
@@ -1 +1,19 @@
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
+ */
1
19
  export declare function generateConversationId(): string;
@@ -1,3 +1,26 @@
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
+ */
1
19
  export declare function errorToMessage(err: unknown): string;
2
-
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
+ */
3
26
  export declare function errorToDetailedMessage(err: unknown): string;
@@ -1,3 +1,11 @@
1
+ /**
2
+ * ID 管理器
3
+ * 统一管理 SDK 中所有类型的 ID
4
+ * @internal
5
+ */
6
+ /**
7
+ * ID 类型定义
8
+ */
1
9
  export interface SdkIds {
2
10
  clientId: string;
3
11
  userId: string | null;
@@ -16,15 +24,30 @@ declare class IdManager {
16
24
  getAppId(): string | null;
17
25
  setSessionToken(token: string | null): void;
18
26
  getSessionToken(): string | null;
27
+ /**
28
+ * 生成新的 connectionId(用于 WebSocket 连接)
29
+ */
19
30
  generateConnectionId(): string;
31
+ /**
32
+ * 设置 connectionId(用于从服务器接收到的 connectionId)
33
+ */
20
34
  setConnectionId(connectionId: string | null): void;
21
35
  getConnectionId(): string | null;
22
36
  clearConnectionId(): void;
37
+ /**
38
+ * 生成新的 conversationId(用于每次对话)
39
+ */
23
40
  generateNewConversationId(): string;
24
41
  getConversationId(): string | null;
25
42
  setConversationId(conversationId: string | null): void;
26
43
  clearConversationId(): void;
44
+ /**
45
+ * 获取所有 ID(用于日志上报)
46
+ */
27
47
  getAllIds(): Readonly<SdkIds>;
48
+ /**
49
+ * 获取公共日志参数(包含所有必要的 ID)
50
+ */
28
51
  getLogContext(): {
29
52
  client_id: string;
30
53
  user_id: string;
@@ -32,6 +55,9 @@ declare class IdManager {
32
55
  connection_id?: string;
33
56
  conversation_id?: string;
34
57
  };
58
+ /**
59
+ * 清理所有 ID(用于测试或重置)
60
+ */
35
61
  clear(): void;
36
62
  }
37
63
  export declare const idManager: IdManager;
@@ -1,7 +1,10 @@
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
-
4
+ /**
5
+ * 设置 SDK 日志等级
6
+ * @param level SDK 的 LogLevel 枚举值
7
+ */
5
8
  export declare function setLogLevel(level: LogLevel): void;
6
9
  export declare const loggerWithUnknown: {
7
10
  error: (message: string, error?: unknown) => void;
@@ -1,11 +1,33 @@
1
1
  import { Environment } from '../types';
2
-
2
+ /**
3
+ * 初始化 PostHog(需要传入环境信息和 SDK 版本)
4
+ */
3
5
  export declare function initializePostHog(environment: Environment, version: string): void;
4
-
6
+ /**
7
+ * 上报事件到 PostHog
8
+ * @param event 事件名称
9
+ * @param level 日志级别
10
+ * @param contents 事件内容
11
+ */
5
12
  export declare function trackEvent(event: string, level?: 'debug' | 'info' | 'warning' | 'error', contents?: Record<string, unknown>): void;
6
-
13
+ /**
14
+ * 使用 sendBeacon 同步发送关键事件(用于页面关闭时)
15
+ * PostHog 本身支持在页面关闭时自动发送,但我们可以手动触发
16
+ * @param event 事件名称
17
+ * @param level 日志级别
18
+ * @param contents 事件内容
19
+ * @returns 是否发送成功
20
+ */
7
21
  export declare function sendEventViaBeacon(event: string, level?: 'debug' | 'info' | 'warning' | 'error', contents?: Record<string, unknown>): boolean;
8
-
22
+ /**
23
+ * 清理 PostHog(刷新剩余事件)
24
+ */
9
25
  export declare function cleanupPostHog(): void;
10
-
26
+ /**
27
+ * 统一的 Telemetry 日志接口
28
+ * 用于 SDK 内部上报日志到 PostHog
29
+ * @param event 事件名称
30
+ * @param level 日志级别
31
+ * @param contents 日志内容
32
+ */
11
33
  export declare function logEvent(event: string, level?: 'debug' | 'info' | 'warning' | 'error', contents?: Record<string, unknown>): void;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * PWA Cache Manager
3
+ * Manages Service Worker Cache for character resources and template resources
4
+ * @internal
5
+ */
6
+ /**
7
+ * PWA Cache Manager
8
+ * Manages character resources cache (per character) and template resources cache (versioned)
9
+ */
1
10
  export declare class PwaCacheManager {
2
11
  private static readonly TEMPLATE_RESOURCE_VERSION;
3
12
  private static readonly TEMPLATE_CACHE_NAME;
@@ -5,12 +14,39 @@ export declare class PwaCacheManager {
5
14
  private static readonly CHARACTER_CACHE_PREFIX;
6
15
  private static readonly CHARACTER_CACHE_SUFFIX;
7
16
  private static readonly MAX_CHARACTER_CACHE_ENTRIES;
17
+ /**
18
+ * 检查是否支持 Cache API
19
+ */
8
20
  static isSupported(): boolean;
21
+ /**
22
+ * 获取角色缓存名称
23
+ */
9
24
  private static getCharacterCacheName;
25
+ /**
26
+ * 从角色缓存获取资源
27
+ */
10
28
  static getCharacterResource(characterId: string, url: string): Promise<ArrayBuffer | null>;
29
+ /**
30
+ * 将角色资源写入缓存
31
+ */
11
32
  static putCharacterResource(characterId: string, url: string, data: ArrayBuffer): Promise<void>;
33
+ /**
34
+ * 从模板缓存获取资源
35
+ */
12
36
  static getTemplateResource(url: string): Promise<ArrayBuffer | null>;
37
+ /**
38
+ * 将模板资源写入缓存
39
+ * 模板资源不设置数量限制,永久保留直到版本更新
40
+ */
13
41
  static putTemplateResource(url: string, data: ArrayBuffer): Promise<void>;
42
+ /**
43
+ * 清理角色缓存
44
+ */
14
45
  static clearCharacterCache(characterId: string): Promise<void>;
46
+ /**
47
+ * 检查模板缓存版本,如果版本变化则清理
48
+ * 使用独立的模板资源版本号(不依赖 SDK 版本),这样不同 SDK 版本可以共享相同模板资源的缓存
49
+ * @returns true 如果版本变化并清理了缓存,false 否则
50
+ */
15
51
  static checkTemplateCacheVersion(): Promise<boolean>;
16
52
  }
@@ -1,5 +1,20 @@
1
+ /**
2
+ * 使用情况追踪工具
3
+ * 用于判断首次使用、每日活跃等状态
4
+ * @internal
5
+ */
6
+ /**
7
+ * 检查是否为首次使用
8
+ * @returns true 如果是首次使用,false 如果不是
9
+ */
1
10
  export declare function isFirstUse(): boolean;
2
-
11
+ /**
12
+ * 检查今天是否已经活跃过
13
+ * @returns true 如果今天首次活跃,false 如果今天已经活跃过
14
+ */
3
15
  export declare function isDailyActive(): boolean;
4
-
16
+ /**
17
+ * 获取最后活跃日期
18
+ * @returns 最后活跃日期(YYYY-MM-DD),如果不存在则返回 null
19
+ */
5
20
  export declare function getLastActiveDate(): string | null;