@spatius/avatarkit 1.3.4-beta.1 → 1.3.4

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/CHANGELOG.md CHANGED
@@ -5,11 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [1.3.4-beta.1] - 2026-08-10
8
+ ## [1.3.4] - 2026-08-11
9
9
 
10
10
  ### Fixed
11
11
  - **The Opus uplink encoder now actually runs off the main thread.** Asset URLs were emitted as absolute paths (`/assets/…`), so any app not served from the domain root — a Vite dev server included — got HTML back for the worker request. The SDK logged `Worker unavailable, falling back to main-thread encode` and encoded every chunk on the main thread, stalling rendering for the whole of playback. URLs are now relative to the referencing chunk.
12
12
  - **Next.js builds no longer fail on the Opus workers.** `withAvatarkit` now copies the pre-built workers (and the sibling chunks they import) into `public/assets/`, and tells webpack to leave those files alone. Previously the bundler re-processed the ESM worker and Terser rejected it with `'import' and 'export' cannot be used outside of module code`, breaking `next build` outright on 1.3.1 and later.
13
+ - Internal telemetry only, no change to public API or runtime behaviour: `http.client.request.duration` no longer records a data point when an asset is served entirely from cache. Those entries carried a hardcoded `statusCode=200` and an empty `server.address`, and their sub-millisecond durations skewed the real network latency distribution. Cache hit rate and cache-hit latency remain available through `download_avatar_assets_latency` and `template_resources_load_measure`, both of which carry `cache_hit` and `cache_type`.
13
14
 
14
15
  ## [1.3.3] - 2026-08-08
15
16
 
@@ -1,8 +1,8 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { t as AvatarSDK } from "./AvatarSDK-kP9209qH.js";
3
- import { Mt as ErrorCode, S as recordHttpClientDuration, St as generateTraceId, c as logEvent, l as logMetric, t as logger, v as hostOf, wt as AvatarError } from "./logger-B-m_sm-g.js";
4
- import { n as APP_CONFIG, r as getFlameCdnBase, t as errorToMessage } from "./error-utils-CSFsFRMn.js";
5
- import { t as PwaCacheManager } from "./pwa-cache-manager-DYYf1j5t.js";
2
+ import { t as AvatarSDK } from "./AvatarSDK-BMjjoYiZ.js";
3
+ import { Mt as ErrorCode, S as recordHttpClientDuration, St as generateTraceId, c as logEvent, l as logMetric, t as logger, v as hostOf, wt as AvatarError } from "./logger-B_tTFAYq.js";
4
+ import { n as APP_CONFIG, r as getFlameCdnBase, t as errorToMessage } from "./error-utils-B76Nf6d6.js";
5
+ import { t as PwaCacheManager } from "./pwa-cache-manager-BxeZI1BU.js";
6
6
  //#region core/AvatarDownloader.ts
7
7
  var AvatarDownloader_exports = /* @__PURE__ */ __exportAll({ AvatarDownloader: () => AvatarDownloader });
