ohzi-core 13.2.2 → 14.0.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.
@@ -0,0 +1,101 @@
1
+ export interface ViewSummary
2
+ {
3
+ name: string;
4
+ url: string;
5
+ current: boolean;
6
+ }
7
+
8
+ export interface ViewManagerLike
9
+ {
10
+ views: Array<{ name?: unknown; url?: unknown }>;
11
+ get_current_view(): { name?: unknown } | undefined;
12
+ go_to_view(name: string, change_url?: boolean, skip?: boolean): void;
13
+ }
14
+
15
+ export interface NavigateRequest
16
+ {
17
+ name?: unknown;
18
+ change_url?: unknown;
19
+ skip?: unknown;
20
+ }
21
+
22
+ export interface NavigateResult
23
+ {
24
+ requested: string;
25
+ current: string | null;
26
+ change_url: boolean;
27
+ skip: boolean;
28
+ }
29
+
30
+ // ViewManager.get() returns undefined for an unknown name and go_to_view then
31
+ // dereferences v.url, so the name is validated here before it can throw.
32
+ class ViewNavigator
33
+ {
34
+ list(manager: ViewManagerLike): { current: string | null; views: ViewSummary[] }
35
+ {
36
+ const current = this.current(manager);
37
+
38
+ return {
39
+ current,
40
+ views: this.names(manager).map((view) => ({
41
+ name: view.name,
42
+ url: view.url,
43
+ current: view.name === current
44
+ }))
45
+ };
46
+ }
47
+
48
+ go(manager: ViewManagerLike, request: NavigateRequest): NavigateResult
49
+ {
50
+ const name = typeof request.name === 'string' ? request.name : null;
51
+ const available = this.names(manager);
52
+
53
+ if (name === null || !available.some((view) => view.name === name))
54
+ {
55
+ const listed = available.map((view) => view.name).join(', ');
56
+
57
+ throw this.error('not_found', `Unknown view. Available views: ${listed}.`);
58
+ }
59
+
60
+ const change_url = request.change_url === undefined ? true : request.change_url === true;
61
+ const skip = request.skip === true;
62
+
63
+ manager.go_to_view(name, change_url, skip);
64
+
65
+ return { requested: name, current: this.current(manager), change_url, skip };
66
+ }
67
+
68
+ private names(manager: ViewManagerLike): Array<{ name: string; url: string }>
69
+ {
70
+ const views = Array.isArray(manager.views) ? manager.views : [];
71
+
72
+ return views
73
+ .filter((view) => typeof view.name === 'string')
74
+ .map((view) => ({
75
+ name: view.name as string,
76
+ url: typeof view.url === 'string' ? view.url : ''
77
+ }));
78
+ }
79
+
80
+ private current(manager: ViewManagerLike): string | null
81
+ {
82
+ const view = manager.get_current_view();
83
+
84
+ if (typeof view !== 'object' || view === null || typeof view.name !== 'string')
85
+ {
86
+ return null;
87
+ }
88
+
89
+ return view.name;
90
+ }
91
+
92
+ private error(code: string, message: string): Error
93
+ {
94
+ const error: Error & { code?: string } = new Error(message);
95
+ error.code = code;
96
+
97
+ return error;
98
+ }
99
+ }
100
+
101
+ export { ViewNavigator };
@@ -0,0 +1,31 @@
1
+ // This file MUST stay in sync with mcp/src/protocol.ts.
2
+ // A mismatch is caught at handshake time and refuses the connection.
3
+ export const PROTOCOL_VERSION = 1;
4
+
5
+ export interface CanvasInfo
6
+ {
7
+ width: number;
8
+ height: number;
9
+ dpr: number;
10
+ }
11
+
12
+ export interface AppInfo
13
+ {
14
+ core_version: string;
15
+ components_version: string;
16
+ pit_version: string;
17
+ active_view: string | null;
18
+ has_camera: boolean;
19
+ canvas: CanvasInfo;
20
+ }
21
+
22
+ export interface Command
23
+ {
24
+ id: string;
25
+ cmd: string;
26
+ args?: Record<string, unknown>;
27
+ }
28
+
29
+ export type Reply =
30
+ | { id: string; ok: true; result: unknown }
31
+ | { id: string; ok: false; error: { code: string; message: string } };
package/src/index.ts CHANGED
@@ -17,7 +17,17 @@ import { CameraManager } from './CameraManager';
17
17
  import { CanvasDrawer } from './canvas_drawer/CanvasDrawer';
18
18
  import { SimpleTextDrawer } from './canvas_drawer/SimpleTextDrawer';
19
19
  import { Capabilities } from './Capabilities';
20
+ import { CameraBridge } from './dev_bridge/CameraBridge';
21
+ import { CaptureService } from './dev_bridge/CaptureService';
22
+ import { ConsoleBuffer } from './dev_bridge/ConsoleBuffer';
23
+ import { InputSynthesizer } from './dev_bridge/InputSynthesizer';
24
+ import { PerformanceProbe } from './dev_bridge/PerformanceProbe';
25
+ import { RenderModeRegistry } from './dev_bridge/RenderModeRegistry';
26
+ import { SceneEditor } from './dev_bridge/SceneEditor';
27
+ import { SceneInspector } from './dev_bridge/SceneInspector';
28
+ import { ViewNavigator } from './dev_bridge/ViewNavigator';
20
29
  import { Debug } from './Debug';
