@vgai/editor-sdk 0.5.40 → 0.5.42

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@vgai/editor-sdk",
3
3
  "author": "Volter AI, Inc.",
4
4
  "license": "Apache-2.0",
5
- "version": "0.5.40",
5
+ "version": "0.5.42",
6
6
  "type": "module",
7
7
  "repository": {
8
8
  "type": "git",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@types/three": "^0.180.0",
27
- "@vgai/sdk": "0.5.40"
27
+ "@vgai/sdk": "0.5.42"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "@vgai/engine": "*",
package/src/client.ts CHANGED
@@ -16,6 +16,7 @@ import type {
16
16
  GameplayRecordingCapture,
17
17
  GameplayRecordingOptions,
18
18
  GameplayRecordingStarted,
19
+ GameplayRecordingTimeline,
19
20
  HelperVisibility,
20
21
  InspectedFieldWrite,
21
22
  InspectedHierarchy,
@@ -457,6 +458,15 @@ export class EditorClient {
457
458
  return this.command<GameplayRecordingCapture>({ type: 'bridge-recording-stop' });
458
459
  }
459
460
 
461
+ /** Read the active capture's monotonic media position. This is the only clock
462
+ * suitable for selecting intervals inside the finalized recording. */
463
+ async getGameplayRecordingTimeline(): Promise<GameplayRecordingTimeline> {
464
+ const timeline = await this.command<GameplayRecordingTimeline>({
465
+ type: 'bridge-recording-timeline',
466
+ });
467
+ return { startedAt: timeline.startedAt, elapsedMs: timeline.elapsedMs };
468
+ }
469
+
460
470
  /**
461
471
  * Capture an isolated, deterministic four-view preview through the editor's
462
472
  * native Asset Lab. The SDK delegates rendering to the editor; it never
@@ -672,6 +682,11 @@ export class EditorClient {
672
682
  return data.hierarchy;
673
683
  }
674
684
 
685
+ /** Run the Hierarchy panel's own Expand All action. */
686
+ async expandHierarchyAll(): Promise<void> {
687
+ await this.command<Record<string, never>>({ type: 'expand-hierarchy-all' });
688
+ }
689
+
675
690
  /**
676
691
  * Write one editable path through the active Inspector's own IO.
677
692
  *
package/src/index.ts CHANGED
@@ -58,6 +58,7 @@ export type {
58
58
  GameplayRecordingCapture,
59
59
  GameplayRecordingOptions,
60
60
  GameplayRecordingStarted,
61
+ GameplayRecordingTimeline,
61
62
  HelperVisibility,
62
63
  InspectedAction,
63
64
  InspectedField,
@@ -74,6 +75,7 @@ export type {
74
75
  InspectionSurface,
75
76
  LabeledShotSetCapture,
76
77
  PlayStarted,
78
+ PlayRecordingStatus,
77
79
  PresentedEditorView,
78
80
  ProjectInfo,
79
81
  ProjectTemplate,
package/src/types.ts CHANGED
@@ -141,11 +141,30 @@ export interface GameplayRecordingCapture extends GameplayRecordingStarted {
141
141
  hidden: boolean;
142
142
  }
143
143
 
144
+ /** A position on the active recorder's authoritative monotonic timeline.
145
+ * `startedAt` identifies the recording; `elapsedMs` shares the exact origin
146
+ * used to calculate the finalized capture's `durationMs`. */
147
+ export interface GameplayRecordingTimeline {
148
+ startedAt: string;
149
+ elapsedMs: number;
150
+ }
151
+
152
+ /** What Play can report while its recording is still open. Geometry, layers, media cadence, and
153
+ * final health are deliberately absent: those facts are only authoritative after Stop finalizes
154
+ * the capture. */
155
+ export interface PlayRecordingStatus {
156
+ path: string;
157
+ startedAt: string;
158
+ rotates: boolean;
159
+ logFile: string | null;
160
+ idleAutoStopMs: number;
161
+ }
162
+
144
163
  /** What `play` reports back once the run is up and recording. */
145
164
  export interface PlayStarted {
146
165
  /** Absent only when the recorder could not start; play is up either way and
147
166
  * the editor console carries the reason. */
148
- recording?: GameplayRecordingStarted;
167
+ recording?: PlayRecordingStatus;
149
168
  }
150
169
 
151
170
  export type AssetPreviewView = 'front' | 'right' | 'top' | 'perspective';
@@ -439,6 +458,16 @@ export interface EditorState {
439
458
  activeViewportTab: ViewportTab;
440
459
  /** The actual active center document, including tool/source documents. */
441
460
  activeDocumentId?: string | null;
461
+ /** The visible bottom utility, or null when that drawer is collapsed. */
462
+ activeUtilityId?: string | null;
463
+ /** The shared Analytics rail's current durable-session selection. */
464
+ gameplaySession?: {
465
+ selectedSessionId: string | null;
466
+ latestSessionId: string | null;
467
+ selectedStatus: 'live' | 'completed' | null;
468
+ cursorMs: number;
469
+ liveEdgeMs: number;
470
+ };
442
471
  /** Every center document the editor currently has open, by stable registry id. */
443
472
  openDocumentIds?: string[];
444
473
  activeTabKey: string;
@@ -527,6 +556,18 @@ export interface EditorState {
527
556
  unresponsive: boolean;
528
557
  commandListener?: 'ready' | 'not attached' | (string & {});
529
558
  pageErrors?: string[];
559
+ /**
560
+ * The control-plane generation handshake for each page load currently
561
+ * associated with this physical tab. Anything other than `aligned` is a
562
+ * lifecycle contradiction or a handshake still in progress.
563
+ */
564
+ controlLifecycles?: Array<{
565
+ status: 'aligned' | 'awaiting-heartbeat' | 'unconfirmed' | 'mismatch';
566
+ serverGeneration8: string;
567
+ connectionGeneration8: string;
568
+ pageGeneration8: string;
569
+ clientId8: string;
570
+ }>;
530
571
  census?: RecordedTabCensus | null;
531
572
  censusAgeMs?: number | null;
532
573
  }>;