mujoco-react 10.0.0 → 10.1.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.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { M as MujocoContextValue, a as MujocoCanvasProps, b as MujocoSimAPI, S as SceneConfig, R as ReadyCallbackInput, c as StepCallbackInput, d as SelectionCallbackInput, e as MujocoModule, P as PhysicsStepCallback, f as MujocoModel, g as MujocoData, C as ControlGroupInfo, A as ActuatedJointInfo, h as ControlGroupSelector, O as ObservationConfig, i as ObservationResult, I as IkConfig, j as IkContextValue, B as BodyProps, k as IkGizmoProps, D as DragInteractionProps, l as SceneLightsProps, m as ScenarioLightingProps, n as SplatEnvironmentProps, V as VisualScenarioEffectsProps, o as VisualScenarioConfig, p as SplatRendererKind, q as PairedSplatEnvironmentConfig, r as SplatFormat, s as SplatCollisionProxyConfig, t as SplatEnvironmentReadiness, u as SplatCollisionPrimitive, v as SplatEnvironmentReadinessStatus, w as SplatSceneConfigInput, x as SplatSceneConfigState, y as VisualScenarioExecutionContextInput, z as VisualScenarioExecutionContext, E as ScenarioLightingPreset, F as SplatEnvironmentMetadataInput, G as SplatEnvironmentMetadata, H as SplatSceneInput, J as DebugProps, K as GeomInfo, L as ContactListenerProps, T as TrajectoryPlayerProps, N as ActuatorInfo, Q as Sites, U as SitePositionResult, W as Sensors, X as SensorHandle, Y as SensorInfo, Z as Joints, _ as ScalarJointStateResult, $ as ArrayJointStateResult, a0 as JointStateOptions, a1 as JointStateResult, a2 as Bodies, a3 as BodyStateResult, a4 as Actuators, a5 as CtrlHandle, a6 as ContactInfo, a7 as KeyboardTeleopConfig, a8 as KeyboardIkTargetConfig, a9 as PolicyConfig, aa as PolicyVector, ab as ObservationHandle, ac as TrajectoryInput, ad as TrajectoryStateChangeInput, ae as PlaybackState, af as TrajectoryFrame, ag as FrameCaptureOptions, ah as FrameCaptureResult, ai as FrameCaptureBlobResult, aj as FrameCaptureAPI, ak as CameraFrameCaptureOptions, al as CameraFrameCaptureAPI, am as CameraFrameSequenceRecorderAPI, an as Cameras, ao as CameraFrameSequenceCamera, ap as CameraFrameCaptureSource, aq as CameraFrameSequenceOptions, ar as CameraFrameSequenceResult, as as CameraFrameCaptureResult, at as CameraFrameCaptureBlobResult } from './types-BaSMqJHT.js';
3
- export { au as BodyInfo, av as CameraFrameCaptureQuaternion, aw as CameraFrameCaptureVector3, ax as CameraFrameSequenceCameraSummary, ay as CameraFrameSequenceFrame, az as CameraFrameSequenceSampleInput, aA as CameraFrameSequenceStepInput, aB as CameraInfo, aC as ControlJointInfo, aD as FrameCaptureStatus, aE as FrameCaptureTarget, aF as FrameCaptureTargetRef, aG as Geoms, aH as IKSolveFn, aI as IkGizmoDragInput, aJ as IkSolveInput, aK as JointInfo, aL as JointStateKind, aM as KeyBinding, aN as KeyboardIkTargetAction, aO as KeyboardIkTargetBinding, aP as Keyframes, aQ as ModelActuators, aR as ModelBodies, aS as ModelCameras, aT as ModelGeoms, aU as ModelJoints, aV as ModelKeyframes, aW as ModelOptions, aX as ModelResource, aY as ModelResources, aZ as ModelSensors, a_ as ModelSites, a$ as Models, b0 as MujocoContact, b1 as MujocoContactArray, b2 as MujocoFrameCaptureOptions, b3 as ObservationLayoutItem, b4 as ObservationOutput, b5 as PhysicsConfig, b6 as PhysicsStepInput, b7 as PolicyActionInput, b8 as PolicyInferenceInput, b9 as PolicyObservationInput, ba as RayHit, bb as Register, bc as RegisteredModelMap, bd as ResetCallbackInput, be as ResolvedScenarioCameraConfig, bf as ResolvedScenarioMaterialConfig, bg as ResourceSelector, bh as ScenarioCameraConfig, bi as ScenarioMaterialConfig, bj as SceneMarker, bk as SceneObject, bl as SensorResult, bm as SiteInfo, bn as SplatAssetConfig, bo as SplatScenarioConfig, bp as StateSnapshot, bq as TrajectoryData, br as TrajectoryFrameCallbackInput, bs as VisualScenarioMaterialFilterInput, bt as XmlPatch, bu as getContact, bv as registerModelResources } from './types-BaSMqJHT.js';
2
+ import { M as MujocoContextValue, a as MujocoCanvasProps, b as MujocoSimAPI, S as SceneConfig, R as ReadyCallbackInput, c as StepCallbackInput, d as SelectionCallbackInput, e as MujocoModule, P as PhysicsStepCallback, f as MujocoModel, g as MujocoData, C as ControlGroupInfo, A as ActuatedJointInfo, h as ControlGroupSelector, O as ObservationConfig, i as ObservationResult, I as IkConfig, j as IkContextValue, B as BodyProps, k as IkGizmoProps, D as DragInteractionProps, l as SceneLightsProps, m as ScenarioLightingProps, n as SplatEnvironmentProps, V as VisualScenarioEffectsProps, o as VisualScenarioConfig, p as SplatRendererKind, q as PairedSplatEnvironmentConfig, r as SplatFormat, s as SplatCollisionProxyConfig, t as SplatEnvironmentReadiness, u as SplatCollisionPrimitive, v as SplatEnvironmentReadinessStatus, w as SplatSceneConfigInput, x as SplatSceneConfigState, y as VisualScenarioExecutionContextInput, z as VisualScenarioExecutionContext, E as ScenarioLightingPreset, F as SplatEnvironmentMetadataInput, G as SplatEnvironmentMetadata, H as SplatSceneInput, J as DebugProps, K as GeomInfo, L as ContactListenerProps, T as TrajectoryPlayerProps, N as ActuatorInfo, Q as Sites, U as SitePositionResult, W as Sensors, X as SensorHandle, Y as SensorInfo, Z as Joints, _ as ScalarJointStateResult, $ as ArrayJointStateResult, a0 as JointStateOptions, a1 as JointStateResult, a2 as Bodies, a3 as BodyStateResult, a4 as Geoms, a5 as Actuators, a6 as CtrlHandle, a7 as ContactInfo, a8 as KeyboardTeleopConfig, a9 as KeyboardIkTargetConfig, aa as PolicyConfig, ab as PolicyAPI, ac as RemotePolicyConfig, ad as RemotePolicyAPI, ae as ObservationHandle, af as ObservationOutput, ag as TrajectoryInput, ah as TrajectoryStateChangeInput, ai as PlaybackState, aj as TrajectoryFrame, ak as FrameCaptureOptions, al as FrameCaptureResult, am as FrameCaptureBlobResult, an as FrameCaptureAPI, ao as CameraFrameCaptureOptions, ap as CameraFrameCaptureAPI, aq as Cameras, ar as CameraFrameSequenceCamera, as as CameraFrameCaptureSource, at as CameraFrameSequenceOptions, au as CameraFrameSequenceResult, av as PolicyCameraFrameStream, aw as PolicyCameraFrameCaptureOptions, ax as PolicyCameraFrameCaptureResult, ay as FrameCaptureStatus, az as PolicyCameraFrameCaptureAPI, aA as CameraFrameSequenceRecorderAPI, aB as CameraFrameCaptureResult, aC as CameraFrameCaptureBlobResult, aD as PolicyVector } from './types-BHBNJubg.js';
3
+ export { aE as BodyInfo, aF as CameraFrameCaptureQuaternion, aG as CameraFrameCaptureVector3, aH as CameraFrameSequenceCameraSummary, aI as CameraFrameSequenceFrame, aJ as CameraFrameSequenceSampleInput, aK as CameraFrameSequenceStepInput, aL as CameraInfo, aM as ControlJointInfo, aN as FrameCaptureTarget, aO as FrameCaptureTargetRef, aP as IKSolveFn, aQ as IkGizmoDragInput, aR as IkSolveInput, aS as JointInfo, aT as JointStateKind, aU as KeyBinding, aV as KeyboardIkTargetAction, aW as KeyboardIkTargetBinding, aX as Keyframes, aY as ModelActuators, aZ as ModelBodies, a_ as ModelCameras, a$ as ModelGeoms, b0 as ModelJoints, b1 as ModelKeyframes, b2 as ModelOptions, b3 as ModelResource, b4 as ModelResources, b5 as ModelSensors, b6 as ModelSites, b7 as Models, b8 as MujocoContact, b9 as MujocoContactArray, ba as MujocoFrameCaptureOptions, bb as ObservationLayoutItem, bc as PhysicsConfig, bd as PhysicsStepInput, be as PolicyActionChunk, bf as PolicyActionInput, bg as PolicyInferenceInput, bh as PolicyInferenceOutput, bi as PolicyInferenceResult, bj as PolicyObservationInput, bk as RayHit, bl as Register, bm as RegisteredModelMap, bn as RemotePolicyRequestInfo, bo as RemotePolicyRequestInput, bp as RemotePolicyResponseInfo, bq as RemotePolicyStatus, br as ResetCallbackInput, bs as ResolvedScenarioCameraConfig, bt as ResolvedScenarioMaterialConfig, bu as ResourceSelector, bv as ScenarioCameraConfig, bw as ScenarioMaterialConfig, bx as SceneMarker, by as SceneObject, bz as SensorResult, bA as SiteInfo, bB as SplatAssetConfig, bC as SplatScenarioConfig, bD as StateSnapshot, bE as TrajectoryData, bF as TrajectoryFrameCallbackInput, bG as VisualScenarioMaterialFilterInput, bH as XmlPatch, bI as getContact, bJ as registerModelResources } from './types-BHBNJubg.js';
4
4
  import * as React$1 from 'react';
