/** Scene document from Convex (scenes.getById / listMyScenes) */ export type Scene = { _id: string; name: string; updatedAt: number; ownerId: string; sceneFileId: string; createdAt: number; sceneByteLength?: number; screenshotFileId?: string; /** Set when scene file is updated; used to avoid re-unpack when this CLI saved. */ lastModifiedSessionId?: string; }; export type PhibelleScene = { entityStore: { _currId: number; rootEntities: number[]; entities: { [id: string]: { name: string; engineId: number; parentId?: number; childrenIdsSet: number[]; childrenIds: number[]; isNodeOpen: boolean; script: string; scriptVersion: number; transform: { position: string; rotation: string; scale: string; }; renderVersion: number; properties: Array<{ name: string; type: string; value: any; }>; threeId: number; }; }; rootRenderVersion: number; lastRenderedVersion: number; selectedEntityIds: number[]; }; editorCameraStore: { orthographic: boolean; cameraPosition: [number, number, number]; cameraRotation: [number, number, number, string]; targetPosition: [number, number, number]; }; errorStore: Record; sceneScriptStore: { sceneScript: string; sceneProperties: any[]; lastModifiedSceneScript: number; }; engineModeStore: { engineMode: string; transformMode: string; }; version: string; }; /** Callbacks used by script watcher and first-run setup. */ export type WatchCallbacks = { onPushed: (file: string) => void; onNewEntity: (engineId: number, fileName?: string) => void; onError: (file: string, err: Error) => void; };