Member Junction
    Preparing search index...

    Server-only Meeting Controls channel — the facilitator surface. ONE instance per session.

    Unlike the whiteboard (resolved from the registry by the host via a parameterless ClassFactory construction), this channel needs a per-session IMeetingControlsEventSource from the bridge, so a bridge driver constructs it directly with MeetingControlsChannelDeps and hands it to the host's per-session plugin set. It has no client surface — the contract's GetServerToolDefinitions / ExecuteServerTool are the entire interface; there is no GetSurfaceComponent on the server half at all.

    Registered under MEETING_CONTROLS_CHANNEL_NAME so a seeded registry row can resolve a default (event-source-less) instance for discovery; a real session always injects the driver's event source.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    The bound session context, available from Initialize until Dispose. null outside that window — guard with ?. in any code that can run early/late.

    Accessors

    • get ToolNamePrefix(): string

      The shared name prefix of every server-executed tool this channel contributes (e.g. 'MeetingControls_'). The host routes any tool call whose name starts with this prefix to THIS plugin's ExecuteServerTool, which is what prevents tool-name collisions when multiple channels are active in one session. A channel that contributes no server tools may leave the default empty string (the host then never routes any call to it).

      Mirrors the client half's ToolNamePrefix. Default: '' (no server tools).

      Returns string

    Methods

    • Tears the plugin down: release any per-session resources, then drop the context. Subclasses overriding this MUST call super.Dispose(). Invoked by the host after the post-close linger window elapses (or immediately when the host is configured with no linger).

      Returns void

    • Invoked when the client's debounced channel-state save for THIS channel lands on the server, BEFORE the state is persisted onto the session's MJ: AI Agent Session Channels row.

      The plugin may validate/normalize the payload: return a replacement JSON string to persist instead of stateJson, or null to persist the original unchanged (the default). The host treats a thrown error, a non-string, or an empty string as "keep the original" — a plugin can therefore never lose a state save, only improve it.

      Parameters

      • stateJson: string

        The raw state-of-record payload the client submitted (already size-capped host-side).

      Returns Promise<string>

      The normalized payload to persist, or null to keep stateJson as-is.

    • Invoked when the session is closed — from ANY close path: the user's explicit hang-up, the janitor's orphan/staleness sweeps, the graceful shutdown drain, or an error-path teardown (the reason says which). Fired once per session; Dispose follows after the host's brief post-close linger window (during which late state saves still route here first). Default: no-op.

      Parameters

      Returns Promise<void>