5
+ import { RefObject } from 'react';
5
6
  import { ThreeElements } from '@react-three/fiber';
6
7
  import * as THREE from 'three';
7
8
 
@@ -629,6 +630,24 @@ declare function useJointState(name: Joints, options?: JointStateOptions): Joint
629
630
  */
630
631
  declare function useBodyState(name: Bodies): BodyStateResult;
631
632
 
633
+ /**
634
+ * @license
635
+ * SPDX-License-Identifier: Apache-2.0
636
+ *
637
+ * Ref-based world pose hooks for named MuJoCo bodies, geoms, and sites.
638
+ */
639
+
640
+ type PoseResourceKind = 'body' | 'geom' | 'site';
641
+ interface PoseReadout {
642
+ id: RefObject<number>;
643
+ found: RefObject<boolean>;
644
+ position: RefObject<THREE.Vector3>;
645
+ quaternion: RefObject<THREE.Quaternion>;
646
+ }
647
+ declare function useBodyPose(name: Bodies): PoseReadout;
648
+ declare function useGeomPose(name: Geoms): PoseReadout;
649
+ declare function useSitePose(name: Sites): PoseReadout;
650
+
632
651
  /**
633
652
  * @license
634
653
  * SPDX-License-Identifier: Apache-2.0
@@ -644,6 +663,40 @@ declare function useBodyState(name: Bodies): BodyStateResult;
644
663
  */
