You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Various improvements to AI integration features in Flow:
Features for making AI-edits to form fields reviewable and revertable
API for intercepting and modifying a prompt before it's sent to the LLM
Optional background thread execution of LLM turns to avoid UI freezing (when used without streaming)
Built-in style variants to make MessageList look more like typical human-chat and AI-chat UIs.
Other QoL improvements such as metadata with token usage and finish reason
Tier
Mixed. The Form Filler and the other built-in controllers are commercial (vaadin-ai-extensions-flow). The orchestrator, the request interceptor, background execution, and the message component styles are free (vaadin-ai-core-flow and the web components).
License
Vaadin Commercial License and Service Terms for vaadin-ai-extensions-flow. Apache 2.0 for the rest.
Motivation
Background
The previous release shipped the AI Form Filler (FormAIController) alongside the Grid and Chart controllers, behind the com.vaadin.experimental.aiComponents preview flag. This update also splits that module into a free and a commercial part. The rest of the scope comes from three places:
Planned work: source tracking with a confidence level, the prompt validation hook, and the chat styling design for the message components.
DX test findings on the Form Filler: the highlight should be automatic, revertable, and customizable, the form should show that the AI is working, and the value change listener should report one field at a time through an event type. The field marker replaces the highlight.
Reports from the preview community: the turn holding the session lock, the empty tool parameter schema, and the generic tool error message.
Problem
A user cannot tell which values the AI wrote, why, or how to undo them. The application had to wire up field highlighting itself, and the highlight neither explained the fill nor offered a way to revert the value.
A reviewer cannot check a filled value without opening the source document again.
An application has no place to check, change, or reject a prompt before the orchestrator acts on it.
Without streaming, the turn runs on the thread that starts it and holds the session lock. Nothing reaches the browser until the turn ends, so the application looks frozen and a progress indicator set before the call appears only when the turn is over.
Built-in tools that take no arguments declare either no parameter schema or one with no properties. Models disagree on what to send, and some vendors reject the request, which loses the turn.
The built-in controller tools return a fixed message for anything the application throws, so the model only learns that something failed and retries the same call. A tool the application registers itself already has its message relayed.
Building a chat from Message List, Message, and Message Input needs a lot of custom CSS.
Solution
Per-field source tracking and a revertable marker in the Form Filler, a request interceptor and opt-in background execution in the orchestrator, a parameter schema and a relayable exception for the built-in tools, and chat styling for the message components. The module also splits into a free core and a commercial extensions part.
Requirements
Form Filler
Mark every field the AI changed with an AI field marker: a badge with a popover that explains the fill and a control that puts back the previous value. On by default, and can be turned off or localized.
Opt-in source tracking: for each value it fills, the model reports the snippets it read, where each snippet is in the document, and how sure it was. Plain Java API, so an application can render a source in any UI, store it for an audit trail, and restore it after a reload.
Request interceptor that runs before the orchestrator acts on a prompt, whether it came from a connected input component or from code. It can check or rewrite the text, replace the attachments, reject the prompt with or without a message to the user, and postpone it so long work runs on the application's own threads.
Document the interceptor and background execution, including the threading rules.
Response listener should provide a metadata with token usage and finish reason (as a String)
Built-in tools
Declare at least one property in every built-in tool's parameter schema, including the tools that take no arguments.
Add a public exception type an application can throw from a built-in controller's callback to pass its message to the model. The fixed message stays the default.
Message components
Chat styling for Message List, Message, Message Input, and Upload File List: message width and bubble variants, a typing indicator, one-to-one and assistant message variants, and extra slots around the input.
Split the components into a free vaadin-ai-core-flow module and a commercial vaadin-ai-extensions-flow module holding the built-in controllers, with a development-mode license check in each controller.
Source tracking costs extra output tokens on every fill and holds document snippets in the session. It is off by default for that reason.
Limitations
Background execution and a postponed prompt both need automatic server push or polling. Manual push mode is not enough, since the orchestrator never calls ui.push() itself.
A source says where a snippet sits inside a document but not which document, so source tracking supports one attachment per prompt. With several, there is no way to tell which one a location points into.
Marks and field value change events land at the end of a turn, not as each field is filled.
Breaking changes
showFieldHighlight and hideFieldHighlight are removed from FormAIController, together with the vaadin-field-highlighter-flow module dependency. The marker itself still ships from the @vaadin/field-highlighter npm package. Fields are no longer set read-only on the server during a fill turn.
addFieldValueChangedListener is replaced by addFieldValueChangeListener, which fires once per changed field and takes an event instead of a list of changes.
Changes to the DOM of Message List, Message, Message Input, and Upload File List may break custom styling.
The vaadin-ai-components-flow artifact is replaced by vaadin-ai-core-flow and vaadin-ai-extensions-flow.
The built-in Grid, Chart, and Form controllers now need a commercial subscription, checked in development mode.
The components stay behind the preview flag, so more breaking changes can land in any version.
Out of scope
Source tracking for the Grid and Chart controllers.
Showing the source location inside the original document.
Wiring the typing indicator into the orchestrator. Only the component styling is in scope.
Low-level vendor-specific API on LLMProvider, including direct access to the vendor's own client.
More than one controller per orchestrator.
A shorter path from an UploadHandler to an orchestrator attachment. Raised in the DX tests, tracked as a separate backlog item.
Estimated (estimate entered into Estimate custom field)
Product Manager sign-off
Engineering Manager sign-off
Pre-release checklist
Documented (link to documentation provided in sub-issue or comment)
UX/DX tests conducted and blockers addressed
Approved for release by Product Manager
Security review
The interceptor is where an application can check or mask prompt content before it reaches the LLM. The application decides which files reach the model. A tracked source is the model's own account of what it read in them, not a checked quote.
Description
Various improvements to AI integration features in Flow:
Tier
Mixed. The Form Filler and the other built-in controllers are commercial (
vaadin-ai-extensions-flow). The orchestrator, the request interceptor, background execution, and the message component styles are free (vaadin-ai-core-flowand the web components).License
Vaadin Commercial License and Service Terms for
vaadin-ai-extensions-flow. Apache 2.0 for the rest.Motivation
Background
The previous release shipped the AI Form Filler (
FormAIController) alongside the Grid and Chart controllers, behind thecom.vaadin.experimental.aiComponentspreview flag. This update also splits that module into a free and a commercial part. The rest of the scope comes from three places:Problem
Solution
Per-field source tracking and a revertable marker in the Form Filler, a request interceptor and opt-in background execution in the orchestrator, a parameter schema and a relayable exception for the built-in tools, and chat styling for the message components. The module also splits into a free core and a commercial extensions part.
Requirements
Form Filler
Orchestrator
String)Built-in tools
Message components
Packaging
vaadin-ai-core-flowmodule and a commercialvaadin-ai-extensions-flowmodule holding the built-in controllers, with a development-mode license check in each controller.Risks, limitations and breaking changes
Risks
Source tracking costs extra output tokens on every fill and holds document snippets in the session. It is off by default for that reason.
Limitations
Background execution and a postponed prompt both need automatic server push or polling. Manual push mode is not enough, since the orchestrator never calls
ui.push()itself.A source says where a snippet sits inside a document but not which document, so source tracking supports one attachment per prompt. With several, there is no way to tell which one a location points into.
Marks and field value change events land at the end of a turn, not as each field is filled.
Breaking changes
showFieldHighlightandhideFieldHighlightare removed fromFormAIController, together with thevaadin-field-highlighter-flowmodule dependency. The marker itself still ships from the@vaadin/field-highlighternpm package. Fields are no longer set read-only on the server during a fill turn.addFieldValueChangedListeneris replaced byaddFieldValueChangeListener, which fires once per changed field and takes an event instead of a list of changes.vaadin-ai-components-flowartifact is replaced byvaadin-ai-core-flowandvaadin-ai-extensions-flow.Out of scope
LLMProvider, including direct access to the vendor's own client.UploadHandlerto an orchestrator attachment. Raised in the DX tests, tracked as a separate backlog item.Materials
FormAIController.Metrics
No response
Pre-implementation checklist
Pre-release checklist
Security review
The interceptor is where an application can check or mask prompt content before it reaches the LLM. The application decides which files reach the model. A tracked source is the model's own account of what it read in them, not a checked quote.