StudioPropertiesModel - Real-time KOS Studio properties management with WebSocket synchronization.

This model provides centralized access to KOS Studio's runtime properties and configuration values, enabling applications to access Studio-specific settings, tool states, and integration parameters. Properties are synchronized in real-time via WebSocket topics, ensuring all connected clients maintain consistent Studio state information.

Key Features

  • Real-time synchronization - Properties update automatically via /kos/studio/properties topic
  • Connection-scoped access - Properties are specific to individual Studio VM connections
  • Fallback handling - Graceful degradation with default values when Studio is unavailable
  • Observable properties - Create reactive computed values for any property key
  • Session management - Automatic WebSocket session lifecycle with proper cleanup

Topic-Based Reactivity

The model listens to this KOS topic for real-time synchronization:

  • /kos/studio/properties - Broadcasts Studio property changes with connection-specific routing

Common Use Cases

  • Studio integration status - Check if legacy tools or specific Studio features are enabled
  • Tool configuration - Access Studio tool settings and preferences for UI adaptation
  • Connection management - Track Studio connection state and properties for diagnostics
  • Feature flags - Access Studio-specific feature toggles and experimental settings

Example: Basic Usage

const studioProps = StudioPropertiesModel.instance('studio-conn-1')
.options({ connectionId: 'vm-connection-abc123' })
.build();

await studioProps.initializePropertiesSession();
const legacyToolSupport = studioProps.get('kos.studio.tool.legacy');

Use Declared Type

See

StudioPropertiesOptions - Configuration options for StudioPropertiesModel instances

interface StudioPropertiesModel {
    id: string;
    connectionId: string;
    terminatePropertiesSession(): Promise<void>;
    initializePropertiesSession(): Promise<void>;
    get(key): any;
    createObservableProperty(key): IComputedValue<any>;
}

Methods

  • Terminates the WebSocket session for Studio properties. Cleans up subscriptions to prevent memory leaks.

    Returns Promise<void>

  • Initializes WebSocket session for real-time Studio property synchronization. Loads initial properties and subscribes to update topics.

    Returns Promise<void>

  • Retrieves a Studio property value by key.

    Parameters

    • key: string

      Property key to retrieve

    Returns any

    The property value or undefined if not set

  • Creates an observable computed property for reactive updates.

    Parameters

    • key: string

      Property key to observe

    Returns IComputedValue<any>

    Observable that emits when the property changes

Properties

id: string

Unique identifier for the model instance

connectionId: string

Studio VM connection identifier for property routing