30
+ import { DevBridge } from './dev_bridge/DevBridge';
21
31
  import { Graphics } from './Graphics';
22
32
  import { CSSAnimator } from './html_utilities/CSSAnimator';
23
33
  import { Initializer } from './Initializer';
@@ -125,12 +135,12 @@ import { AbstractCameraState } from './camera_controller/states/common/AbstractC
125
135
  import { CommonCameraState } from './camera_controller/states/common/CommonCameraState';
126
136
 
127
137
  export {
128
- AbstractCameraState, AbstractLoader, AbstractScene, ActionEvent, ActionInterpolator, ActionSequencer, ActionSequencerBuilder, AddMaterial, ApplicationView, ArrayUtilities, Arrow, AsyncAbstractLoader, AsyncAudiosLoader, AsyncObjectsLoader, AsyncTextureLoader, AsyncTexturesLoader, AudioLoader, BaseApplication, BaseRender, BaseShaderMaterial, BasisLoader, BlitMaterial, Blurrer, Browser, BufferGeometryUtils, CameraController, CameraManager, CameraMovementMode, CameraUtilities, CanvasDrawer, Capabilities, CommonCameraState, Compilator, CSSAnimator, Cube, CubemapLoader, DAELoader, Debug, DebugNormalsRender, DrawIOAnimationSheet, DualFilteringBlurMaterial, DualFilteringBlurrer, EasingFunctions, FileLoader,
138
+ AbstractCameraState, AbstractLoader, AbstractScene, ActionEvent, ActionInterpolator, ActionSequencer, ActionSequencerBuilder, AddMaterial, ApplicationView, ArrayUtilities, Arrow, AsyncAbstractLoader, AsyncAudiosLoader, AsyncObjectsLoader, AsyncTextureLoader, AsyncTexturesLoader, AudioLoader, BaseApplication, BaseRender, BaseShaderMaterial, BasisLoader, BlitMaterial, Blurrer, Browser, BufferGeometryUtils, CameraBridge, CameraController, CameraManager, CameraMovementMode, CameraUtilities, CanvasDrawer, Capabilities, CaptureService, CommonCameraState, Compilator, ConsoleBuffer, CSSAnimator, Cube, CubemapLoader, DAELoader, Debug, DebugNormalsRender, DevBridge, DrawIOAnimationSheet, DualFilteringBlurMaterial, DualFilteringBlurrer, EasingFunctions, FileLoader,
129
139
  FontLoader, FrustumPointFitter, GaussianBlurrer, GeometryUtilities, GLTFDRACOLoader, GLTFLoader, GPUParticleSystem, Graphics, Grid, HDRCubeTextureLoader, HDRTextureLoader, HighQualityLoadingState, HorizontalPlane, HTMLUtilities,
130
- ImageUtilities, ImmediateMode, Initializer, JSONLoader, KeyboardInput, Line, LoadingState, MedianFilter, MeshSampler,
140
+ ImageUtilities, ImmediateMode, Initializer, InputSynthesizer, JSONLoader, KeyboardInput, Line, LoadingState, MedianFilter, MeshSampler,
131
141
  ModelUtilities, NormalAORender,
132
142
  NormalRender, NumberInterpolator, ObjectUtilities, OBJLoader, OMath, OrthographicCamera, OrthographicFrustumPointFitter, OS, OScreen, ParticleAttribute,
133
- ParticlePositionAttribute, PerspectiveCamera, PerspectiveFrustumPointFitter, PointArrayLoader, RegularLoadingState, RenderLoop, ResourceBatch,
134
- ResourceContainer, SceneManager, Screen, SDFTextBatch, SimpleTextDrawer, Sphere, StringUtilities, Text2D, TextLoader, TextureLoader, Time, TimeUtilities, TransitionManager, TransitionTable, UnrealBloomComposeMaterial, UnrealBloomRender, UpdatableMaterialMesh, Validation, VectorInterpolator, VerticalPlane, VideoLoader, ViewComponent,
135
- ViewComponentManager, ViewManager, VRRender, WorldImage
143
+ ParticlePositionAttribute, PerformanceProbe, PerspectiveCamera, PerspectiveFrustumPointFitter, PointArrayLoader, RegularLoadingState, RenderLoop, RenderModeRegistry, ResourceBatch,
144
+ ResourceContainer, SceneEditor, SceneInspector, SceneManager, Screen, SDFTextBatch, SimpleTextDrawer, Sphere, StringUtilities, Text2D, TextLoader, TextureLoader, Time, TimeUtilities, TransitionManager, TransitionTable, UnrealBloomComposeMaterial, UnrealBloomRender, UpdatableMaterialMesh, Validation, VectorInterpolator, VerticalPlane, VideoLoader, ViewComponent,
145
+ ViewComponentManager, ViewManager, ViewNavigator, VRRender, WorldImage
136
146
  };