@laplace.live/persona-sdk 1.16.0 → 1.17.0

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.
@@ -173,9 +173,8 @@ export declare function objectSupportsSpace(kind: ObjectContent['kind'], space:
173
173
  /** The asset an object streams from, or null for kinds that carry their source inline (web, capture). */
174
174
  export declare function contentAssetId(content: ObjectContent): string | null;
175
175
  /**
176
- * The one model format a space's objects can ride: the renderers never mix, and
177
- * the three canvas always composites over the Pixi one, so a cross-space pin
178
- * would z-fight by construction.
176
+ * The one model format a space's objects can ride: the screen layer always composites
177
+ * over the world scene, so a cross-space pin would z-fight by construction.
179
178
  */
180
179
  export declare function attachableParentFormat(space: ObjectSpace): ModelFormat;
181
180
  /**
@@ -297,9 +297,8 @@ export function contentAssetId(content) {
297
297
  return content.kind === 'image' || content.kind === 'video' || content.kind === 'prop' ? content.assetId : null;
298
298
  }
299
299
  /**
300
- * The one model format a space's objects can ride: the renderers never mix, and
301
- * the three canvas always composites over the Pixi one, so a cross-space pin
302
- * would z-fight by construction.
300
+ * The one model format a space's objects can ride: the screen layer always composites
301
+ * over the world scene, so a cross-space pin would z-fight by construction.
303
302
  */
304
303
  export function attachableParentFormat(space) {
305
304
  return space === '2d' ? 'live2d' : 'vrm';
@@ -18,9 +18,10 @@ export declare const INJECT_LEASE_TTL_MS = 1000;
18
18
  /** How often {@link PersonaClient.driveParameter} re-sends held leases to keep them alive. */
19
19
  export declare const INJECT_HEARTBEAT_MS = 100;
20
20
  /**
21
- * How often the binding editor's live indicators sample the tracking inputs (~20/s) — both the
22
- * stage's push and the editor's poll of it, which must agree. Fast enough to read as live on a
23
- * level bar, slow enough that neither the worker port nor the panel relay carries per-frame traffic.
21
+ * Least gap between the stage's refreshes of the tracking inputs behind the binding editor's live
22
+ * indicators (~20/s at most). The refresh rides the stage's frames, so a capped frame rate
23
+ * stretches it. Fast enough to read as live, slow enough that the worker port carries no
24
+ * per-frame traffic.
24
25
  */
25
26
  export declare const TRACKING_INPUTS_MS = 50;
26
27
  /**
@@ -17,9 +17,10 @@ export const INJECT_LEASE_TTL_MS = 1000;
17
17
  /** How often {@link PersonaClient.driveParameter} re-sends held leases to keep them alive. */
18
18
  export const INJECT_HEARTBEAT_MS = 100;
19
19
  /**
20
- * How often the binding editor's live indicators sample the tracking inputs (~20/s) — both the
21
- * stage's push and the editor's poll of it, which must agree. Fast enough to read as live on a
22
- * level bar, slow enough that neither the worker port nor the panel relay carries per-frame traffic.
20
+ * Least gap between the stage's refreshes of the tracking inputs behind the binding editor's live
21
+ * indicators (~20/s at most). The refresh rides the stage's frames, so a capped frame rate
22
+ * stretches it. Fast enough to read as live, slow enough that the worker port carries no
23
+ * per-frame traffic.
23
24
  */
24
25
  export const TRACKING_INPUTS_MS = 50;
25
26
  /**
@@ -255,10 +255,6 @@ export declare const requestSchemas: {
255
255
  medium: "medium";
256
256
  }>>;
257
257
  renderScale: z.ZodOptional<z.ZodNumber>;
258
- live2dEngine: z.ZodOptional<z.ZodEnum<{
259
- pixi: "pixi";
260
- three: "three";
261
- }>>;
262
258
  }, z.core.$strip>>;
263
259
  }, z.core.$strip>;
264
260
  }, z.core.$strip>;
@@ -1,10 +1,6 @@
1
1
  import * as z from 'zod';
2
2
  /** Shared field definitions; parsing validates values without adding defaults or healing them. */
3
3
  export declare const PortSchema: z.ZodNumber;
4
- export declare const Live2DEngineSchema: z.ZodEnum<{
5
- pixi: "pixi";
6
- three: "three";
7
- }>;
8
4
  export declare const EffectsQualitySchema: z.ZodEnum<{
9
5
  high: "high";
10
6
  low: "low";
@@ -110,10 +106,6 @@ export declare const PerformanceSettingsSchema: z.ZodObject<{
110
106
  medium: "medium";
111
107
  }>;
112
108
  renderScale: z.ZodNumber;
113
- live2dEngine: z.ZodEnum<{
114
- pixi: "pixi";
115
- three: "three";
116
- }>;
117
109
  }, z.core.$strip>;
118
110
  /** Stage content dimensions in device-independent pixels. */
119
111
  export declare const StageSizeSchema: z.ZodObject<{
@@ -201,10 +193,6 @@ export declare const SettingsSchema: z.ZodObject<{
201
193
  medium: "medium";
202
194
  }>;
203
195
  renderScale: z.ZodOptional<z.ZodNumber>;
204
- live2dEngine: z.ZodOptional<z.ZodEnum<{
205
- pixi: "pixi";
206
- three: "three";
207
- }>>;
208
196
  }, z.core.$strip>;
209
197
  tracking: z.ZodObject<{
210
198
  enabled: z.ZodBoolean;
@@ -276,9 +264,5 @@ export declare const SettingsPatchSchema: z.ZodObject<{
276
264
  medium: "medium";
277
265
  }>>;
278
266
  renderScale: z.ZodOptional<z.ZodNumber>;
279
- live2dEngine: z.ZodOptional<z.ZodEnum<{
280
- pixi: "pixi";
281
- three: "three";
282
- }>>;
283
267
  }, z.core.$strip>>;
284
268
  }, z.core.$strip>;
@@ -2,10 +2,9 @@ import * as z from 'zod';
2
2
  import { CONTROLLER_DEAD_ZONE_MAX } from "../../values/controller.js";
3
3
  import { LIP_SYNC_GAIN_MAX, LIP_SYNC_MAX_SAMPLES, LIP_SYNC_MFCC_COEFFICIENTS, LIP_SYNC_MIN_SAMPLES, LIP_SYNC_NOISE_GATE_MIN, LIP_SYNC_PHONEMES, LIP_SYNC_SMOOTHING_MAX, } from "../../values/lipsync.js";
4
4
  import { LOCALES } from "../../values/locale.js";
5
- import { EFFECTS_QUALITY_LEVELS, LIVE2D_ENGINES, MEDIAPIPE_DELEGATES, POSE_SOURCE_IDS, TRACKING_SOURCE_IDS, TRACKING_SOURCE_KINDS, } from "../types.js";
5
+ import { EFFECTS_QUALITY_LEVELS, MEDIAPIPE_DELEGATES, POSE_SOURCE_IDS, TRACKING_SOURCE_IDS, TRACKING_SOURCE_KINDS, } from "../types.js";
6
6
  /** Shared field definitions; parsing validates values without adding defaults or healing them. */
7
7
  export const PortSchema = z.number().int().min(1).max(65535).describe('Network port, from 1 through 65535.');
8
- export const Live2DEngineSchema = z.enum(LIVE2D_ENGINES).describe('Engine used to render Live2D models.');
9
8
  export const EffectsQualitySchema = z.enum(EFFECTS_QUALITY_LEVELS).describe('Scene and layer effects quality tier.');
10
9
  export const LanguageSettingSchema = z
11
10
  .enum(['system', ...LOCALES])
@@ -75,7 +74,6 @@ export const PerformanceSettingsSchema = z.object({
75
74
  fpsLimit: z.number().describe('Frame-rate cap; zero is unlimited. The desktop snaps changes to supported presets.'),
76
75
  effectsQuality: EffectsQualitySchema,
77
76
  renderScale: z.number().describe('Render resolution multiplier. The desktop snaps changes to supported presets.'),
78
- live2dEngine: Live2DEngineSchema,
79
77
  });
80
78
  /** Stage content dimensions in device-independent pixels. */
81
79
  export const StageSizeSchema = z.object({
@@ -107,7 +105,7 @@ export const SettingsSchema = z.object({
107
105
  ui: z
108
106
  .object({ trayVisible: z.boolean().describe('Show the tray or menu bar icon.') })
109
107
  .describe('Public interface preferences.'),
110
- performance: PerformanceSettingsSchema.partial({ renderScale: true, live2dEngine: true }).describe('Renderer settings; renderScale and live2dEngine are absent on older hosts.'),
108
+ performance: PerformanceSettingsSchema.partial({ renderScale: true }).describe('Renderer settings; renderScale is absent on older hosts.'),
111
109
  tracking: TrackingSettingsSchema.describe('Network face master switch and all configured tracking sources.'),
112
110
  pose: PoseSettingsSchema.describe('Network body master switch and legacy source mirrors.'),
113
111
  });
@@ -286,7 +286,7 @@ export interface AttachElasticity {
286
286
  * value: the two ends clear the parent's whole stack, and `artMesh` slots the item in directly
287
287
  * above that ArtMesh, so every parent mesh over it paints on top. Ids rather than positions,
288
288
  * because Cubism re-sorts the stack as motions play, and an id carries to any rig that has it.
289
- * Live2D parents on the three engine only: elsewhere an item always paints in front.
289
+ * Live2D parents only: on a VRM an item always paints in front.
290
290
  */
291
291
  export type AttachDepth = {
292
292
  kind: 'front';
@@ -1052,12 +1052,15 @@ export type InstanceCapability = 'motions' | 'expressions' | 'placement-2d' | 'p
1052
1052
  | 'breath'
1053
1053
  /** `expression.setWeight`; Cubism expressions carry no user-settable weight, so Live2D lacks it. */
1054
1054
  | 'expression-weights'
1055
- /** `speech.play` lip-sync; engine-dependent, so gate on the runtime, not the format. */
1055
+ /**
1056
+ * `speech.play` lip-sync. Loaded Live2D models only; 0.53 and earlier hosts also omit it under
1057
+ * the Pixi engine, so gate on the runtime, not the format.
1058
+ */
1056
1059
  | 'speech'
1057
1060
  /**
1058
1061
  * Draws through the 3D post chain, so the scene's look rows (tone mapping, exposure, LUT)
1059
- * reach it. Always on VRM; on Live2D only under the `three` renderer, so read it off the
1060
- * runtime rather than the format.
1062
+ * reach it. Every model; 0.53 and earlier hosts omit it on Pixi-engine Live2D, so read it off
1063
+ * the runtime rather than the format.
1061
1064
  */
1062
1065
  | 'post-fx';
1063
1066
  export interface InstanceRuntime {
@@ -1157,8 +1160,6 @@ export interface ExpressionPersistence {
1157
1160
  export type JsonValue = string | number | boolean | null | JsonValue[] | {
1158
1161
  [key: string]: JsonValue;
1159
1162
  };
1160
- export declare const LIVE2D_ENGINES: readonly ["pixi", "three"];
1161
- export type Live2DEngine = (typeof LIVE2D_ENGINES)[number];
1162
1163
  export declare const TRACKING_SOURCE_IDS: readonly ["persona-ios", "ifacialmocap", "vts-ios"];
1163
1164
  export type TrackingSourceId = (typeof TRACKING_SOURCE_IDS)[number];
1164
1165
  /** Body-pose protocols. Every one so far is UDP with a configurable port. */
@@ -82,7 +82,6 @@ export const AUTOMATION_BOUNDARY_KINDS = [
82
82
  'load-model',
83
83
  ];
84
84
  // ---- Settings ------------------------------------------------------------------
85
- export const LIVE2D_ENGINES = ['pixi', 'three'];
86
85
  export const TRACKING_SOURCE_IDS = ['persona-ios', 'ifacialmocap', 'vts-ios'];
87
86
  /** Body-pose protocols. Every one so far is UDP with a configurable port. */
88
87
  export const POSE_SOURCE_IDS = ['vmc', 'mocopi'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laplace.live/persona-sdk",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "description": "TypeScript SDK and wire schema for the LAPLACE Persona plugin API",
5
5
  "license": "MIT",
6
6
  "type": "module",