645
664
  declare function useCtrl(name: Actuators): CtrlHandle;
646
665
 
666
+ /**
667
+ * @license
668
+ * SPDX-License-Identifier: Apache-2.0
669
+ *
670
+ * Cooperative actuator/control ownership for policies, IK, teleop, and replay.
671
+ */
672
+
673
+ interface ControlWriterConflict {
674
+ actuatorIndex: number;
675
+ owner: string;
676
+ requestedBy: string;
677
+ }
678
+ interface ControlWriterOptions {
679
+ owner: string;
680
+ selector?: ControlGroupSelector;
681
+ enabled?: boolean;
682
+ warnOnConflict?: boolean;
683
+ allowSameOwner?: boolean;
684
+ onConflict?: (conflicts: ControlWriterConflict[]) => void;
685
+ }
686
+ interface ControlWriterWriteOptions {
687
+ force?: boolean;
688
+ }
689
+ interface ControlWriterHandle {
690
+ owner: string;
691
+ group: RefObject<ControlGroupInfo | null>;
692
+ conflicts: RefObject<ControlWriterConflict[]>;
693
+ canWrite: () => boolean;
694
+ read: () => Float64Array;
695
+ write: (values: ArrayLike<number>, options?: ControlWriterWriteOptions) => boolean;
696
+ release: () => void;
697
+ }
698
+ declare function useControlWriter(options: ControlWriterOptions): ControlWriterHandle;
699
+
647
700
  /**
648
701
  * @license
649
702
  * SPDX-License-Identifier: Apache-2.0
@@ -668,6 +721,33 @@ declare function useContactEvents(bodyName: Bodies, handlers: {
668
721
  onExit?: (info: ContactInfo) => void;
669
722
  }): void;
670
723
 
724
+ /**
725
+ * @license
726
+ * SPDX-License-Identifier: Apache-2.0
727
+ *
728
+ * Bounded contact history for rollout verification and debugging.
729
+ */
730
+
731
+ interface ContactHistoryEntry extends ContactInfo {
732
+ time: number;
733
+ body1: number;
734
+ body1Name: string;
735
+ body2: number;
736
+ body2Name: string;
737
+ }
738
+ interface ContactHistoryOptions {
739
+ maxLength?: number;
740
+ bodyNames?: readonly string[];
741
+ geomNames?: readonly string[];
742
+ includeWorldBody?: boolean;
743
+ }
744
+ interface ContactHistoryHandle {
745
+ entries: RefObject<ContactHistoryEntry[]>;
746
+ clear: () => void;
747
+ countPair: (nameA: string, nameB: string) => number;
748
+ }
749
+ declare function useContactHistory(options?: ContactHistoryOptions): ContactHistoryHandle;
750
+
671
751
  /**
672
752
  * @license
673
753
  * SPDX-License-Identifier: Apache-2.0
@@ -698,6 +778,13 @@ declare function useKeyboardTeleop(config: KeyboardTeleopConfig): void;
698
778
  */
699
779
  declare function useKeyboardIkTarget(config: KeyboardIkTargetConfig | null): void;
700
780
 
781
+ /**
782
+ * @license
783
+ * SPDX-License-Identifier: Apache-2.0
784
+ *
785
+ * usePolicy — policy decimation loop hook (spec 10.1)
786
+ */
787
+
701
788
  /**
702
789
  * Framework-agnostic policy execution hook.
703
790
  *
@@ -708,13 +795,23 @@ declare function useKeyboardIkTarget(config: KeyboardIkTargetConfig | null): voi
708
795
  * @param config Policy configuration
709
796
  * @returns { step, isRunning } control handles
710
797
  */
711
- declare function usePolicy(config: PolicyConfig): {
712
- readonly isRunning: boolean;
713
- start: () => void;
714
- stop: () => void;
715
- readonly lastObservation: PolicyVector | null;
716
- readonly lastAction: Float64Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | number[] | null;
717
- };
798
+ declare function usePolicy(config: PolicyConfig): PolicyAPI;
799
+
800
+ /**
801
+ * @license
802
+ * SPDX-License-Identifier: Apache-2.0
803
+ *
804
+ * useRemotePolicy — HTTP JSON inference wrapper around usePolicy.
805
+ */
806
+
807
+ /**
808
+ * Run a policy whose inference step lives behind an HTTP JSON endpoint.
809
+ *
810
+ * The hook keeps `usePolicy` responsible for timing, queueing, and pause/reset
811
+ * behavior. This wrapper only builds requests, parses responses, and exposes
812
+ * request metadata for HUDs and debugging.
813
+ */
814
+ declare function useRemotePolicy(config: RemotePolicyConfig): RemotePolicyAPI;
718
815
 
719
816
  /**
720
817
  * @license
@@ -729,6 +826,61 @@ declare function usePolicy(config: PolicyConfig): {
729
826
  */
730
827
  declare function useObservation(config: ObservationConfig): ObservationHandle;
