Interface StudioAiChatElements
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringThe designer resolves aniconpath only against the declaring kit artifact, so the framework paths — including@StudioElement's ownunknownComponent.svgdefault — render as nothing from here.static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final String -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidvoidvoidvoidThe chat's own screen-reader announcements.voidThe composer's localization inside the chat'si18n— the same properties asaiMessageInput's own element, because it is the same bean.voidThe transcript's localization inside the chat'si18n— the same properties asaiMessageList's own element, because it is the same bean.voidvoidvoidUnlikeaiMessageInput'sprefix/suffix, these six names are the add-on's own, so there is no framework descriptor being overridden and no need for the caveat theaiMessageInputPrefixholder carries.voidvoidThe multi-line spelling of the system prompt, modelled onaiCodeBlock'scodeelement: present means it wins over the attribute.voidvoidThe declarative localization surface: onei18nelement per component, its properties mirroring the fields of that component's own*I18nbean.voidThe code blocks rendered inside messages:codeBlockis a field ofAiMessageListI18n, of the code block's own i18n type, so it nests under the message list's element — the standalone one and the one inside the chat's alike — rather than flattening four more attributes onto either.voidTheactionrow inside either per-role group.voidvoidLikethinkingIndicator,header/footerare slots this add-on invents onaiMessageInput, so there is no framework descriptor to override and no need for the caveat theprefix/suffixholders carry.voidvoidUnliketooltip, the framework declaresprefix/suffixagainst theHasPrefix/HasSuffixinterfaces, which this component implements — so its descriptors already match and would write the elements unprefixed, invalid against this add-on's schema, whose locally declared elements are qualified.voidvoidThe framework's owntooltipelement enumerates its hosts by FQN and cannot know this add-on's components, so the element is re-declared here foraiMessageInput.voidCarries anidentifierso the nestedcodeBlockelement can target it without naming a class — the same mechanismthinkingStageuses to reach its container.voidA slot this add-on invents, so there is no framework descriptor to override — one entry is the whole story.voidvoidThe add-on's first container elements.voidThe two per-role action containers, declared as element groups rather than@StudioActionsGroup.
-
Field Details
-
AI_MESSAGE_LIST_FQN
- See Also:
-
AI_CHAT_FQN
- See Also:
-
I18N_ELEMENT
- See Also:
-
ELEMENT_ICON
The designer resolves aniconpath only against the declaring kit artifact, so the framework paths — including@StudioElement's ownunknownComponent.svgdefault — render as nothing from here. Every element therefore names an icon shipped by this module:ELEMENT_ICONis this add-on's copy of that generic fallback, used wherever the framework has no matching element icon to copy.- See Also:
-
TOOLTIP_ICON
- See Also:
-
MESSAGE_LIST_I18N_ID
- See Also:
-
CHAT_I18N_ID
- See Also:
-
CHAT_MESSAGE_LIST_I18N_ID
- See Also:
-
THINKING_STAGES_GROUP_ID
- See Also:
-
USER_ACTIONS_GROUP_ID
- See Also:
-
ASSISTANT_ACTIONS_GROUP_ID
- See Also:
-
-
Method Details
-
aiCodeBlockCode
void aiCodeBlockCode() -
aiMessageInputTooltip
void aiMessageInputTooltip()The framework's owntooltipelement enumerates its hosts by FQN and cannot know this add-on's components, so the element is re-declared here foraiMessageInput. -
aiMessageInputPrefix
void aiMessageInputPrefix()Unliketooltip, the framework declaresprefix/suffixagainst theHasPrefix/HasSuffixinterfaces, which this component implements — so its descriptors already match and would write the elements unprefixed, invalid against this add-on's schema, whose locally declared elements are qualified. These entries are meant to override them by being more specific, the mechanism the@StudioElementsGroupjavadoc documents. For a plain element that was an inference; a live Studio pass has since confirmed it — the designer writes<aichat:prefix>and<aichat:suffix>, and the view loads. -
aiMessageInputSuffix
void aiMessageInputSuffix() -
aiMessageInputHeader
void aiMessageInputHeader()LikethinkingIndicator,header/footerare slots this add-on invents onaiMessageInput, so there is no framework descriptor to override and no need for the caveat theprefix/suffixholders carry. -
aiThinkingIndicator
void aiThinkingIndicator()A slot this add-on invents, so there is no framework descriptor to override — one entry is the whole story. An empty element is meaningful (it clears the built-in indicator), which is why the child is optional rather than required. -
aiThinkingStages
void aiThinkingStages()The add-on's first container elements. Serves two hosts (AI_MESSAGE_LIST_FQNandAI_CHAT_FQN) under a singleidentifier, so children that target it (such asaiThinkingStage) reach both without being re-declared per component. The nesting is not observable from a compile — verify it in a live Studio pass. -
aiThinkingStage
void aiThinkingStage() -
aiUserActions
void aiUserActions()The two per-role action containers, declared as element groups rather than@StudioActionsGroup. The designer recognises only one actions group per host: with both declared that way,userActionsresolved andassistantActionsrendered as an unrecognisedaichat:assistantActions, onAiMessageListandAiChatalike. Nothing in the framework or the other premium add-ons carries two on one host, and@StudioActionsGroup'sxmlElementdefault of"actions"says the construct was meant to be the single one per component.An element group has no such limit —
thinkingStagesalready serves both hosts — so both roles are reachable this way, at the cost of the action-type picker: theactionrow is an ordinary element (seeaiMessageActionElement()) whosetypeis chosen from a property, not from a list of registered action types. The schema, the loaders and the runtime are untouched by this choice; it is a designer-side decision only.- See Also:
-
aiAssistantActions
void aiAssistantActions() -
aiMessageActionElement
void aiMessageActionElement()Theactionrow inside either per-role group. An actions group supplies this row itself, from the@StudioActiontypes registered against it; an element group does not, so the element is declared here — seeaiUserActions()for why the groups are element groups in the first place.The properties mirror
aiMessageActioninui.xsdone-for-one, which is the point: the fiveActionproperties whose setters throw stay out, rather than being offered and then refused at load.typeisOPTIONSand notENUMERATIONbecause the schema's ownaiMessageActionTypeEnumis a union — an application's own action type has to stay valid. -
aiChatActions
void aiChatActions() -
aiChatSystemPrompt
void aiChatSystemPrompt()The multi-line spelling of the system prompt, modelled onaiCodeBlock'scodeelement: present means it wins over the attribute. -
aiChatInputPrefix
void aiChatInputPrefix()UnlikeaiMessageInput'sprefix/suffix, these six names are the add-on's own, so there is no framework descriptor being overridden and no need for the caveat theaiMessageInputPrefixholder carries. -
aiChatInputSuffix
void aiChatInputSuffix() -
aiChatInputHeader
void aiChatInputHeader() -
aiChatEmptyStateHeader
void aiChatEmptyStateHeader() -
aiCodeBlockI18n
void aiCodeBlockI18n()The declarative localization surface: onei18nelement per component, its properties mirroring the fields of that component's own*I18nbean. All four share the element name and this add-on'sxmlns, and are told apart bytargetalone — four additions, not three overrides of the first.The beans nest (the list's holds the code block's, the chat's holds the input's and the list's), so the elements nest the same way, each reaching its container through an
identifier. Every property is aLOCALIZED_STRING, so amsg://key resolves in all three legs of the contract. -
aiMessageInputI18n
void aiMessageInputI18n() -
aiMessageListI18n
void aiMessageListI18n()Carries anidentifierso the nestedcodeBlockelement can target it without naming a class — the same mechanismthinkingStageuses to reach its container. -
aiChatI18n
void aiChatI18n()The chat's own screen-reader announcements. Everything the composer and the transcript can say lives on the nestedmessageInputandmessageListelements below, of those components' own types —AiChatI18nholds their beans rather than restating their fields. Carries anidentifierso both can target it without naming a class. -
aiChatI18nMessageInput
void aiChatI18nMessageInput()The composer's localization inside the chat'si18n— the same properties asaiMessageInput's own element, because it is the same bean. -
aiChatI18nMessageList
void aiChatI18nMessageList()The transcript's localization inside the chat'si18n— the same properties asaiMessageList's own element, because it is the same bean. Carries its ownidentifierso the nestedcodeBlockreaches it here too. -
aiI18nCodeBlock
void aiI18nCodeBlock()The code blocks rendered inside messages:codeBlockis a field ofAiMessageListI18n, of the code block's own i18n type, so it nests under the message list's element — the standalone one and the one inside the chat's alike — rather than flattening four more attributes onto either. Its four properties are the code block's, because it is the same bean.
-