@spatialwalk/avatarkit 1.0.0-beta.1
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.
- package/README.md +375 -0
- package/dist/StreamingAudioPlayer-C2TfYsO8.js +293 -0
- package/dist/StreamingAudioPlayer-C2TfYsO8.js.map +1 -0
- package/dist/animation/AnimationWebSocketClient.d.ts +50 -0
- package/dist/animation/AnimationWebSocketClient.d.ts.map +1 -0
- package/dist/animation/utils/eventEmitter.d.ts +13 -0
- package/dist/animation/utils/eventEmitter.d.ts.map +1 -0
- package/dist/animation/utils/flameConverter.d.ts +26 -0
- package/dist/animation/utils/flameConverter.d.ts.map +1 -0
- package/dist/audio/AnimationPlayer.d.ts +53 -0
- package/dist/audio/AnimationPlayer.d.ts.map +1 -0
- package/dist/audio/StreamingAudioPlayer.d.ts +113 -0
- package/dist/audio/StreamingAudioPlayer.d.ts.map +1 -0
- package/dist/avatar_core_wasm-DmkU6dYn.js +1666 -0
- package/dist/avatar_core_wasm-DmkU6dYn.js.map +1 -0
- package/dist/avatar_core_wasm.wasm +0 -0
- package/dist/config/app-config.d.ts +48 -0
- package/dist/config/app-config.d.ts.map +1 -0
- package/dist/config/constants.d.ts +13 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/region-config.d.ts +17 -0
- package/dist/config/region-config.d.ts.map +1 -0
- package/dist/config/sdk-config-loader.d.ts +12 -0
- package/dist/config/sdk-config-loader.d.ts.map +1 -0
- package/dist/core/Avatar.d.ts +23 -0
- package/dist/core/Avatar.d.ts.map +1 -0
- package/dist/core/AvatarController.d.ts +125 -0
- package/dist/core/AvatarController.d.ts.map +1 -0
- package/dist/core/AvatarDownloader.d.ts +100 -0
- package/dist/core/AvatarDownloader.d.ts.map +1 -0
- package/dist/core/AvatarKit.d.ts +60 -0
- package/dist/core/AvatarKit.d.ts.map +1 -0
- package/dist/core/AvatarManager.d.ts +26 -0
- package/dist/core/AvatarManager.d.ts.map +1 -0
- package/dist/core/AvatarView.d.ts +158 -0
- package/dist/core/AvatarView.d.ts.map +1 -0
- package/dist/generated/driveningress/v1/driveningress.d.ts +80 -0
- package/dist/generated/driveningress/v1/driveningress.d.ts.map +1 -0
- package/dist/generated/driveningress/v2/driveningress.d.ts +81 -0
- package/dist/generated/driveningress/v2/driveningress.d.ts.map +1 -0
- package/dist/generated/google/protobuf/any.d.ts +145 -0
- package/dist/generated/google/protobuf/any.d.ts.map +1 -0
- package/dist/generated/google/protobuf/struct.d.ts +108 -0
- package/dist/generated/google/protobuf/struct.d.ts.map +1 -0
- package/dist/generated/google/protobuf/timestamp.d.ts +129 -0
- package/dist/generated/google/protobuf/timestamp.d.ts.map +1 -0
- package/dist/generated/jsonapi/v1/base.d.ts +140 -0
- package/dist/generated/jsonapi/v1/base.d.ts.map +1 -0
- package/dist/generated/platform/v1/asset_groups.d.ts +225 -0
- package/dist/generated/platform/v1/asset_groups.d.ts.map +1 -0
- package/dist/generated/platform/v1/assets.d.ts +149 -0
- package/dist/generated/platform/v1/assets.d.ts.map +1 -0
- package/dist/generated/platform/v1/character.d.ts +395 -0
- package/dist/generated/platform/v1/character.d.ts.map +1 -0
- package/dist/generated/platform/v1/redeem.d.ts +22 -0
- package/dist/generated/platform/v1/redeem.d.ts.map +1 -0
- package/dist/index-DwhR9l52.js +9712 -0
- package/dist/index-DwhR9l52.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/renderer/RenderSystem.d.ts +77 -0
- package/dist/renderer/RenderSystem.d.ts.map +1 -0
- package/dist/renderer/covariance.d.ts +13 -0
- package/dist/renderer/covariance.d.ts.map +1 -0
- package/dist/renderer/renderer.d.ts +8 -0
- package/dist/renderer/renderer.d.ts.map +1 -0
- package/dist/renderer/sortSplats.d.ts +12 -0
- package/dist/renderer/sortSplats.d.ts.map +1 -0
- package/dist/renderer/webgl/reorderData.d.ts +14 -0
- package/dist/renderer/webgl/reorderData.d.ts.map +1 -0
- package/dist/renderer/webgl/webglRenderer.d.ts +66 -0
- package/dist/renderer/webgl/webglRenderer.d.ts.map +1 -0
- package/dist/renderer/webgpu/webgpuRenderer.d.ts +54 -0
- package/dist/renderer/webgpu/webgpuRenderer.d.ts.map +1 -0
- package/dist/types/character-settings.d.ts +23 -0
- package/dist/types/character-settings.d.ts.map +1 -0
- package/dist/types/character.d.ts +39 -0
- package/dist/types/character.d.ts.map +1 -0
- package/dist/types/index.d.ts +68 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/animation-interpolation.d.ts +17 -0
- package/dist/utils/animation-interpolation.d.ts.map +1 -0
- package/dist/utils/error-utils.d.ts +27 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/posthog-tracker.d.ts +82 -0
- package/dist/utils/posthog-tracker.d.ts.map +1 -0
- package/dist/utils/reqId.d.ts +20 -0
- package/dist/utils/reqId.d.ts.map +1 -0
- package/dist/utils/toast.d.ts +74 -0
- package/dist/utils/toast.d.ts.map +1 -0
- package/dist/wasm/avatarCoreAdapter.d.ts +188 -0
- package/dist/wasm/avatarCoreAdapter.d.ts.map +1 -0
- package/dist/wasm/avatarCoreMemory.d.ts +141 -0
- package/dist/wasm/avatarCoreMemory.d.ts.map +1 -0
- package/package.json +62 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPAvatar SDK - 统一公开接口
|
|
3
|
+
*/
|
|
4
|
+
export { APP_CONFIG } from './config/app-config';
|
|
5
|
+
export { Avatar } from './core/Avatar';
|
|
6
|
+
export { AvatarController } from './core/AvatarController';
|
|
7
|
+
export { AvatarKit } from './core/AvatarKit';
|
|
8
|
+
export { AvatarManager } from './core/AvatarManager';
|
|
9
|
+
export { AvatarView } from './core/AvatarView';
|
|
10
|
+
export * from './types';
|
|
11
|
+
export type { CharacterInfo, FlameInfo } from './wasm/avatarCoreAdapter';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C,cAAc,SAAS,CAAA;AAGvB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { A as s, a as o, b as e, c as t, d as n, f as A, e as v, C as l, E as c, L as g, R as i, S as u, g as C, h as M, i as P } from "./index-DwhR9l52.js";
|
|
2
|
+
export {
|
|
3
|
+
s as APP_CONFIG,
|
|
4
|
+
o as Avatar,
|
|
5
|
+
e as AvatarController,
|
|
6
|
+
t as AvatarKit,
|
|
7
|
+
n as AvatarManager,
|
|
8
|
+
A as AvatarState,
|
|
9
|
+
v as AvatarView,
|
|
10
|
+
l as ConnectionState,
|
|
11
|
+
c as Environment,
|
|
12
|
+
g as LoadProgress,
|
|
13
|
+
i as ResourceType,
|
|
14
|
+
u as SPAvatarError,
|
|
15
|
+
C as extractResourceUrls,
|
|
16
|
+
M as hasMonologue,
|
|
17
|
+
P as hasMonologueFromModelInfo
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { CameraConfig } from '../types';
|
|
2
|
+
import { RenderBackend } from './renderer';
|
|
3
|
+
export interface RenderSystemOptions {
|
|
4
|
+
canvas: HTMLCanvasElement;
|
|
5
|
+
preferBackend?: RenderBackend;
|
|
6
|
+
backgroundColor?: [number, number, number, number];
|
|
7
|
+
camera?: CameraConfig;
|
|
8
|
+
}
|
|
9
|
+
export declare class RenderSystem {
|
|
10
|
+
private renderer;
|
|
11
|
+
private backend;
|
|
12
|
+
private canvas;
|
|
13
|
+
private options;
|
|
14
|
+
private camera;
|
|
15
|
+
private viewMatrix;
|
|
16
|
+
private projectionMatrix;
|
|
17
|
+
private originalPackedData;
|
|
18
|
+
renderTime: number;
|
|
19
|
+
sortTime: number;
|
|
20
|
+
constructor(options: RenderSystemOptions);
|
|
21
|
+
/**
|
|
22
|
+
* 初始化渲染系统
|
|
23
|
+
*/
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* 加载已打包的 Splat 数据(零拷贝,GPU 格式)
|
|
27
|
+
* 直接接收 WASM 的 packed 数据
|
|
28
|
+
*
|
|
29
|
+
* @param packedData Float32Array [pos3, color4, cov6] x N 个点
|
|
30
|
+
*/
|
|
31
|
+
loadSplatsFromPackedData(packedData: Float32Array): void;
|
|
32
|
+
/**
|
|
33
|
+
* 渲染一帧
|
|
34
|
+
*/
|
|
35
|
+
renderFrame(): void;
|
|
36
|
+
/**
|
|
37
|
+
* 更新相机参数
|
|
38
|
+
*/
|
|
39
|
+
updateCamera(params: Partial<CameraConfig>): void;
|
|
40
|
+
/**
|
|
41
|
+
* 处理窗口大小变化
|
|
42
|
+
*/
|
|
43
|
+
handleResize(): void;
|
|
44
|
+
/**
|
|
45
|
+
* 获取当前使用的后端
|
|
46
|
+
*/
|
|
47
|
+
getBackend(): RenderBackend | null;
|
|
48
|
+
/**
|
|
49
|
+
* 清理资源
|
|
50
|
+
*/
|
|
51
|
+
dispose(): void;
|
|
52
|
+
/**
|
|
53
|
+
* 检查 WebGPU 支持
|
|
54
|
+
*/
|
|
55
|
+
private checkWebGPUSupport;
|
|
56
|
+
/**
|
|
57
|
+
* 更新相机长宽比
|
|
58
|
+
*/
|
|
59
|
+
private updateCameraAspect;
|
|
60
|
+
/**
|
|
61
|
+
* 更新相机矩阵
|
|
62
|
+
*/
|
|
63
|
+
private updateCameraMatrices;
|
|
64
|
+
/**
|
|
65
|
+
* 获取相机前向向量
|
|
66
|
+
*/
|
|
67
|
+
private getCameraForward;
|
|
68
|
+
/**
|
|
69
|
+
* 更新透视投影矩阵(复用缓冲区)
|
|
70
|
+
*/
|
|
71
|
+
private updatePerspectiveMatrix;
|
|
72
|
+
/**
|
|
73
|
+
* 更新视图矩阵 (Look At,复用缓冲区)
|
|
74
|
+
*/
|
|
75
|
+
private updateLookAtMatrix;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=RenderSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderSystem.d.ts","sourceRoot":"","sources":["../../renderer/RenderSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAA;AAQ9D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClD,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAqB;IAGpC,OAAO,CAAC,MAAM,CAGb;IAGD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,gBAAgB,CAAuB;IAG/C,OAAO,CAAC,kBAAkB,CAA4B;IAG/C,UAAU,SAAI;IACd,QAAQ,SAAI;gBAEP,OAAO,EAAE,mBAAmB;IAoBxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BjC;;;;;OAKG;IACH,wBAAwB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAQxD;;OAEG;IACH,WAAW,IAAI,IAAI;IAwCnB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAKjD;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,UAAU,IAAI,aAAa,GAAG,IAAI;IAIlC;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAoD3B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
export declare function computeCovariance3D(scale: number[], rotation: number[]): number[][];
|
|
13
|
+
//# sourceMappingURL=covariance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"covariance.d.ts","sourceRoot":"","sources":["../../renderer/covariance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,EAAE,CA6CZ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface I3DGSRenderer {
|
|
2
|
+
initialize: () => Promise<void>;
|
|
3
|
+
loadSplatsFromPackedData: (packedData: Float32Array, pointCount: number, sortOrder?: Uint32Array) => void;
|
|
4
|
+
render: (viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number]) => void;
|
|
5
|
+
dispose: () => void;
|
|
6
|
+
}
|
|
7
|
+
export type RenderBackend = 'webgl' | 'webgpu';
|
|
8
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../renderer/renderer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,wBAAwB,EAAE,CACxB,UAAU,EAAE,YAAY,EACxB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,WAAW,KACpB,IAAI,CAAA;IACT,MAAM,EAAE,CACN,UAAU,EAAE,YAAY,EACxB,gBAAgB,EAAE,YAAY,EAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,IAAI,CAAA;IACT,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
export declare function sortSplats(packedData: Float32Array, cameraPosition: [number, number, number], cameraForward: [number, number, number]): Uint32Array;
|
|
12
|
+
//# sourceMappingURL=sortSplats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortSplats.d.ts","sourceRoot":"","sources":["../../renderer/sortSplats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,YAAY,EACxB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,WAAW,CA4Db"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
export declare function reorderPackedData(packedData: Float32Array, sortOrder: Uint32Array): Float32Array;
|
|
14
|
+
//# sourceMappingURL=reorderData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reorderData.d.ts","sourceRoot":"","sources":["../../../renderer/webgl/reorderData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,YAAY,EACxB,SAAS,EAAE,WAAW,GACrB,YAAY,CAqBd"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { I3DGSRenderer } from '../renderer';
|
|
2
|
+
export declare class WebGLRenderer implements I3DGSRenderer {
|
|
3
|
+
private canvas;
|
|
4
|
+
private backgroundColor;
|
|
5
|
+
private gl;
|
|
6
|
+
private shaderProgram;
|
|
7
|
+
private uniformLocations;
|
|
8
|
+
private attributeLocations;
|
|
9
|
+
private splatBuffer;
|
|
10
|
+
private quadVertexBuffer;
|
|
11
|
+
private vertexArray;
|
|
12
|
+
private splatCount;
|
|
13
|
+
private isInitialized;
|
|
14
|
+
private splatBufferSize;
|
|
15
|
+
constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]);
|
|
16
|
+
/**
|
|
17
|
+
* 初始化 WebGL 渲染器
|
|
18
|
+
*/
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* 设置着色器位置
|
|
22
|
+
*/
|
|
23
|
+
private setupShaderLocations;
|
|
24
|
+
/**
|
|
25
|
+
* 设置 WebGL 渲染状态
|
|
26
|
+
*/
|
|
27
|
+
private setupWebGLState;
|
|
28
|
+
/**
|
|
29
|
+
* 创建渲染缓冲区
|
|
30
|
+
*/
|
|
31
|
+
private createBuffers;
|
|
32
|
+
/**
|
|
33
|
+
* 创建四边形顶点缓冲区(实例化渲染用)
|
|
34
|
+
*/
|
|
35
|
+
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
|
+
loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, _sortOrder?: Uint32Array): void;
|
|
45
|
+
/**
|
|
46
|
+
* 上传数据到 GPU
|
|
47
|
+
*/
|
|
48
|
+
private uploadToGPU;
|
|
49
|
+
/**
|
|
50
|
+
* 设置实例化渲染顶点属性
|
|
51
|
+
*/
|
|
52
|
+
private setupVertexAttributes;
|
|
53
|
+
/**
|
|
54
|
+
* 渲染一帧
|
|
55
|
+
*/
|
|
56
|
+
render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number]): void;
|
|
57
|
+
/**
|
|
58
|
+
* 创建着色器程序
|
|
59
|
+
*/
|
|
60
|
+
private createShaderProgram;
|
|
61
|
+
/**
|
|
62
|
+
* 清理资源
|
|
63
|
+
*/
|
|
64
|
+
dispose(): void;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=webglRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webglRenderer.d.ts","sourceRoot":"","sources":["../../../renderer/webgl/webglRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,EAAE,CAA+B;IACzC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,gBAAgB,CAA6C;IACrE,OAAO,CAAC,kBAAkB,CAAwB;IAElD,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,WAAW,CAA+B;IAElD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAQ;gBAEnB,MAAM,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAqBzF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;;;;;;OAOG;IACH,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW;IAW/F;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4E7B;;OAEG;IACH,MAAM,CACJ,UAAU,EAAE,YAAY,EACxB,gBAAgB,EAAE,YAAY,EAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IA6B9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2D3B;;OAEG;IACH,OAAO;CA+BR"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { I3DGSRenderer } from '../renderer';
|
|
2
|
+
export declare class WebGPURenderer implements I3DGSRenderer {
|
|
3
|
+
private canvas;
|
|
4
|
+
private backgroundColor;
|
|
5
|
+
private device;
|
|
6
|
+
private context;
|
|
7
|
+
private renderPipeline;
|
|
8
|
+
private quadVertexBuffer;
|
|
9
|
+
private uniformBuffer;
|
|
10
|
+
private uniformBindGroup;
|
|
11
|
+
private sortIndexBuffer;
|
|
12
|
+
private splatDataBuffer;
|
|
13
|
+
private storageBindGroup;
|
|
14
|
+
private lastSortOrder;
|
|
15
|
+
private bindGroupNeedsUpdate;
|
|
16
|
+
private splatCount;
|
|
17
|
+
private presentationFormat;
|
|
18
|
+
constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]);
|
|
19
|
+
/**
|
|
20
|
+
* 初始化 WebGPU 渲染器
|
|
21
|
+
*/
|
|
22
|
+
initialize(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* 创建 Uniform Buffer
|
|
25
|
+
*/
|
|
26
|
+
private createUniformBuffer;
|
|
27
|
+
/**
|
|
28
|
+
* 创建四边形顶点缓冲区(实例化渲染用)
|
|
29
|
+
*/
|
|
30
|
+
private createQuadVertexBuffer;
|
|
31
|
+
/**
|
|
32
|
+
* 创建 Render Pipeline
|
|
33
|
+
*/
|
|
34
|
+
private createRenderPipeline;
|
|
35
|
+
/**
|
|
36
|
+
* 从已打包数据加载
|
|
37
|
+
* 🚀 间接索引渲染:packedData 是原始数据,sortOrder 是排序索引
|
|
38
|
+
* 🚀 完全消除 CPU 重排序开销
|
|
39
|
+
*/
|
|
40
|
+
loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, sortOrder?: Uint32Array): void;
|
|
41
|
+
/**
|
|
42
|
+
* 渲染一帧
|
|
43
|
+
*/
|
|
44
|
+
render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number]): void;
|
|
45
|
+
/**
|
|
46
|
+
* 更新 Uniform Buffer
|
|
47
|
+
*/
|
|
48
|
+
private updateUniforms;
|
|
49
|
+
/**
|
|
50
|
+
* 清理资源
|
|
51
|
+
*/
|
|
52
|
+
dispose(): void;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=webgpuRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpuRenderer.d.ts","sourceRoot":"","sources":["../../../renderer/webgpu/webgpuRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAA4B;IAGpD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,kBAAkB,CAAiC;gBAE/C,MAAM,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAKzF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;YACW,oBAAoB;IAiHlC;;;;OAIG;IACH,wBAAwB,CACtB,UAAU,EAAE,YAAY,EACxB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,WAAW,GACtB,IAAI;IAoFP;;OAEG;IACH,MAAM,CACJ,UAAU,EAAE,YAAY,EACxB,gBAAgB,EAAE,YAAY,EAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,IAAI;IA0CP;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,IAAI,IAAI;CAiBhB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Character settings type definitions for character templates
|
|
3
|
+
* Backend guarantees the schema although it is weakly typed in proto.
|
|
4
|
+
*/
|
|
5
|
+
export interface EyelidSettings {
|
|
6
|
+
auto_eyelid_adjustment: boolean;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
eyelid_threshold: number;
|
|
9
|
+
targets: number[];
|
|
10
|
+
}
|
|
11
|
+
export interface CameraSettings {
|
|
12
|
+
fovXRadians: number;
|
|
13
|
+
fovYRadians: number;
|
|
14
|
+
rotation: number;
|
|
15
|
+
translationX: number;
|
|
16
|
+
translationY: number;
|
|
17
|
+
translationZ: number;
|
|
18
|
+
}
|
|
19
|
+
export interface CharacterSettings {
|
|
20
|
+
eyelid: EyelidSettings;
|
|
21
|
+
camera: CameraSettings;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=character-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-settings.d.ts","sourceRoot":"","sources":["../../types/character-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;CACvB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CharacterAsset } from '../generated/driveningress/v2/driveningress';
|
|
2
|
+
import { CameraSettings, CharacterSettings } from './character-settings';
|
|
3
|
+
/**
|
|
4
|
+
* 角色元数据
|
|
5
|
+
*/
|
|
6
|
+
export type CharacterMeta = CharacterAsset & {
|
|
7
|
+
characterSettings?: CharacterSettings;
|
|
8
|
+
};
|
|
9
|
+
export type PreloadResources<T> = {
|
|
10
|
+
version: string;
|
|
11
|
+
} & T;
|
|
12
|
+
export type PreloadCameraSettings = PreloadResources<{
|
|
13
|
+
camera: CameraSettings;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* 资源类型枚举
|
|
17
|
+
*/
|
|
18
|
+
export declare enum ResourceType {
|
|
19
|
+
CAMERA = "camera",
|
|
20
|
+
ANIMATION_IDLE = "frameIdle",
|
|
21
|
+
ANIMATION_MONO = "frameMono",
|
|
22
|
+
AUDIO_MONO = "audioMono",
|
|
23
|
+
MODEL_SHAPE = "shape",
|
|
24
|
+
MODEL_GS = "gsStandard"
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 提取所有资源 URL
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractResourceUrls(meta: CharacterMeta): Record<ResourceType, string | null>;
|
|
30
|
+
/**
|
|
31
|
+
* 检查角色是否有完整的独白资源
|
|
32
|
+
*/
|
|
33
|
+
export declare function hasMonologue(meta: CharacterMeta): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* 从 RealtimeCharacter 的 modelInfo JSON 中解析是否有独白
|
|
36
|
+
* modelInfo 是一个 JSON 字符串,包含角色的模型信息
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasMonologueFromModelInfo(modelInfo: string): boolean;
|
|
39
|
+
//# sourceMappingURL=character.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../../types/character.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAC3C,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,CAAC,CAAA;AAEL,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CAAA;AAEhF;;GAEG;AACH,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,cAAc,cAAc;IAC5B,cAAc,cAAc;IAC5B,UAAU,cAAc;IACxB,WAAW,UAAU;IACrB,QAAQ,eAAe;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,CAS5F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEzD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYpE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一公开类型 & 接口
|
|
3
|
+
*/
|
|
4
|
+
export declare enum Environment {
|
|
5
|
+
cn = "cn",
|
|
6
|
+
us = "us",
|
|
7
|
+
test = "test"
|
|
8
|
+
}
|
|
9
|
+
export interface Configuration {
|
|
10
|
+
readonly environment: Environment;
|
|
11
|
+
}
|
|
12
|
+
export interface SdkConfigResponse {
|
|
13
|
+
endpoints: {
|
|
14
|
+
cn?: string;
|
|
15
|
+
us?: string;
|
|
16
|
+
test?: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare enum LoadProgress {
|
|
20
|
+
downloading = "downloading",
|
|
21
|
+
completed = "completed",
|
|
22
|
+
failed = "failed"
|
|
23
|
+
}
|
|
24
|
+
export interface LoadProgressInfo {
|
|
25
|
+
type: LoadProgress;
|
|
26
|
+
progress?: number;
|
|
27
|
+
error?: Error;
|
|
28
|
+
}
|
|
29
|
+
export declare enum ConnectionState {
|
|
30
|
+
disconnected = "disconnected",
|
|
31
|
+
connecting = "connecting",
|
|
32
|
+
connected = "connected",
|
|
33
|
+
failed = "failed"
|
|
34
|
+
}
|
|
35
|
+
export declare enum AvatarState {
|
|
36
|
+
idle = "idle",// 空闲状态,呈现呼吸态
|
|
37
|
+
active = "active",// 活跃中,等待可播放内容
|
|
38
|
+
playing = "playing"
|
|
39
|
+
}
|
|
40
|
+
export declare class SPAvatarError extends Error {
|
|
41
|
+
code?: string | undefined;
|
|
42
|
+
constructor(message: string, code?: string | undefined);
|
|
43
|
+
}
|
|
44
|
+
export interface FlatSplatData {
|
|
45
|
+
positions: Float32Array;
|
|
46
|
+
scales: Float32Array;
|
|
47
|
+
rotations: Float32Array;
|
|
48
|
+
colors: Float32Array;
|
|
49
|
+
opacities: Float32Array;
|
|
50
|
+
pointCount: number;
|
|
51
|
+
}
|
|
52
|
+
export interface CameraConfig {
|
|
53
|
+
position: [number, number, number];
|
|
54
|
+
target: [number, number, number];
|
|
55
|
+
fov: number;
|
|
56
|
+
near: number;
|
|
57
|
+
far: number;
|
|
58
|
+
up?: [number, number, number];
|
|
59
|
+
aspect?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface RenderPerformanceStats {
|
|
62
|
+
renderTime: number;
|
|
63
|
+
sortTime: number;
|
|
64
|
+
backend: 'webgpu' | 'webgl' | null;
|
|
65
|
+
pointCount?: number;
|
|
66
|
+
}
|
|
67
|
+
export * from './character';
|
|
68
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,oBAAY,WAAW;IACrB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,IAAI,SAAS;CACd;AAGD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAClC;AAGD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE;QACT,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAGD,oBAAY,YAAY;IACtB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAGD,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAGD,oBAAY,WAAW;IACrB,IAAI,SAAS,CAAE,aAAa;IAC5B,MAAM,WAAW,CAAE,cAAc;IACjC,OAAO,YAAY;CACpB;AAGD,qBAAa,aAAc,SAAQ,KAAK;IACF,IAAI,CAAC,EAAE,MAAM;gBAArC,OAAO,EAAE,MAAM,EAAS,IAAI,CAAC,EAAE,MAAM,YAAA;CAIlD;AAID,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,YAAY,CAAA;IACvB,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,YAAY,CAAA;IACvB,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,YAAY,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAGD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAKD,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
*/
|
|
6
|
+
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
|
+
*/
|
|
12
|
+
export declare function generateTransitionFrames(from: Flame, to: Flame, durationMs: number, fps?: number): Flame[];
|
|
13
|
+
/**
|
|
14
|
+
* Create a neutral Flame
|
|
15
|
+
*/
|
|
16
|
+
export declare function createNeutralFlame(): Flame;
|
|
17
|
+
//# sourceMappingURL=animation-interpolation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-interpolation.d.ts","sourceRoot":"","sources":["../../utils/animation-interpolation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6CAA6C,CAAA;AAWxE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAkB1E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,KAAK,EACT,UAAU,EAAE,MAAM,EAClB,GAAG,SAAK,GACP,KAAK,EAAE,CAQT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAU1C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
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
|
+
*/
|
|
26
|
+
export declare function errorToDetailedMessage(err: unknown): string;
|
|
27
|
+
//# sourceMappingURL=error-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../../utils/error-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAyBnD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAM3D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Utility
|
|
3
|
+
* Environment-aware logger wrapper
|
|
4
|
+
* - Logs normally in test/dev environment
|
|
5
|
+
* - In production: silently logs to console
|
|
6
|
+
* - Errors and warnings are always reported to PostHog (when loaded)
|
|
7
|
+
*
|
|
8
|
+
* Usage: Replace `console.log()` with `logger.log()`
|
|
9
|
+
*/
|
|
10
|
+
export declare const logger: import('@guiiai/logg').Logg;
|
|
11
|
+
export declare const loggerWithUnknown: {
|
|
12
|
+
error: (message: string, error?: unknown) => void;
|
|
13
|
+
warn: (message: string, error?: unknown) => void;
|
|
14
|
+
useGlobalConfig: () => import('@guiiai/logg').Logg;
|
|
15
|
+
child: (fields?: Record<string, any>) => import('@guiiai/logg').Logg;
|
|
16
|
+
withContext: (context: string) => import('@guiiai/logg').Logg;
|
|
17
|
+
withLogLevel: (logLevel: import('@guiiai/logg').LogLevel) => import('@guiiai/logg').Logg;
|
|
18
|
+
withLogLevelString: (logLevelString: import('@guiiai/logg').LogLevelString) => import('@guiiai/logg').Logg;
|
|
19
|
+
withFormat: (format: import('@guiiai/logg').Format) => import('@guiiai/logg').Logg;
|
|
20
|
+
withFields: (fields: Record<string, any>) => import('@guiiai/logg').Logg;
|
|
21
|
+
withField: (key: string, value: any) => import('@guiiai/logg').Logg;
|
|
22
|
+
withError: (err: Error | unknown) => import('@guiiai/logg').Logg;
|
|
23
|
+
withCallStack: (errorLike: {
|
|
24
|
+
message: string;
|
|
25
|
+
stack?: string;
|
|
26
|
+
}) => import('@guiiai/logg').Logg;
|
|
27
|
+
debug: (message: any, ...optionalParams: [...any, string?]) => void;
|
|
28
|
+
verbose: (message: any, ...optionalParams: [...any, string?]) => void;
|
|
29
|
+
log: (message: any, ...optionalParams: any[]) => void;
|
|
30
|
+
errorWithError: (message: any, err: Error | unknown, ...optionalParams: any[]) => void;
|
|
31
|
+
withTimeFormat: (format: string) => import('@guiiai/logg').Logg;
|
|
32
|
+
withTimeFormatter: (fn: (inputDate: Date) => string) => import('@guiiai/logg').Logg;
|
|
33
|
+
withErrorProcessor: (fn: (err: Error | unknown) => Error | unknown) => import('@guiiai/logg').Logg;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,eAAO,MAAM,MAAM,6BAKC,CAAA;AAGpB,eAAO,MAAM,iBAAiB;qBAEX,MAAM,UAAU,OAAO;oBASxB,MAAM,UAAU,OAAO;;kBAPK,CAAC;;;;;;;;;;aAyC0hC,CAAC;;0BAAoT,GAAI;4BAA0U,GAAI;wBAAkU,GAAI;yDAA2vB,GAAI;;;;CAzBpxF,CAAA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostHog Error & Event Tracking Utility
|
|
3
|
+
*
|
|
4
|
+
* Centralized tracking for realtime mode errors, warnings, and events.
|
|
5
|
+
* Provides type-safe event tracking with privacy-aware property filtering.
|
|
6
|
+
*
|
|
7
|
+
* Environment-aware tracking:
|
|
8
|
+
* - Development (DEV=true): Tracking disabled for faster development
|
|
9
|
+
* - Test (VITE_ENV_TEST=true): Full detailed tracking enabled
|
|
10
|
+
* - Production (default): Minimal tracking without verbose debug info
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Event categories for organizing telemetry data
|
|
14
|
+
*/
|
|
15
|
+
export type EventCategory = 'connection' | 'audio' | 'vad' | 'sync' | 'playback' | 'wasm' | 'rendering' | 'user_action';
|
|
16
|
+
/**
|
|
17
|
+
* Connection tracking functions
|
|
18
|
+
*/
|
|
19
|
+
export declare const PostHogTracker: {
|
|
20
|
+
connection: {
|
|
21
|
+
connectStart: (characterId: string) => void;
|
|
22
|
+
connectSuccess: (characterId: string, durationMs: number) => void;
|
|
23
|
+
connectFailed: (characterId: string, error: string, retryCount?: number) => void;
|
|
24
|
+
reconnectAttempt: (retryCount: number) => void;
|
|
25
|
+
reconnectFailed: (retryCount: number, error: string) => void;
|
|
26
|
+
messageSendError: (messageType: string, error: string) => void;
|
|
27
|
+
messageDecodeError: (error: string) => void;
|
|
28
|
+
stateChange: (oldState: string, newState: string) => void;
|
|
29
|
+
};
|
|
30
|
+
audio: {
|
|
31
|
+
deviceAccessRequest: (deviceType: "microphone" | "speaker") => void;
|
|
32
|
+
deviceAccessGranted: (deviceType: "microphone" | "speaker") => void;
|
|
33
|
+
deviceAccessDenied: (deviceType: "microphone" | "speaker", error: string) => void;
|
|
34
|
+
bufferUnderrun: (bufferSize: number) => void;
|
|
35
|
+
decodeError: (error: string) => void;
|
|
36
|
+
contextInitFailed: (error: string) => void;
|
|
37
|
+
contextSuspended: () => void;
|
|
38
|
+
contextResumed: () => void;
|
|
39
|
+
};
|
|
40
|
+
vad: {
|
|
41
|
+
initializeStart: () => void;
|
|
42
|
+
initializeSuccess: (durationMs: number) => void;
|
|
43
|
+
initializeFailed: (error: string) => void;
|
|
44
|
+
speechStart: () => void;
|
|
45
|
+
speechEnd: (durationMs: number) => void;
|
|
46
|
+
speechReady: (audioDurationMs: number) => void;
|
|
47
|
+
blocked: (reason: string) => void;
|
|
48
|
+
unblocked: () => void;
|
|
49
|
+
restartFailed: (error: string) => void;
|
|
50
|
+
};
|
|
51
|
+
sync: {
|
|
52
|
+
bufferOverflow: (sessionId: string, bufferDurationMs: number) => void;
|
|
53
|
+
alignmentIssue: (sessionId: string, driftMs: number) => void;
|
|
54
|
+
sessionCreated: (sessionId: string) => void;
|
|
55
|
+
sessionCleanup: (sessionId: string, audioChunks: number, flameKeyframes: number) => void;
|
|
56
|
+
keyframeStarvation: (sessionId: string) => void;
|
|
57
|
+
audioChunkStarvation: (sessionId: string) => void;
|
|
58
|
+
};
|
|
59
|
+
playback: {
|
|
60
|
+
started: (sessionId: string) => void;
|
|
61
|
+
ended: (sessionId: string, durationMs: number, chunksPlayed: number) => void;
|
|
62
|
+
scheduleFailed: (sessionId: string, error: string) => void;
|
|
63
|
+
interrupted: (sessionId: string) => void;
|
|
64
|
+
};
|
|
65
|
+
wasm: {
|
|
66
|
+
computeError: (error: string) => void;
|
|
67
|
+
conversionError: (error: string) => void;
|
|
68
|
+
loadError: (error: string) => void;
|
|
69
|
+
};
|
|
70
|
+
rendering: {
|
|
71
|
+
renderLoopError: (error: string) => void;
|
|
72
|
+
splatLoadError: (error: string) => void;
|
|
73
|
+
textOnlyStateDetected: (durationMs: number) => void;
|
|
74
|
+
};
|
|
75
|
+
user: {
|
|
76
|
+
manualInterrupt: () => void;
|
|
77
|
+
textSent: (success: boolean, error?: string) => void;
|
|
78
|
+
speechSent: (success: boolean, error?: string) => void;
|
|
79
|
+
vadToggled: (enabled: boolean) => void;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=posthog-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog-tracker.d.ts","sourceRoot":"","sources":["../../utils/posthog-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH;;GAEG;AACH,MAAM,MAAM,aAAa,GACnB,YAAY,GACZ,OAAO,GACP,KAAK,GACL,MAAM,GACN,UAAU,GACV,MAAM,GACN,WAAW,GACX,aAAa,CAAA;AAyLnB;;GAEG;AACH,eAAO,MAAM,cAAc;;oCAGK,MAAM,KAAG,IAAI;sCAOX,MAAM,cAAc,MAAM,KAAG,IAAI;qCAQlC,MAAM,SAAS,MAAM,eAAc,MAAM,KAAO,IAAI;uCASlD,MAAM,KAAG,IAAI;sCAOd,MAAM,SAAS,MAAM,KAAG,IAAI;wCAQ1B,MAAM,SAAS,MAAM,KAAG,IAAI;oCAOhC,MAAM,KAAG,IAAI;gCAOjB,MAAM,YAAY,MAAM,KAAG,IAAI;;;0CAUrB,YAAY,GAAG,SAAS,KAAG,IAAI;0CAO/B,YAAY,GAAG,SAAS,KAAG,IAAI;yCAQhC,YAAY,GAAG,SAAS,SAAS,MAAM,KAAG,IAAI;qCASlD,MAAM,KAAG,IAAI;6BAOrB,MAAM,KAAG,IAAI;mCAOP,MAAM,KAAG,IAAI;gCAOlB,IAAI;8BAMN,IAAI;;;+BASH,IAAI;wCAOO,MAAM,KAAG,IAAI;kCAQnB,MAAM,KAAG,IAAI;2BAQtB,IAAI;gCAOG,MAAM,KAAG,IAAI;uCAON,MAAM,KAAG,IAAI;0BAO1B,MAAM,KAAG,IAAI;yBAOhB,IAAI;+BAMI,MAAM,KAAG,IAAI;;;oCAUR,MAAM,oBAAoB,MAAM,KAAG,IAAI;oCAQvC,MAAM,WAAW,MAAM,KAAG,IAAI;oCAQ9B,MAAM,KAAG,IAAI;oCAOb,MAAM,eAAe,MAAM,kBAAkB,MAAM,KAAG,IAAI;wCAStD,MAAM,KAAG,IAAI;0CAOX,MAAM,KAAG,IAAI;;;6BAU1B,MAAM,KAAG,IAAI;2BAOf,MAAM,cAAc,MAAM,gBAAgB,MAAM,KAAG,IAAI;oCAS9C,MAAM,SAAS,MAAM,KAAG,IAAI;iCAQ/B,MAAM,KAAG,IAAI;;;8BAUhB,MAAM,KAAG,IAAI;iCAQV,MAAM,KAAG,IAAI;2BAQnB,MAAM,KAAG,IAAI;;;iCAWP,MAAM,KAAG,IAAI;gCAOd,MAAM,KAAG,IAAI;4CAOD,MAAM,KAAG,IAAI;;;+BAU5B,IAAI;4BAQL,OAAO,UAAU,MAAM,KAAG,IAAI;8BAS5B,OAAO,UAAU,MAAM,KAAG,IAAI;8BAS9B,OAAO,KAAG,IAAI;;CAQvC,CAAA"}
|