731
828
 
829
+ /**
830
+ * @license
831
+ * SPDX-License-Identifier: Apache-2.0
832
+ *
833
+ * Named policy observation builders with layout and units metadata.
834
+ */
835
+
836
+ type NamedObservationMissing = 'skip' | 'zeros' | 'throw';
837
+ interface NamedObservationInput {
838
+ model: MujocoModel;
839
+ data: MujocoData;
840
+ }
841
+ interface NamedObservationField {
842
+ name: string;
843
+ size: number;
844
+ units?: string;
845
+ read: (input: NamedObservationInput) => ArrayLike<number> | number | null | undefined;
846
+ }
847
+ interface NamedObservationLayoutItem {
848
+ name: string;
849
+ start: number;
850
+ size: number;
851
+ units?: string;
852
+ }
853
+ interface NamedObservationOptions {
854
+ fields: readonly NamedObservationField[];
855
+ output?: ObservationOutput;
856
+ missing?: NamedObservationMissing;
857
+ }
858
+ interface NamedObservationResult {
859
+ values: Float32Array | Float64Array;
860
+ layout: NamedObservationLayoutItem[];
861
+ }
862
+ declare function readNamedObservation(model: MujocoModel, data: MujocoData, options: NamedObservationOptions): NamedObservationResult;
863
+ declare function createNamedObservationBuilder(options: NamedObservationOptions): (model: MujocoModel, data: MujocoData) => NamedObservationResult;
864
+ declare function qposField(name: string, index: number, units?: string): NamedObservationField;
865
+ declare function qvelField(name: string, index: number, units?: string): NamedObservationField;
866
+ declare function ctrlField(name: string, index: number, units?: string): NamedObservationField;
867
+ declare function bodyPositionField(name: Bodies, units?: string): NamedObservationField;
868
+ declare function geomPositionField(name: Geoms, units?: string): NamedObservationField;
869
+ declare function sitePositionField(name: Sites, units?: string): NamedObservationField;
870
+
871
+ /**
872
+ * @license
873
+ * SPDX-License-Identifier: Apache-2.0
874
+ *
875
+ * Stable React handle for named policy observations.
876
+ */
877
+
878
+ interface NamedObservationHandle {
879
+ read: () => NamedObservationResult;
880
+ readValues: () => Float32Array | Float64Array;
881
+ }
882
+ declare function useNamedObservation(options: NamedObservationOptions): NamedObservationHandle;
883
+
732
884
  /**
733
885
  * @license
734
886
  * SPDX-License-Identifier: Apache-2.0
@@ -870,15 +1022,6 @@ declare function useFrameCapture(defaultOptions?: FrameCaptureOptions): FrameCap
870
1022
 
871
1023
  declare function useCameraFrameCapture(defaultOptions?: CameraFrameCaptureOptions): CameraFrameCaptureAPI;
872
1024
 
873
- /**
874
- * @license
875
- * SPDX-License-Identifier: Apache-2.0
876
- *
877
- * React state wrapper around fixed-camera simulation sequence recording.
878
- */
879
-
880
- declare function useCameraSequenceRecorder(): CameraFrameSequenceRecorderAPI;
881
-
882
1025
  /**
883
1026
  * @license
884
1027
  * SPDX-License-Identifier: Apache-2.0
@@ -1044,6 +1187,71 @@ declare function createMountedCameraFrameSequenceManifest(result: MountedCameraF
1044
1187
  declare function createMountedCameraFrameSequencePlanFromApi(api: MountedCameraFrameSequenceRecorderTarget, cameraKeys: readonly string[], options?: MountedCameraFrameSequencePlanOptions): MountedCameraFrameSequencePlan;
1045
1188
  declare function recordMountedCameraFrameSequence(api: MountedCameraFrameSequenceRecorderTarget, options: MountedCameraFrameSequenceRecordOptions): Promise<MountedCameraFrameSequenceRecordResult>;
1046
1189
 
1190
+ /**
1191
+ * @license
1192
+ * SPDX-License-Identifier: Apache-2.0
1193
+ *
1194
+ * Helpers for turning Three/MuJoCo camera captures into policy image payloads.
1195
+ */
1196
+
1197
+ type PolicyCameraFrameCaptureTarget = Pick<MujocoSimAPI, 'captureCameraFrame'>;
1198
+ type PolicyCameraFramePlanTarget = Pick<MujocoSimAPI, 'getCameras' | 'getSites' | 'getBodies'>;
1199
+ type PolicyCameraFrameStreamOptions = Partial<Omit<PolicyCameraFrameStream, 'key'>> & MountedCameraFrameSequenceCameraOptions & {
1200
+ /** Additional policy payload keys that should receive this stream's data URL. */
1201
+ aliases?: readonly string[];
1202
+ };
1203
+ interface CreatePolicyCameraFrameCapturePlanOptions extends Omit<ResolveMountedCameraFrameSourceOptions, 'cameras' | 'sites' | 'bodies'> {
1204
+ cameraKeys: readonly string[];
1205
+ cameras?: ResolveMountedCameraFrameSourceOptions['cameras'];
1206
+ sites?: ResolveMountedCameraFrameSourceOptions['sites'];
1207
+ bodies?: ResolveMountedCameraFrameSourceOptions['bodies'];
1208
+ defaults?: MountedCameraFrameSequenceDefaults;
1209
+ streamOptions?: Record<string, PolicyCameraFrameStreamOptions>;
1210
+ includeObservationImageAliases?: boolean;
1211
+ requireAll?: boolean;
1212
+ }
1213
+ interface PolicyCameraFrameCapturePlan extends PolicyCameraFrameCaptureOptions {
1214
+ cameraKeys: string[];
1215
+ streams: PolicyCameraFrameStream[];
1216
+ mountedPlan: MountedCameraFrameSequencePlan;
1217
+ missingKeys: string[];
1218
+ }
1219
+ declare function createPolicyCameraFrameCapturePlan(options: CreatePolicyCameraFrameCapturePlanOptions): PolicyCameraFrameCapturePlan;
1220
+ declare function createPolicyCameraFrameCapturePlanFromApi(api: PolicyCameraFramePlanTarget, options: Omit<CreatePolicyCameraFrameCapturePlanOptions, 'cameras' | 'sites' | 'bodies'>): PolicyCameraFrameCapturePlan;
1221
+ declare function capturePolicyCameraFrames(target: PolicyCameraFrameCaptureTarget, options: PolicyCameraFrameCaptureOptions): Promise<PolicyCameraFrameCaptureResult>;
1222
+ declare function capturePolicyCameraFramesFromMountedStreams(target: PolicyCameraFrameCaptureTarget & PolicyCameraFramePlanTarget, options: Omit<CreatePolicyCameraFrameCapturePlanOptions, 'cameras' | 'sites' | 'bodies'>): Promise<PolicyCameraFrameCaptureResult & {
1223
+ plan: PolicyCameraFrameCapturePlan;
1224
+ }>;
1225
+
1226
+ /**
1227
+ * @license
1228
+ * SPDX-License-Identifier: Apache-2.0
1229
+ *
1230
+ * React wrapper for capturing policy image payloads from Three/MuJoCo cameras.
1231
+ */
1232
+
1233
+ type MountedPolicyCameraFrameCaptureOptions = Omit<CreatePolicyCameraFrameCapturePlanOptions, 'cameras' | 'sites' | 'bodies'>;
1234
+ interface MountedPolicyCameraFrameCaptureAPI {
1235
+ status: FrameCaptureStatus;
1236
+ error: Error | null;
1237
+ isCapturing: boolean;
1238
+ capture: (options?: Partial<MountedPolicyCameraFrameCaptureOptions>) => Promise<PolicyCameraFrameCaptureResult & {
1239
+ plan: PolicyCameraFrameCapturePlan;
1240
+ }>;
1241
+ reset: () => void;
1242
+ }
1243
+ declare function usePolicyCameraFrames(defaultOptions: PolicyCameraFrameCaptureOptions): PolicyCameraFrameCaptureAPI;
1244
+ declare function usePolicyCameraFramesFromMountedStreams(defaultOptions: MountedPolicyCameraFrameCaptureOptions): MountedPolicyCameraFrameCaptureAPI;
1245
+
1246
+ /**
1247
+ * @license
1248
+ * SPDX-License-Identifier: Apache-2.0
1249
+ *
1250
+ * React state wrapper around fixed-camera simulation sequence recording.
1251
+ */
1252
+
1253
+ declare function useCameraSequenceRecorder(): CameraFrameSequenceRecorderAPI;
1254
+
1047
1255
  /**
1048
1256
  * @license
1049
1257
  * SPDX-License-Identifier: Apache-2.0
@@ -1094,6 +1302,8 @@ interface CameraFrameCaptureSession {
1094
1302
  captureBlob(options?: CameraFrameCaptureOptions): Promise<CameraFrameCaptureBlobResult>;
1095
1303
  dispose(): void;
1096
1304
  }
1305
+ declare const CAMERA_FRAME_CAPTURE_RENDER_USER_DATA_KEY = "mujocoReactCameraFrameCaptureRender";
1306
+ declare const CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY = "mujocoReactCameraFrameCapturePreRender";
1097
1307
  declare const CAPTURE_EXCLUDE_KEY = "mujoco.capture.exclude";
1098
1308
  declare function createCameraFrameCaptureSession(renderer: THREE.WebGLRenderer, scene: THREE.Scene, fallbackCamera: THREE.Camera, options?: CameraFrameCaptureOptions): CameraFrameCaptureSession;
1099
1309
  declare function renderCameraFrameToCanvas(renderer: THREE.WebGLRenderer, scene: THREE.Scene, fallbackCamera: THREE.Camera, options?: CameraFrameCaptureOptions): {
@@ -1106,6 +1316,48 @@ declare function renderCameraFrameToCanvas(renderer: THREE.WebGLRenderer, scene:
1106
1316
  declare function captureCameraFrame(renderer: THREE.WebGLRenderer, scene: THREE.Scene, fallbackCamera: THREE.Camera, options?: CameraFrameCaptureOptions): Promise<CameraFrameCaptureResult>;
1107
1317
  declare function captureCameraFrameBlob(renderer: THREE.WebGLRenderer, scene: THREE.Scene, fallbackCamera: THREE.Camera, options?: CameraFrameCaptureOptions): Promise<CameraFrameCaptureBlobResult>;
1108
1318
 
1319
+ /**
1320
+ * @license
1321
+ * SPDX-License-Identifier: Apache-2.0
1322
+ *
1323
+ * Helpers for applying policy action vectors to MuJoCo controls.
1324
+ */
1325
+
1326
+ interface ApplyPolicyActionToControlsOptions {
1327
+ /**
1328
+ * First actuator/control index to write. Defaults to 0.
1329
+ */
1330
+ actuatorOffset?: number;
1331
+ /**
1332
+ * Maximum number of controls to write. Defaults to the action length.
1333
+ */
1334
+ actionSize?: number;
1335
+ /**
1336
+ * Clamp each action value to `model.actuator_ctrlrange` before writing.
1337
+ * Defaults to true because most learned policies should not exceed actuator limits.
1338
+ */
1339
+ clamp?: boolean;
1340
+ /**
1341
+ * Leave the current control unchanged when an action entry is not finite.
1342
+ * Defaults to true so a bad policy response cannot write NaN into the simulation.
1343
+ */
1344
+ skipInvalid?: boolean;
1345
+ }
1346
+ interface ApplyPolicyActionToControlsResult {
1347
+ /**
1348
+ * Values actually written to `data.ctrl`, after offset, truncation, and clamping.
1349
+ */
1350
+ applied: number[];
1351
+ /**
1352
+ * Actuator indices that were not written because the corresponding action value
1353
+ * was not finite and `skipInvalid` was enabled.
1354
+ */
1355
+ skipped: number[];
1356
+ actuatorOffset: number;
1357
+ }
1358
+ declare function clampPolicyActionValue(model: MujocoModel, actuatorIndex: number, value: number): number;
1359
+ declare function applyPolicyActionToControls(model: MujocoModel, data: MujocoData, action: PolicyVector, options?: ApplyPolicyActionToControlsOptions): ApplyPolicyActionToControlsResult;
1360
+
1109
1361
  /**
1110
1362
  * @license
1111
1363
  * SPDX-License-Identifier: Apache-2.0
@@ -1201,4 +1453,4 @@ interface CameraAnimationAPI {
1201
1453
  */
