Member Junction
    Preparing search index...

    Compact anchored popover that lets the user choose WHICH agent a realtime voice call should front — shown by MessageInputComponent when the phone button is clicked on a conversation with no prior agent participation (new / empty conversation), and on demand via the caret button next to the phone (any conversation), where it doubles as the way to pick a specific co-agent (the Realtime-type agent that voices the call) and — for authorized users — a specific voice model. The plain phone click on an existing conversation keeps its friction-free "call the resolved agent immediately" behavior.

    Mostly dumb: the host supplies the agent list (the same cached set the

    autocomplete / routing logic uses), the Realtime-type co-agent candidates (filtered from that same set), and the defaults to preselect; the picker emits the user's choice. The data it loads itself:

    • the compact "Voice model" option list (active Realtime models via a narrow RunView) — loaded and rendered ONLY when the current user holds the Realtime: Advanced Session Controls authorization (pure UX disclosure; the server enforces the authorization on the mint), and
    • the chosen co-agent's pairing rows (MJ: AI Agent Co Agents, Active 'CoAgent'-type rows): a co-agent with pairing rows may only front its paired targets, so the agent list constrains to those rows (Sequence order) with the IsDefault row preselected; a co-agent with zero rows is universal and the list is untouched.

    It does NOT persist anything (the host persists the co-agent preference via UserInfoEngine; mj-conversation-agent-picker pins MJConversationEntity.DefaultAgentID — different jobs, which is why this is a separate component).

    Anchors itself bottom-right above the composer — the host's .message-input-wrapper is position: relative.

    Hierarchy (View Summary)

    Implements

    • OnInit
    • AfterViewInit
    Index

    Constructors

    Properties

    AgentPicked: EventEmitter<RealtimeAgentPick> = ...

    Emitted with the chosen agent + optional explicit voice model / co-agent when the user confirms.

    Agents the user can call — same cached set the

    / routing logic uses.

    Cancelled: EventEmitter<void> = ...

    Emitted when the user dismisses without starting a call.

    CanOverrideSessionConfig: boolean = false

    Whether the current user holds the Realtime: Advanced Session Controls authorization. Gates the voice-model selector (and any future config-override controls) — pure disclosure; the server enforces the authorization on the mint.

    CoAgents: MJAIAgentEntityExtended[] = []

    The ACTIVE Realtime-type co-agent candidates the user can run (host-filtered from the same cached, run-permission-filtered agent set as Agents). The co-agent selector renders only when MORE THAN ONE candidate exists — with zero or one there's nothing meaningful to choose and the server's resolution chain applies.

    DefaultAgentId: string | null = null

    The agent the default resolution would pick — preselected and listed first.

    DefaultCoAgentId: string | null = null

    The user's persisted co-agent preference (host-loaded via UserInfoEngine) — preselected in the co-agent selector when it's still a valid candidate.

    Models: RealtimeModelOption[] = []

    Active Realtime models the model selector offers (loaded only for authorized users).

    Pairings: RealtimePairedAgentRow[] = []

    The selected co-agent's pairing rows; empty = universal co-agent (no constraint).

    Provider: IMetadataProvider | null

    If specified, this provider will be used for communication and for all metadata purposes. By default, if not provided, the Metadata and RunView classes are used for this and the default GraphQLDataProvider is used which is connected to the same back-end MJAPI instance as the Metadata and RunView classes. If you want to have this component connect to a different MJAPI back-end, create an instance of a ProviderBase sub-class like GraphQLDataProvider/etc, and configure it as appropriate to connect to the MJAPI back-end you want to use, and then pass it in here.

    RecordingConsent: boolean = false

    Whether the user has opted to record this call (mic + agent audio). Loaded from the per-user persisted preference (mj.realtimeVoice.recordingConsent.v1) on init and persisted cross-device on change. Defaults to off.

    SearchText: string = ''
    SelectedAgentId: string | null = null
    SelectedCoAgentId: string | null = null

    The explicitly chosen co-agent id, or null for "Auto (recommended)" (the server's chain).

    SelectedModelId: string | null = null

    The explicitly chosen voice model id, or null for "Auto (recommended)" (the default).

    SelectedVoiceId: string | null = null

    The explicitly chosen voice id, or null for the configured/default voice.

    UUIDsEqual: (
        uuid1: string | null | undefined,
        uuid2: string | null | undefined,
    ) => boolean = UUIDsEqual

    Type Declaration

      • (uuid1: string | null | undefined, uuid2: string | null | undefined): boolean
      • Performs a case-insensitive comparison of two UUID strings. Handles null/undefined gracefully — two nullish values are considered equal, but a nullish value is never equal to a non-nullish value.

        Parameters

        • uuid1: string | null | undefined

          First UUID to compare

        • uuid2: string | null | undefined

          Second UUID to compare

        Returns boolean

        true if the UUIDs are equal (case-insensitive), false otherwise

        // Cross-platform comparison (SQL Server uppercase vs PostgreSQL lowercase)
        UUIDsEqual('A1B2C3D4-E5F6-7890-ABCD-EF1234567890',
        'a1b2c3d4-e5f6-7890-abcd-ef1234567890') // true

        UUIDsEqual(null, null) // true
        UUIDsEqual(null, 'some-id') // false
        UUIDsEqual('abc', 'ABC') // true
    VoiceModels: RealtimeModelVoices[] = []

    Active Realtime models + their voices (for the voice selector); loaded only for authorized users.

    "ɵdir": unknown
    "ɵfac": unknown

    Accessors

    • get ProviderToUse(): IMetadataProvider

      Returns either the default Metadata provider or the one specified in the Provider property, if it was specified

      Returns IMetadataProvider

    • get RunQueryToUse(): IRunQueryProvider

      Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified

      Returns IRunQueryProvider

    • get RunReportToUse(): IRunReportProvider

      Returns either the default RunReport provider or the one specified in the Provider property, if it was specified

      Returns IRunReportProvider

    • get RunViewToUse(): IRunViewProvider

      Returns either the default RunView provider or the one specified in the Provider property, if it was specified

      Returns IRunViewProvider

    Methods