ADR-031: The module is an overview, the chat a route
Status: Accepted
Date: 2026-11-03
Amends: ADR-011: Floating Chat Panel Outside the Module iframe and ADR-024: The Chat as a Column Beside the Page Tree (where the chat is opened).
Context
The module nr_mcp_agent_chat rendered the whole chat, the same
<nr-chat-app> the panel from the top bar shows (ADR-011: Floating Chat Panel Outside the Module iframe) and the
column beside the page tree (ADR-024: The Chat as a Column Beside the Page Tree). A user who opened the module saw
a second copy of the chat and nothing about whether it worked for them, how it
was configured, or how it had been used. The module sat under Administration,
while nr_llm's modules sit in the shared section AI (nr_llm ADR-183).
Links built from the route (dashboard widgets, the missing alternative texts,
ChatStartUriBuilder) are the fallback for a middle click and for a user
without the panel: the chat reads conversation, skill, pageUid,
languageUid and altTextReference from the URL.
Decision
- The module's first page is an overview (
OverviewController): what the chat does and where it appears, whether it works for the viewer, the extension configuration (administrators), usage in a chosen period, and links into the chat and into nr_llm. - The full-page chat is the sub-route
nr_mcp_agent_chat.conversation(path/conversation), the shape ofmissingAltTexts. Every link builder targets it. A request to the first page that carries one of the chat's parameters is redirected there, so a link built before this change still opens the chat. - Readiness asks the rules the chat applies, not a copy of them:
ChatAccess(the toolbar item's access rule) andChatTaskResolver(Task → Configuration, active, usable by the actor), whichChatServicenow calls too. A state the page cannot measure is shown as not checked. A worker busy with a turn leaves no row, so "no idle worker" is a warning, not a failure: turns then start a process of their own. - Usage comes from the conversation table and from nr_llm's public
ExtensionUsageReaderInterface(nr_llm ADR-248) for the source extensionnr_mcp_agent. Administrators see the installation's figures, everyone else their own. No message content and no other user's conversation title is shown; failed conversations are counted per error code, never with their message. - The module moves to the section
netresearch_ai. Its identifier and path stay, so bookmarks keep working.
Consequences
maxConversationsPerUseris read nowhere; the overview does not list it, and the configuration documentation says so.- Agent runs, analytics and records stay in nr_llm's modules; the overview links to the ones the viewer may open.