1202
1454
  declare function useCameraAnimation(): CameraAnimationAPI;
1203
1455
 
1204
- export { ActuatedJointInfo, ActuatorInfo, Actuators, ArrayJointStateResult, Bodies, Body, BodyProps, BodyStateResult, CAPTURE_EXCLUDE_KEY, type CameraAnimationAPI, CameraFrameCaptureAPI, CameraFrameCaptureBlobResult, CameraFrameCaptureOptions, CameraFrameCaptureResult, CameraFrameCaptureSource, type CameraFrameMountSelector, CameraFrameSequenceCamera, CameraFrameSequenceOptions, CameraFrameSequenceRecorderAPI, CameraFrameSequenceResult, Cameras, ContactInfo, ContactListener, ContactListenerProps, ContactMarkers, ControlGroupInfo, ControlGroupSelector, type ControllerComponent, type ControllerOptions, type CreateMountedCameraFrameSequenceManifestOptions, type CreateMountedCameraFrameSequencePlanOptions, CtrlHandle, Debug, DebugProps, DragInteraction, DragInteractionProps, FlexRenderer, FrameCaptureAPI, FrameCaptureBlobResult, FrameCaptureOptions, FrameCaptureResult, GeomInfo, IkConfig, IkContextValue, IkGizmo, IkGizmoProps, InstancedGeomRenderer, JointStateOptions, JointStateResult, Joints, KeyboardIkTargetConfig, KeyboardTeleopConfig, type MountedCameraFrameCaptureSource, type MountedCameraFrameSequenceCameraOptions, type MountedCameraFrameSequenceDefaults, type MountedCameraFrameSequenceManifest, MountedCameraFrameSequenceManifestStatus, type MountedCameraFrameSequencePlan, type MountedCameraFrameSequencePlanOptions, type MountedCameraFrameSequenceReadiness, MountedCameraFrameSequenceReadinessStatus, type MountedCameraFrameSequenceRecordOptions, type MountedCameraFrameSequenceRecordResult, type MountedCameraFrameSequenceRecorderTarget, type MountedCameraFrameSequenceSourceReadiness, type MountedCameraFrameSequenceStreamSummary, type MountedCameraFrameSourceSuggestion, MountedCameraFrameSourceSuggestionMatch, type MountedCameraSequencePlanOptions, type MountedCameraSequenceReadiness, type MountedCameraSequenceRecordOptions, type MountedCameraSequenceRecordResult, type MountedCameraSequenceRecorderAPI, MujocoCanvas, MujocoCanvasProps, MujocoContextValue, MujocoData, type MujocoLoader, type MujocoLoaderOptions, MujocoModel, MujocoModule, MujocoPhysics, type MujocoPhysicsProps, MujocoProvider, type MujocoProviderProps, MujocoSimAPI, MujocoSimProvider, type MujocoWasmVariant, type NamedCameraFrameResource, ObservationConfig, ObservationHandle, ObservationResult, PairedSplatEnvironmentConfig, PhysicsStepCallback, PlaybackState, PolicyConfig, PolicyVector, ReadyCallbackInput, type ResolveMountedCameraFrameSourceOptions, type ResolvedMountedCameraFrameSource, ScalarJointStateResult, ScenarioLighting, ScenarioLightingPreset, ScenarioLightingProps, SceneConfig, SceneLights, SceneLightsProps, SelectionCallbackInput, SensorHandle, SensorInfo, Sensors, SitePositionResult, Sites, SplatCollisionPrimitive, SplatCollisionProxyConfig, type SplatCollisionProxyGeomPreview, type SplatCollisionProxyGeomsState, SplatCollisionProxyPreview, type SplatCollisionProxyPreviewProps, type SplatCollisionProxyPreviewStatus, type SplatCollisionProxyPreviewVector3, SplatEnvironment, SplatEnvironmentMetadata, SplatEnvironmentMetadataInput, SplatEnvironmentProps, SplatEnvironmentReadiness, SplatEnvironmentReadinessStatus, SplatFormat, SplatRendererKind, SplatSceneConfigInput, SplatSceneConfigState, SplatSceneInput, StepCallbackInput, TendonRenderer, TrajectoryFrame, TrajectoryInput, TrajectoryPlayer, TrajectoryPlayerProps, TrajectoryStateChangeInput, type UseSplatCollisionProxyGeomsOptions, VisualScenarioConfig, VisualScenarioEffects, VisualScenarioEffectsProps, VisualScenarioExecutionContext, VisualScenarioExecutionContextInput, buildObservation, canFetchSplatCollisionProxyXml, captureCameraFrame, captureCameraFrameBlob, captureFrame, captureFrameBlob, createCameraFrameCaptureSession, createContiguousControlGroup, createController, createControllerHook, createMountedCameraFrameSequenceManifest, createMountedCameraFrameSequencePlan, createMountedCameraFrameSequencePlanFromApi, createMountedCameraFrameSequenceReadiness, createMountedCameraFrameSourceSuggestions, createPairedSplatEnvironment, createSparkSplatViewerUrl, createSplatEnvironmentUserData, createSplatSceneConfig, createVisualScenarioExecutionContext, fetchSplatCollisionProxyXml, findActuatorByName, findBodyByName, findGeomByName, findJointByName, findKeyframeByName, findSensorByName, findSiteByName, findTendonByName, getActuatedJoints, getCameraFrameCaptureSourceTarget, getControlMap, getMountedCameraFrameCaptureSource, getName, getScenarioBackground, getScenarioCameraPosition, getSplatEnvironmentReadiness, isMountedCameraFrameCaptureSource, loadScene, parseSplatCollisionProxyGeoms, recordMountedCameraFrameSequence, renderCameraFrameToCanvas, resolveControlGroup, resolveMountedCameraFrameSource, useActuators, useAfterPhysicsStep, useBeforePhysicsStep, useBodyMeshes, useBodyState, useCameraAnimation, useCameraFrameCapture, useCameraSequenceRecorder, useContactEvents, useContacts, useCtrl, useCtrlNoise, useFrameCapture, useGamepad, useGravityCompensation, useIkController, useJointState, useKeyboardIkTarget, useKeyboardTeleop, useMountedCameraSequenceRecorder, useMujoco, useMujocoWasm, useObservation, usePolicy, useSceneLights, useSelectionHighlight, useSensor, useSensors, useSitePosition, useSplatCollisionProxyGeoms, useSplatEnvironment, useSplatSceneConfig, useTrajectoryPlayer, useTrajectoryRecorder, useVideoRecorder, useVisualScenarioEffects, useVisualScenarioExecutionContext, withSplatEnvironment };
1456
+ export { ActuatedJointInfo, ActuatorInfo, Actuators, type ApplyPolicyActionToControlsOptions, type ApplyPolicyActionToControlsResult, ArrayJointStateResult, Bodies, Body, BodyProps, BodyStateResult, CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, CAMERA_FRAME_CAPTURE_RENDER_USER_DATA_KEY, CAPTURE_EXCLUDE_KEY, type CameraAnimationAPI, CameraFrameCaptureAPI, CameraFrameCaptureBlobResult, CameraFrameCaptureOptions, CameraFrameCaptureResult, CameraFrameCaptureSource, type CameraFrameMountSelector, CameraFrameSequenceCamera, CameraFrameSequenceOptions, CameraFrameSequenceRecorderAPI, CameraFrameSequenceResult, Cameras, type ContactHistoryEntry, type ContactHistoryHandle, type ContactHistoryOptions, ContactInfo, ContactListener, ContactListenerProps, ContactMarkers, ControlGroupInfo, ControlGroupSelector, type ControlWriterConflict, type ControlWriterHandle, type ControlWriterOptions, type ControlWriterWriteOptions, type ControllerComponent, type ControllerOptions, type CreateMountedCameraFrameSequenceManifestOptions, type CreateMountedCameraFrameSequencePlanOptions, type CreatePolicyCameraFrameCapturePlanOptions, CtrlHandle, Debug, DebugProps, DragInteraction, DragInteractionProps, FlexRenderer, FrameCaptureAPI, FrameCaptureBlobResult, FrameCaptureOptions, FrameCaptureResult, FrameCaptureStatus, GeomInfo, Geoms, IkConfig, IkContextValue, IkGizmo, IkGizmoProps, InstancedGeomRenderer, JointStateOptions, JointStateResult, Joints, KeyboardIkTargetConfig, KeyboardTeleopConfig, type MountedCameraFrameCaptureSource, type MountedCameraFrameSequenceCameraOptions, type MountedCameraFrameSequenceDefaults, type MountedCameraFrameSequenceManifest, MountedCameraFrameSequenceManifestStatus, type MountedCameraFrameSequencePlan, type MountedCameraFrameSequencePlanOptions, type MountedCameraFrameSequenceReadiness, MountedCameraFrameSequenceReadinessStatus, type MountedCameraFrameSequenceRecordOptions, type MountedCameraFrameSequenceRecordResult, type MountedCameraFrameSequenceRecorderTarget, type MountedCameraFrameSequenceSourceReadiness, type MountedCameraFrameSequenceStreamSummary, type MountedCameraFrameSourceSuggestion, MountedCameraFrameSourceSuggestionMatch, type MountedCameraSequencePlanOptions, type MountedCameraSequenceReadiness, type MountedCameraSequenceRecordOptions, type MountedCameraSequenceRecordResult, type MountedCameraSequenceRecorderAPI, type MountedPolicyCameraFrameCaptureAPI, type MountedPolicyCameraFrameCaptureOptions, MujocoCanvas, MujocoCanvasProps, MujocoContextValue, MujocoData, type MujocoLoader, type MujocoLoaderOptions, MujocoModel, MujocoModule, MujocoPhysics, type MujocoPhysicsProps, MujocoProvider, type MujocoProviderProps, MujocoSimAPI, MujocoSimProvider, type MujocoWasmVariant, type NamedCameraFrameResource, type NamedObservationField, type NamedObservationHandle, type NamedObservationInput, type NamedObservationLayoutItem, type NamedObservationMissing, type NamedObservationOptions, type NamedObservationResult, ObservationConfig, ObservationHandle, ObservationOutput, ObservationResult, PairedSplatEnvironmentConfig, PhysicsStepCallback, PlaybackState, PolicyAPI, PolicyCameraFrameCaptureAPI, PolicyCameraFrameCaptureOptions, type PolicyCameraFrameCapturePlan, PolicyCameraFrameCaptureResult, type PolicyCameraFrameCaptureTarget, type PolicyCameraFramePlanTarget, PolicyCameraFrameStream, type PolicyCameraFrameStreamOptions, PolicyConfig, PolicyVector, type PoseReadout, type PoseResourceKind, ReadyCallbackInput, RemotePolicyAPI, RemotePolicyConfig, type ResolveMountedCameraFrameSourceOptions, type ResolvedMountedCameraFrameSource, ScalarJointStateResult, ScenarioLighting, ScenarioLightingPreset, ScenarioLightingProps, SceneConfig, SceneLights, SceneLightsProps, SelectionCallbackInput, SensorHandle, SensorInfo, Sensors, SitePositionResult, Sites, SplatCollisionPrimitive, SplatCollisionProxyConfig, type SplatCollisionProxyGeomPreview, type SplatCollisionProxyGeomsState, SplatCollisionProxyPreview, type SplatCollisionProxyPreviewProps, type SplatCollisionProxyPreviewStatus, type SplatCollisionProxyPreviewVector3, SplatEnvironment, SplatEnvironmentMetadata, SplatEnvironmentMetadataInput, SplatEnvironmentProps, SplatEnvironmentReadiness, SplatEnvironmentReadinessStatus, SplatFormat, SplatRendererKind, SplatSceneConfigInput, SplatSceneConfigState, SplatSceneInput, StepCallbackInput, TendonRenderer, TrajectoryFrame, TrajectoryInput, TrajectoryPlayer, TrajectoryPlayerProps, TrajectoryStateChangeInput, type UseSplatCollisionProxyGeomsOptions, VisualScenarioConfig, VisualScenarioEffects, VisualScenarioEffectsProps, VisualScenarioExecutionContext, VisualScenarioExecutionContextInput, applyPolicyActionToControls, bodyPositionField, buildObservation, canFetchSplatCollisionProxyXml, captureCameraFrame, captureCameraFrameBlob, captureFrame, captureFrameBlob, capturePolicyCameraFrames, capturePolicyCameraFramesFromMountedStreams, clampPolicyActionValue, createCameraFrameCaptureSession, createContiguousControlGroup, createController, createControllerHook, createMountedCameraFrameSequenceManifest, createMountedCameraFrameSequencePlan, createMountedCameraFrameSequencePlanFromApi, createMountedCameraFrameSequenceReadiness, createMountedCameraFrameSourceSuggestions, createNamedObservationBuilder, createPairedSplatEnvironment, createPolicyCameraFrameCapturePlan, createPolicyCameraFrameCapturePlanFromApi, createSparkSplatViewerUrl, createSplatEnvironmentUserData, createSplatSceneConfig, createVisualScenarioExecutionContext, ctrlField, fetchSplatCollisionProxyXml, findActuatorByName, findBodyByName, findGeomByName, findJointByName, findKeyframeByName, findSensorByName, findSiteByName, findTendonByName, geomPositionField, getActuatedJoints, getCameraFrameCaptureSourceTarget, getControlMap, getMountedCameraFrameCaptureSource, getName, getScenarioBackground, getScenarioCameraPosition, getSplatEnvironmentReadiness, isMountedCameraFrameCaptureSource, loadScene, parseSplatCollisionProxyGeoms, qposField, qvelField, readNamedObservation, recordMountedCameraFrameSequence, renderCameraFrameToCanvas, resolveControlGroup, resolveMountedCameraFrameSource, sitePositionField, useActuators, useAfterPhysicsStep, useBeforePhysicsStep, useBodyMeshes, useBodyPose, useBodyState, useCameraAnimation, useCameraFrameCapture, useCameraSequenceRecorder, useContactEvents, useContactHistory, useContacts, useControlWriter, useCtrl, useCtrlNoise, useFrameCapture, useGamepad, useGeomPose, useGravityCompensation, useIkController, useJointState, useKeyboardIkTarget, useKeyboardTeleop, useMountedCameraSequenceRecorder, useMujoco, useMujocoWasm, useNamedObservation, useObservation, usePolicy, usePolicyCameraFrames, usePolicyCameraFramesFromMountedStreams, useRemotePolicy, useSceneLights, useSelectionHighlight, useSensor, useSensors, useSitePose, useSitePosition, useSplatCollisionProxyGeoms, useSplatEnvironment, useSplatSceneConfig, useTrajectoryPlayer, useTrajectoryRecorder, useVideoRecorder, useVisualScenarioEffects, useVisualScenarioExecutionContext, withSplatEnvironment };