8
8
  /**
@@ -1,6 +1,6 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { Ft as LogLevel, T as resolveSdkVersion, _ as fetchBootstrap, a as clientContextFields, b as cleanupOtelMetrics, c as logEvent, d as cleanupOtel, f as initializeOtel, g as clockSync, gt as OTEL_STREAM_NAME, ht as OTEL_PASSWORD, i as cleanupPostHog, jt as DrivingServiceMode, mt as OTEL_LOGS_ENDPOINT, n as setLogLevel, o as getLogsFeatureFlag, r as logSink, s as initializePostHog, t as logger, u as updatePostHogPersonPropertiesForFlags, w as getSdkPackage, x as initializeOtelMetrics, xt as idManager, yt as OTEL_USERNAME } from "./logger-B-m_sm-g.js";
3
- import { i as startInitTrace, n as initializeOtelTrace, t as cleanupOtelTrace } from "./otel-trace-DzdxTuWh.js";
2
+ import { Ft as LogLevel, T as resolveSdkVersion, _ as fetchBootstrap, a as clientContextFields, b as cleanupOtelMetrics, c as logEvent, d as cleanupOtel, f as initializeOtel, g as clockSync, gt as OTEL_STREAM_NAME, ht as OTEL_PASSWORD, i as cleanupPostHog, jt as DrivingServiceMode, mt as OTEL_LOGS_ENDPOINT, n as setLogLevel, o as getLogsFeatureFlag, r as logSink, s as initializePostHog, t as logger, u as updatePostHogPersonPropertiesForFlags, w as getSdkPackage, x as initializeOtelMetrics, xt as idManager, yt as OTEL_USERNAME } from "./logger-B_tTFAYq.js";
3
+ import { i as startInitTrace, n as initializeOtelTrace, t as cleanupOtelTrace } from "./otel-trace-DmmQrXv-.js";
4
4
  //#region node_modules/.pnpm/@bufbuild+protobuf@2.10.1/node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js
5
5
  /**
6
6
  * Read a 64 bit varint as two JS numbers.
@@ -3900,7 +3900,7 @@ var AvatarSDK = class {
3900
3900
  static _initializationState = "uninitialized";
3901
3901
  static _initializingPromise = null;
3902
3902
  static _configuration = null;
3903
- static _version = "1.3.4-beta.1";
3903
+ static _version = "1.3.4";
3904
3904
  static _avatarCore = null;
3905
3905
  static _cachedDeviceScore = null;
3906
3906
  static _rendererBackend = null;
@@ -4089,7 +4089,7 @@ var AvatarSDK = class {
4089
4089
  logger.log("[AvatarSDK] Loading template resources...");
4090
4090
  logEvent("template_init_start", "info", { stage: "sdk_init" });
4091
4091
  try {
4092
- const { AvatarDownloader } = await import("./AvatarDownloader-BZWkn3GG.js").then((n) => n.n);
4092
+ const { AvatarDownloader } = await import("./AvatarDownloader-CavxMpAz.js").then((n) => n.n);
4093
4093
  const templateResources = await new AvatarDownloader().loadUnifiedTemplate();
4094
4094
  if (await this._avatarCore.loadTemplateResourcesFromBuffers(templateResources)) logger.log("[AvatarSDK] Template resources initialized successfully");
4095
4095
  else logger.log("[AvatarSDK] Template resources already initialized, skipping...");
@@ -1,5 +1,5 @@
1
1
  import { n as __exportAll, r as __toESM, t as __commonJSMin } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { t as logger } from "./logger-B-m_sm-g.js";
2
+ import { t as logger } from "./logger-B_tTFAYq.js";
3
3
  /** Opus granule positions are always in 48 kHz samples, regardless of input rate. */
4
4
  var OPUS_GRANULE_RATE = 48e3;
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { t as logger } from "./logger-B-m_sm-g.js";
1
+ import { t as logger } from "./logger-B_tTFAYq.js";
2
2
  //#region audio/OpusDecoderProxy.ts
