@laplace.live/persona-sdk 1.14.0 → 1.15.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.
@@ -31,10 +31,12 @@ export interface EventMap {
31
31
  active: string[];
32
32
  weights?: Record<string, number>;
33
33
  };
34
+ /** `oneShot`: the motion outranks the idle, so `motion.stop` would end it; hosts with `motion-stop` send it. */
34
35
  'motion.started': {
35
36
  instanceId: string;
36
37
  group: string;
37
38
  index: number;
39
+ oneShot?: boolean;
38
40
  };
39
41
  'motion.ended': {
40
42
  instanceId: string;
@@ -292,6 +292,16 @@ export interface MotionPlayingRequest {
292
292
  }
293
293
  export interface MotionPlayingResponse {
294
294
  playing: PlayingMotion | null;
295
+ /** `playing` outranks the idle — what `motion.stop` ends. Absent on hosts without `motion-stop`. */
296
+ oneShot?: boolean;
297
+ }
298
+ /** Fade the running motion out and let the idle resume; the idle itself is left alone. */
299
+ export interface MotionStopRequest {
300
+ instanceId?: string;
301
+ }
302
+ export interface MotionStopResponse {
303
+ /** A motion above the idle was playing and is now fading out. */
304
+ stopped: boolean;
295
305
  }
296
306
  /** Play a clip with lip-sync. One utterance per model: a new play supersedes the current one. */
297
307
  export interface SpeechPlayRequest {
@@ -884,6 +894,11 @@ export interface MethodMap {
884
894
  request: MotionPlayingRequest;
885
895
  response: MotionPlayingResponse;
886
896
  };
897
+ /** Needs the `motion-stop` app capability. */
898
+ 'motion.stop': {
899
+ request: MotionStopRequest;
900
+ response: MotionStopResponse;
901
+ };
887
902
  /**
888
903
  * Lip-synced audio on models advertising the `speech` capability. The response means
889
904
  * playback started (else `invalid-state`); `speech.started`/`speech.ended` bracket it.
@@ -1005,7 +1005,7 @@ export interface ScenePatch {
1005
1005
  * App-level features a client gates on (never version-sniff): `hello` and
1006
1006
  * `app.info` report them — the per-app mirror of {@link InstanceRuntime.capabilities}.
1007
1007
  */
1008
- export declare const APP_CAPABILITIES: readonly ["storage", "speech", "automations", "controllers", "model-editing", "asset-inspection", "layer-effects", "scene-transitions", "area-lights", "spot-lights", "camera-follow-lights", "shadow-filters", "environment-map-model", "spawn", "tracking-lost"];
1008
+ export declare const APP_CAPABILITIES: readonly ["storage", "speech", "automations", "controllers", "model-editing", "asset-inspection", "layer-effects", "scene-transitions", "area-lights", "spot-lights", "camera-follow-lights", "shadow-filters", "environment-map-model", "spawn", "tracking-lost", "motion-stop"];
1009
1009
  export type AppCapability = (typeof APP_CAPABILITIES)[number];
1010
1010
  export declare function isAppCapability(v: unknown): v is AppCapability;
1011
1011
  /** What a loaded model instance can do; absent capabilities answer `unsupported-for-format`. */
@@ -49,6 +49,8 @@ export const APP_CAPABILITIES = [
49
49
  'spawn',
50
50
  /** `instance.setIdle` takes `trackingLostBehavior`, `trackingLostMotion` and `trackingLostDelay`. */
51
51
  'tracking-lost',
52
+ /** `motion.stop`; `motion.playing` and `motion.started` carry `oneShot`. */
53
+ 'motion-stop',
52
54
  ];
53
55
  export function isAppCapability(v) {
54
56
  return isOneOf(v, APP_CAPABILITIES);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laplace.live/persona-sdk",
3
- "version": "1.14.0",
3
+ "version": "1.15.0",
4
4
  "description": "TypeScript SDK and wire schema for the LAPLACE Persona plugin API",
5
5
  "license": "MIT",
6
6
  "type": "module",