Member Junction
    Preparing search index...

    Shared engine behind the conversations composer plugins (the agent-mentions / record-mentions / skill-commands ComposerTriggerProviders) and the mention-parsing consumers (message routing, saved-message badge rendering). Loads the permission-filtered agent / user / entity / query / skill caches once per session and serves ranked MentionSuggestion lists per trigger char.

    Framework-agnostic by construction: a BaseSingleton with no Angular, no DOM and no renderer in its graph. That is what lets the ClassFactory-instantiated trigger providers (which live outside Angular DI), the Angular components, and a React Native host all share ONE instance and one cache warm-up.

    It previously lived in @memberjunction/ng-conversations and was Angular-coupled only by location — no import from @angular/*, no decorator. A native host cannot depend on an Angular library, so the same permission filtering, skill narrowing and ranking would have had to be written a second time to reach mobile, and a second copy of a permission rule is the copy that drifts. Angular keeps a thin DI shim over this so its call sites are unchanged.

    Hierarchy (View Summary)

    Index

    Constructors

    Accessors

    Methods

    • The Global Object Store is a place to store global objects that need to be shared across the application. Depending on the execution environment, this could be the window object in a browser, or the global object in a node environment, or something else in other contexts. The key here is that in some cases static variables are not truly shared because it is possible that a given class might have copies of its code in multiple paths in a deployed application. This approach ensures that no matter how many code copies might exist, there is only one instance of the object in question by using the Global Object Store.

      Returns GlobalObjectStore | null

    • Get suggestions based on search query

      Parameters

      • query: string

        The search text after the trigger character

      • includeUsers: boolean = true

        Whether to include users in suggestions

      • trigger: string = '@'

        '@' (agents + users), '#' (entities + queries) or '/' (skills)

      • targetAgentId: string | null = null

        When the host knows which agent the message will go to (the '/' trigger only), skill suggestions are narrowed to what THAT agent accepts — AcceptsSkills + its MJ: AI Agent Skills grants — via AIEngineBase.GetSkillsForAgent. Without it (or for an agent not in the user's runnable set) the user's full runnable catalog is shown, as before, and the server's RequestedSkills guard is the backstop.

      • scope: MentionSuggestionScope | null = null

        Narrows the '@' list for one composer: the agents it may offer and the people it offers. Passed per call, never stored, because this engine is shared by every composer on the page. Omitted keeps today's list: every agent the user can run, and the current user.

      Returns MentionSuggestion[]

      Filtered and ranked suggestions

    • Returns the singleton instance of the class. If the instance does not exist, it is created and stored in the Global Object Store. If className is provided it will be used as part of the key in the Global Object Store, otherwise the actual class name will be used. NOTE: the class name used by default is the lowest level of the object hierarchy, so if you have a class that extends another class, the lowest level class name will be used.

      Type Parameters

      Parameters

      • this: new () => T
      • OptionalclassName: string

      Returns T