3
3
  var OpusDecoderProxy = class OpusDecoderProxy {
4
4
  worker = null;
@@ -21,7 +21,7 @@ var OpusDecoderProxy = class OpusDecoderProxy {
21
21
  } catch (err) {
22
22
  logger.warn("[Opus][DecoderProxy] Worker unavailable, falling back to main-thread decode:", err instanceof Error ? err.message : String(err));
23
23
  }
24
- const { OggOpusDecoder } = await import("./OpusCodec-DcBg4c9I.js").then((n) => n.n);
24
+ const { OggOpusDecoder } = await import("./OpusCodec-Cib3mtQ2.js").then((n) => n.n);
25
25
  proxy.fallbackDecoder = new OggOpusDecoder();
26
26
  proxy.backend = "main-thread";
27
27
  return proxy;
@@ -32,7 +32,7 @@ var OpusDecoderProxy = class OpusDecoderProxy {
32
32
  try {
33
33
  worker = new Worker(new URL(
34
34
  /* @vite-ignore */
35
- "" + new URL("assets/OpusDecoderWorker.worker-CGNXF5nb.js", import.meta.url).href,
35
+ "" + new URL("assets/OpusDecoderWorker.worker-BAd4MYA3.js", import.meta.url).href,
36
36
  "" + import.meta.url
37
37
  ), { type: "module" });
38
38
  } catch (err) {
@@ -1,5 +1,5 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { t as logger } from "./logger-B-m_sm-g.js";
2
+ import { t as logger } from "./logger-B_tTFAYq.js";
3
3
  //#region audio/OpusEncoderProxy.ts
4
4
  var OpusEncoderProxy_exports = /* @__PURE__ */ __exportAll({
5
5
  OpusEncoderProxy: () => OpusEncoderProxy,
@@ -43,7 +43,7 @@ var OpusEncoderProxy = class OpusEncoderProxy {
43
43
  } catch (err) {
44
44
  logger.warn("[Opus][Proxy] Worker unavailable, falling back to main-thread encode:", err instanceof Error ? err.message : String(err));
45
45
  }
46
- const { OggOpusEncoder } = await import("./OpusCodec-DcBg4c9I.js").then((n) => n.n);
46
+ const { OggOpusEncoder } = await import("./OpusCodec-Cib3mtQ2.js").then((n) => n.n);
47
47
  proxy.fallbackEncoder = new OggOpusEncoder(sampleRate, bitrate);
48
48
  proxy.backend = "main-thread";
49
49
  return proxy;
@@ -54,7 +54,7 @@ var OpusEncoderProxy = class OpusEncoderProxy {
54
54
  try {
55
55
  worker = new Worker(new URL(
56
56
  /* @vite-ignore */
57
- "" + new URL("assets/OpusEncoderWorker.worker-BZW_x1v1.js", import.meta.url).href,
57
+ "" + new URL("assets/OpusEncoderWorker.worker-DdhFHkno.js", import.meta.url).href,
58
58
  "" + import.meta.url
59
59
  ), { type: "module" });
60
60
  } catch (err) {
@@ -1,5 +1,5 @@
1
- import { c as logEvent, t as logger } from "./logger-B-m_sm-g.js";
2
- import { n as APP_CONFIG, t as errorToMessage } from "./error-utils-CSFsFRMn.js";
1
+ import { c as logEvent, t as logger } from "./logger-B_tTFAYq.js";
2
+ import { n as APP_CONFIG, t as errorToMessage } from "./error-utils-B76Nf6d6.js";
3
3
  //#region audio/StreamingAudioPlayer.ts
4
4
  /**
5
5
  * Streaming Audio Player
@@ -1,5 +1,5 @@
1
- import { St as ErrorCode, _t as generateTraceId, c as logEvent, h as hostOf, ht as isDebugMode, l as logMetric, t as logger, vt as AvatarError, y as recordHttpClientDuration } from "./logger-AlV2XHTI.js";
2
- import { t as AvatarSDK } from "./AvatarSDK-CnQUZBYF.js";
1
+ import { St as ErrorCode, _t as generateTraceId, c as logEvent, h as hostOf, ht as isDebugMode, l as logMetric, t as logger, vt as AvatarError, y as recordHttpClientDuration } from "./logger-__jZD7QG.js";
2
+ import { t as AvatarSDK } from "./AvatarSDK-DX8_-oyi.js";
3
3
  //#region config/app-config.ts
4
4
  const GLOBAL_FLAME_CDN_BASE = "https://cdn.spatialwalk.cloud/public";
5
5
  const CN_FLAME_CDN_BASE = "https://cdn.spatialwalk.top/public";
@@ -1,5 +1,5 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { $ as INVALID_SPAN_CONTEXT, A as BindOnceFuture, B as ATTR_EXCEPTION_STACKTRACE, C as JSON_ENCODER, Ct as LogLevel, D as OTLPExporterBase, E as toAttributes, F as isTimeInput, G as globalErrorHandler, H as ATTR_SERVICE_NAME, I as isTimeInputHrTime, J as trace, K as isTracingSuppressed, L as millisToHrTime, M as addHrTimes, N as hrTime, O as defaultResource, P as hrTimeDuration, Q as isValidTraceId, R as otperformance, S as createLegacyOtlpBrowserExportDelegate, T as createResource, U as getNumberFromEnv, V as ATTR_EXCEPTION_TYPE, W as getStringFromEnv, X as context, Y as diag$1, Z as isSpanContextValid, _ as cleanupOtelMetrics, a as clientContextFields, at as DiagAPI, b as getSdkPackage, c as logEvent, ct as unregisterGlobal, d as cleanupOtel, dt as OTEL_STREAM_NAME, et as TraceFlags, f as initializeOtel, ft as OTEL_TRACES_ENDPOINT, g as observeExporter, gt as idManager, i as cleanupPostHog, it as createContextKey, j as ExportResultCode, k as resourceFromAttributes, lt as OTEL_LOGS_ENDPOINT, m as fetchBootstrap, mt as OTEL_USERNAME, n as setLogLevel, nt as createNoopMeter, o as getLogsFeatureFlag, ot as getGlobal, p as clockSync, pt as OTEL_TRACES_STREAM_NAME, q as suppressTracing, r as logSink, rt as ROOT_CONTEXT, s as initializePostHog, st as registerGlobal, t as logger, tt as ContextAPI, u as updatePostHogPersonPropertiesForFlags, ut as OTEL_PASSWORD, v as initializeOtelMetrics, w as createInstrumentationScope, x as resolveSdkVersion, xt as DrivingServiceMode, z as ATTR_EXCEPTION_MESSAGE } from "./logger-AlV2XHTI.js";
2
+ import { $ as INVALID_SPAN_CONTEXT, A as BindOnceFuture, B as ATTR_EXCEPTION_STACKTRACE, C as JSON_ENCODER, Ct as LogLevel, D as OTLPExporterBase, E as toAttributes, F as isTimeInput, G as globalErrorHandler, H as ATTR_SERVICE_NAME, I as isTimeInputHrTime, J as trace, K as isTracingSuppressed, L as millisToHrTime, M as addHrTimes, N as hrTime, O as defaultResource, P as hrTimeDuration, Q as isValidTraceId, R as otperformance, S as createLegacyOtlpBrowserExportDelegate, T as createResource, U as getNumberFromEnv, V as ATTR_EXCEPTION_TYPE, W as getStringFromEnv, X as context, Y as diag$1, Z as isSpanContextValid, _ as cleanupOtelMetrics, a as clientContextFields, at as DiagAPI, b as getSdkPackage, c as logEvent, ct as unregisterGlobal, d as cleanupOtel, dt as OTEL_STREAM_NAME, et as TraceFlags, f as initializeOtel, ft as OTEL_TRACES_ENDPOINT, g as observeExporter, gt as idManager, i as cleanupPostHog, it as createContextKey, j as ExportResultCode, k as resourceFromAttributes, lt as OTEL_LOGS_ENDPOINT, m as fetchBootstrap, mt as OTEL_USERNAME, n as setLogLevel, nt as createNoopMeter, o as getLogsFeatureFlag, ot as getGlobal, p as clockSync, pt as OTEL_TRACES_STREAM_NAME, q as suppressTracing, r as logSink, rt as ROOT_CONTEXT, s as initializePostHog, st as registerGlobal, t as logger, tt as ContextAPI, u as updatePostHogPersonPropertiesForFlags, ut as OTEL_PASSWORD, v as initializeOtelMetrics, w as createInstrumentationScope, x as resolveSdkVersion, xt as DrivingServiceMode, z as ATTR_EXCEPTION_MESSAGE } from "./logger-__jZD7QG.js";
3
3
  //#region node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js
4
4
  var BaggageImpl = class BaggageImpl {
5
5
  constructor(entries) {
@@ -6223,7 +6223,7 @@ var AvatarSDK = class {
6223
6223
  static _initializationState = "uninitialized";
6224
6224
  static _initializingPromise = null;
6225
6225
  static _configuration = null;
6226
- static _version = "1.3.4-beta.1";
6226
+ static _version = "1.3.4";
6227
6227
  static _avatarCore = null;
6228
6228
  static _cachedDeviceScore = null;
6229
6229
  static _rendererBackend = null;
@@ -6412,7 +6412,7 @@ var AvatarSDK = class {
6412
6412
  logger.log("[AvatarSDK] Loading template resources...");
6413
6413
  logEvent("template_init_start", "info", { stage: "sdk_init" });
6414
6414
  try {
6415
- const { AvatarDownloader } = await import("./AvatarDownloader-PtA7zKRc.js");
6415
+ const { AvatarDownloader } = await import("./AvatarDownloader-DkReeoUZ.js");
6416
6416
  const templateResources = await new AvatarDownloader().loadUnifiedTemplate();
6417
6417
  if (await this._avatarCore.loadTemplateResourcesFromBuffers(templateResources)) logger.log("[AvatarSDK] Template resources initialized successfully");
6418
6418
  else logger.log("[AvatarSDK] Template resources already initialized, skipping...");
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { t as logger } from "./logger-AlV2XHTI.js";
2
+ import { t as logger } from "./logger-__jZD7QG.js";
3
3
  //#region __vite-browser-external
4
4
  var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5
5
  module.exports = {};
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { t as logger } from "./logger-AlV2XHTI.js";
2
+ import { t as logger } from "./logger-__jZD7QG.js";
3
3
  //#region __vite-browser-external
4
4
  var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5
5
  module.exports = {};
@@ -15449,7 +15449,7 @@ async function writeToLocalLog(message, level, extra = {}) {
15449
15449
  try {
15450
15450
  const { shouldPersist, sanitized } = sanitizeForLocalLog(message);
15451
15451
  if (!shouldPersist) return;
15452
- const { AvatarSDK } = await import("./AvatarSDK-CnQUZBYF.js").then((n) => n.n);
15452
+ const { AvatarSDK } = await import("./AvatarSDK-DX8_-oyi.js").then((n) => n.n);
15453
15453
  const version = AvatarSDK.version;
15454
15454
  const appId = idManager.getAppId();
15455
15455
  const userId = idManager.getUserId();
@@ -1,4 +1,4 @@
1
- import { bt as isDebugMode } from "./logger-B-m_sm-g.js";
1
+ import { bt as isDebugMode } from "./logger-B_tTFAYq.js";
2
2
  //#region config/app-config.ts
3
3
  var GLOBAL_FLAME_CDN_BASE = "https://cdn.spatialwalk.cloud/public";
4
4
  var CN_FLAME_CDN_BASE = "https://cdn.spatialwalk.top/public";
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import { a as EgressType, c as TransportCompression, i as AudioFormat, l as BinaryReader, o as Message, r as avatarViewRegistry, s as MessageType, t as AvatarSDK, u as BinaryWriter } from "./AvatarSDK-kP9209qH.js";
2
- import { At as DEFAULT_REGION_REQUEST, C as recordMetric, Ct as AnimationType, Dt as ConversationState, Et as ConnectionState, Ft as LogLevel, It as RENDER_QUALITY_PARAMS, Lt as RenderQuality, Mt as ErrorCode, Nt as FrameStarvationMode, Ot as DEFAULT_OPUS_BITRATE, Pt as LoadProgress, Rt as TransitionType, Tt as AvatarState, c as logEvent, g as clockSync, h as resolveMarks, jt as DrivingServiceMode, kt as DEFAULT_REGION, l as logMetric, m as monoTimestamp, p as monoMarkFrom, t as logger, wt as AvatarError, xt as idManager } from "./logger-B-m_sm-g.js";
3
- import { a as startLoadTrace, o as startPlaybackTrace, r as startConnectTrace, s as buildTraceparent } from "./otel-trace-DzdxTuWh.js";
4
- import { n as APP_CONFIG } from "./error-utils-CSFsFRMn.js";
5
- import { r as OggMuxer, t as OggPageSplitter } from "./OpusCodec-DcBg4c9I.js";
6
- import { n as setOpusEncodeFrameSink } from "./OpusEncoderProxy-B_YlclCx.js";
7
- import { t as AvatarDownloader } from "./AvatarDownloader-BZWkn3GG.js";
1
+ import { a as EgressType, c as TransportCompression, i as AudioFormat, l as BinaryReader, o as Message, r as avatarViewRegistry, s as MessageType, t as AvatarSDK, u as BinaryWriter } from "./AvatarSDK-BMjjoYiZ.js";
2
+ import { At as DEFAULT_REGION_REQUEST, C as recordMetric, Ct as AnimationType, Dt as ConversationState, Et as ConnectionState, Ft as LogLevel, It as RENDER_QUALITY_PARAMS, Lt as RenderQuality, Mt as ErrorCode, Nt as FrameStarvationMode, Ot as DEFAULT_OPUS_BITRATE, Pt as LoadProgress, Rt as TransitionType, Tt as AvatarState, c as logEvent, g as clockSync, h as resolveMarks, jt as DrivingServiceMode, kt as DEFAULT_REGION, l as logMetric, m as monoTimestamp, p as monoMarkFrom, t as logger, wt as AvatarError, xt as idManager } from "./logger-B_tTFAYq.js";
3
+ import { a as startLoadTrace, o as startPlaybackTrace, r as startConnectTrace, s as buildTraceparent } from "./otel-trace-DmmQrXv-.js";
4
+ import { n as APP_CONFIG } from "./error-utils-B76Nf6d6.js";
5
+ import { r as OggMuxer, t as OggPageSplitter } from "./OpusCodec-Cib3mtQ2.js";
6
+ import { n as setOpusEncodeFrameSink } from "./OpusEncoderProxy-BiX90p4q.js";
7
+ import { t as AvatarDownloader } from "./AvatarDownloader-CavxMpAz.js";
8
8
  //#region core/Avatar.ts
9
9
  var Avatar = class {
10
10
  id;
@@ -311,8 +311,8 @@ var AnimationPlayer = class AnimationPlayer {
311
311
  */
312
312
  async createAndInitializeStreamingPlayer() {
313
313
  if (this.streamingPlayer) return;
314
- const { StreamingAudioPlayer } = await import("./StreamingAudioPlayer-CPdtlw8y.js");
315
- const { AvatarSDK } = await import("./AvatarSDK-kP9209qH.js").then((n) => n.n);
314
+ const { StreamingAudioPlayer } = await import("./StreamingAudioPlayer-D5_x6veD.js");
315
+ const { AvatarSDK } = await import("./AvatarSDK-BMjjoYiZ.js").then((n) => n.n);
316
316
  const audioFormat = AvatarSDK.getAudioFormat();
317
317
  this.streamingPlayer = new StreamingAudioPlayer({
318
318
  sampleRate: audioFormat.sampleRate,
@@ -1352,7 +1352,7 @@ var AnimationWebSocketClient = class extends EventEmitter {
1352
1352
  return;
1353
1353
  }
1354
1354
  try {
1355
- const { OpusEncoderProxy } = await import("./OpusEncoderProxy-B_YlclCx.js").then((n) => n.t);
1355
+ const { OpusEncoderProxy } = await import("./OpusEncoderProxy-BiX90p4q.js").then((n) => n.t);
1356
1356
  const bitrate = opusBitrate ?? 48e3;
1357
1357
  this.opusEncoder = await OpusEncoderProxy.create(sampleRate, bitrate);
1358
1358
  this.uplinkIsOpus = true;
@@ -2794,7 +2794,7 @@ var AvatarController = class {
2794
2794
  const { inputAudioFormat } = AvatarSDK.getAudioFormat();
2795
2795
  if (inputAudioFormat !== "opus" || this.inputOpusDecoderProxy) return;
2796
2796
  try {
2797
- const { OpusDecoderProxy } = await import("./OpusDecoderProxy-Cw4icKEO.js");
2797
+ const { OpusDecoderProxy } = await import("./OpusDecoderProxy-Dz21UtCz.js");
2798
2798
  this.inputOpusDecoderProxy = await OpusDecoderProxy.create();
2799
2799
  this.inputDecodeChain = Promise.resolve();
2800
2800
  } catch (error) {
@@ -4094,7 +4094,7 @@ var AvatarManager = class AvatarManager {
4094
4094
  } else {
4095
4095
  logger.log(`[AvatarManager] Avatar ${id} cache invalid: updatedAt=${cachedUpdatedAt}->${newUpdatedAt}, modelType=${cachedModelType}->${requestedModelType}, reloading...`);
4096
4096
  this.avatarCache.delete(id);
4097
- const { PwaCacheManager } = await import("./pwa-cache-manager-DYYf1j5t.js").then((n) => n.n);
4097
+ const { PwaCacheManager } = await import("./pwa-cache-manager-BxeZI1BU.js").then((n) => n.n);
4098
4098
  await PwaCacheManager.clearCharacterCache(id);
4099
4099
  }
4100
4100
  }
@@ -1,5 +1,5 @@
1
- import { C as recordMetric$1, E as setSdkIdentity$1, g as clockSync } from "./logger-B-m_sm-g.js";
2
- import { o as startPlaybackTrace$1 } from "./otel-trace-DzdxTuWh.js";
1
+ import { C as recordMetric$1, E as setSdkIdentity$1, g as clockSync } from "./logger-B_tTFAYq.js";
2
+ import { o as startPlaybackTrace$1 } from "./otel-trace-DmmQrXv-.js";
3
3
  //#region internal-telemetry.ts
4
4
  /**
5
5
  * Internal telemetry surface for the companion RTC SDK.
@@ -15570,7 +15570,7 @@ async function writeToLocalLog(message, level, extra = {}) {
15570
15570
  try {
15571
15571
  const { shouldPersist, sanitized } = sanitizeForLocalLog(message);
15572
15572
  if (!shouldPersist) return;
15573
- const { AvatarSDK } = await import("./AvatarSDK-kP9209qH.js").then((n) => n.n);
15573
+ const { AvatarSDK } = await import("./AvatarSDK-BMjjoYiZ.js").then((n) => n.n);
15574
15574
  const version = AvatarSDK.version;
15575
15575
  const appId = idManager.getAppId();
15576
15576
  const userId = idManager.getUserId();
@@ -1,4 +1,4 @@
1
- import { $ as trace, A as createResource, B as isTimeInput, D as createLegacyOtlpBrowserExportDelegate, F as BindOnceFuture, G as ATTR_EXCEPTION_STACKTRACE, H as millisToHrTime, I as ExportResultCode, J as getNumberFromEnv, K as ATTR_EXCEPTION_TYPE, L as addHrTimes, M as OTLPExporterBase, N as defaultResource, O as JSON_ENCODER, P as resourceFromAttributes, Q as suppressTracing, R as hrTime, T as resolveSdkVersion, U as otperformance, V as isTimeInputHrTime, W as ATTR_EXCEPTION_MESSAGE, X as globalErrorHandler, Y as getStringFromEnv, Z as isTracingSuppressed, _t as OTEL_TRACES_ENDPOINT, a as clientContextFields, at as TraceFlags, ct as ROOT_CONTEXT, dt as getGlobal, et as diag$1, ft as registerGlobal, ht as OTEL_PASSWORD, it as INVALID_SPAN_CONTEXT, j as toAttributes, k as createInstrumentationScope, lt as createContextKey, nt as isSpanContextValid, ot as ContextAPI, pt as unregisterGlobal, q as ATTR_SERVICE_NAME, rt as isValidTraceId, st as createNoopMeter, t as logger, tt as context, ut as DiagAPI, vt as OTEL_TRACES_STREAM_NAME, w as getSdkPackage, xt as idManager, y as observeExporter, yt as OTEL_USERNAME, z as hrTimeDuration } from "./logger-B-m_sm-g.js";
1
+ import { $ as trace, A as createResource, B as isTimeInput, D as createLegacyOtlpBrowserExportDelegate, F as BindOnceFuture, G as ATTR_EXCEPTION_STACKTRACE, H as millisToHrTime, I as ExportResultCode, J as getNumberFromEnv, K as ATTR_EXCEPTION_TYPE, L as addHrTimes, M as OTLPExporterBase, N as defaultResource, O as JSON_ENCODER, P as resourceFromAttributes, Q as suppressTracing, R as hrTime, T as resolveSdkVersion, U as otperformance, V as isTimeInputHrTime, W as ATTR_EXCEPTION_MESSAGE, X as globalErrorHandler, Y as getStringFromEnv, Z as isTracingSuppressed, _t as OTEL_TRACES_ENDPOINT, a as clientContextFields, at as TraceFlags, ct as ROOT_CONTEXT, dt as getGlobal, et as diag$1, ft as registerGlobal, ht as OTEL_PASSWORD, it as INVALID_SPAN_CONTEXT, j as toAttributes, k as createInstrumentationScope, lt as createContextKey, nt as isSpanContextValid, ot as ContextAPI, pt as unregisterGlobal, q as ATTR_SERVICE_NAME, rt as isValidTraceId, st as createNoopMeter, t as logger, tt as context, ut as DiagAPI, vt as OTEL_TRACES_STREAM_NAME, w as getSdkPackage, xt as idManager, y as observeExporter, yt as OTEL_USERNAME, z as hrTimeDuration } from "./logger-B_tTFAYq.js";
2
2
  //#region node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js
3
3
  var BaggageImpl = class BaggageImpl {
4
4
  constructor(entries) {
@@ -1,5 +1,5 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-B-1-B7_t.js";
2
- import { t as logger } from "./logger-B-m_sm-g.js";
2
+ import { t as logger } from "./logger-B_tTFAYq.js";
3
3
  //#region utils/pwa-cache-manager.ts
4
4
  /**
5
5
  * PWA Cache Manager
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spatius/avatarkit",
3
3
  "type": "module",
4
- "version": "1.3.4-beta.1",
4
+ "version": "1.3.4",
5
5
  "packageManager": "pnpm@10.18.2",
6
6
  "description": "AvatarKit — real-time, audio-driven avatar rendering SDK for Web.",
7
7
  "homepage": "https://spatius.ai/",