OptionalchatOptionalconversationProtecteddestroy$ProtectednavigationTab ID for query param notification scoping. Set by resource wrappers that render child dashboards, so the child knows which tab it belongs to. If not set, falls back to Data.Configuration.tabId.
A pending request to open the REALTIME SESSION REVIEW overlay (deep link /
cross-resource nav with realtimeSessionId, e.g. the AI Agent Session form's
"open session" pill). Applied once after the chat area renders — this is also the
reference example for invoking an EXISTING realtime session programmatically:
await chatArea.OpenRealtimeSessionReview(agentSessionId) (a NEW session starts
through the composer's phone button / RealtimeSessionService.StartRealtimeSession).
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.
StaticɵdirStaticɵfacGet the environment ID from configuration or use default
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified
Returns either the default RunReport provider or the one specified in the Provider property, if it was specified
Returns either the default RunView provider or the one specified in the Provider property, if it was specified
Collapse sidebar
Expand sidebar (pinned - stays open until unpinned)
ProtectedGetRead current query params from tab configuration. Use in initDashboard() / ngOnInit() to get initial URL state.
Get this component's tab ID. Checks ParentTabId input first (set by resource wrappers for child dashboards), then falls back to Data.Configuration.tabId.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
ProtectedNotifyAsk the host shell to close/dismiss this resource (typically: close the tab). Called by subclasses that hosted a form that emitted a 'dismiss' navigation event — most often, a brand-new record where the user clicked Discard. The record was never saved, the form is empty, and leaving it open serves no purpose. The tab-container listens for this and closes the workspace tab.
ProtectedNotifyCall this to notify the tab system that the resource's display name has changed. The tab container will update the tab title and browser title accordingly.
ProtectedNotifyProtectedNotifyHandle navigation request from artifact viewer panel within the chat area. Converts the link event to a generic navigation request and uses NavigationService.
Handle conversation created from chat area (after first message in new conversation). The event now includes pending message and attachments for atomic state update.
Handle conversation deletion from the list. If the deleted conversation was selected, navigate to the first remaining conversation.
Handle conversation rename event
Handle conversation selection from the list
Handle clicks outside the sidebar to auto-collapse when unpinned
Handle navigation request from artifact viewer plugins. Opens the target nav item (switching apps if needed) then applies query params to the URL.
Handle new conversation request from the list
Handle entity record open request from chat area (from React component grids). Uses NavigationService to open the record in a new tab.
Handle pending artifact consumed event
Handle pending message consumed event
Handle pending message requested event (from empty state creating conversation).
ProtectedOnReact to query param changes that arrive AFTER initial load — e.g. clicking a Home pin for a different conversation, or browser back/forward — when this tab already exists and is simply re-focused (so ngOnInit / applyConfigurationParams does NOT run again). Without this, every pin would land on whatever conversation was already open instead of the pinned one.
Handle refresh request from the conversation list. After the list refreshes, also reload messages in the active chat area so any new agent responses are visible without a full page reload.
Handle sidebar resize start
Handle thread closed event
Handle thread opened event
Pin sidebar - keep it open after selection
ProtectedRefreshMarks this component's view (and its ancestors) as needing change detection and schedules a tick — the reliable way for a resource component to re-render after updating state from async work (RunView/RunQuery continuations, timers, websocket pushes, RxJS subscriptions).
WHY THIS EXISTS: the Explorer shell hosts resource components dynamically — createComponent()
ApplicationRef.attachView() — because tab content mounts into Golden Layout / cached DOM
containers, not into an Angular template. Since Angular 18's change-detection scheduler
rework (Explorer is on Angular 21), ApplicationRef.tick() only refreshes attached views
that are FLAGGED dirty; a root-level attached view whose component mutates plain fields from
an async continuation is never flagged, so the view silently never re-renders — even though
the component uses default (non-OnPush) change detection (issue #3106).The framework calls this automatically from NotifyLoadStarted() / NotifyLoadComplete(), so the standard load lifecycle re-renders without any subclass action. Call it yourself after any LATER async state change that must reach the DOM outside those signals.
ProtectedResourceUnpin sidebar - will auto-collapse on next selection
ProtectedUpdatePush query param changes to the URL. Creates a browser history entry. Safe to call during OnQueryParamsChanged — auto-suppressed to prevent loops.
Chat Conversations Resource - wraps the conversation chat area for tab-based display Extends BaseResourceComponent to work with the resource type system Displays conversation list sidebar + active conversation chat interface Designed to work with the tab system for multi-tab conversation management
This component manages its own selection state locally, following the encapsulation pattern:
Output