Commit 983b25e
feat: surface validation in fill_form response (#9341)
## Summary
- Wires `Binder.Binding` / `HasValidator` rejections into the
`fill_form` tool result so the LLM can self-correct in the same turn
instead of silently leaving the form in an invalid state. Validation
runs at `fill_form` execution time only, per the RFC's
validation-feedback flow.
- Per RFC, `fill_form` now mirrors `get_form_state`'s shape — returning
the full post-write `fields` block plus `rejected` — so value-change
listener cascades and other downstream shifts are visible without an
extra round-trip. (Breaking: the previous `success` / `written` keys are
gone; derive success from `rejected.isEmpty()`.)
- The schema is otherwise intentionally kept shape-only (type / format /
value / enum / queryable / array / items); JSR-303 and component-side
*constraints* reach the LLM through the validator feedback path on
`fill_form`. Surfacing those constraints proactively in `get_form_state`
(e.g. via `jakarta.validation.Validator` introspection, paired with
`BeanValidationBinder`) is deferred until later.
Closes
https://github.com/orgs/vaadin/projects/103/views/3?pane=issue&itemId=186557546
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 2b9c05f commit 983b25e
10 files changed
Lines changed: 858 additions & 176 deletions
File tree
- vaadin-ai-components-flow-parent/vaadin-ai-components-flow/src
- main/java/com/vaadin/flow/component/ai/form
- test/java/com/vaadin/flow/component/ai
- form
Lines changed: 37 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
48 | | - | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
49 | 53 | | |
50 | 54 | | |
51 | 55 | | |
| |||
83 | 87 | | |
84 | 88 | | |
85 | 89 | | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
90 | 99 | | |
91 | | - | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
92 | 120 | | |
93 | | - | |
| 121 | + | |
94 | 122 | | |
95 | 123 | | |
96 | 124 | | |
97 | | - | |
98 | | - | |
99 | | - | |
| 125 | + | |
| 126 | + | |
100 | 127 | | |
101 | 128 | | |
102 | 129 | | |
| |||
Lines changed: 81 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
83 | 93 | | |
84 | 94 | | |
85 | 95 | | |
| |||
492 | 502 | | |
493 | 503 | | |
494 | 504 | | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
500 | 510 | | |
501 | 511 | | |
502 | 512 | | |
503 | 513 | | |
504 | | - | |
505 | 514 | | |
506 | 515 | | |
| 516 | + | |
507 | 517 | | |
508 | 518 | | |
509 | | - | |
510 | | - | |
511 | | - | |
512 | | - | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
513 | 525 | | |
514 | 526 | | |
515 | | - | |
| 527 | + | |
516 | 528 | | |
517 | | - | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
518 | 534 | | |
519 | 535 | | |
520 | 536 | | |
521 | 537 | | |
522 | | - | |
| 538 | + | |
523 | 539 | | |
524 | 540 | | |
525 | 541 | | |
526 | 542 | | |
527 | 543 | | |
528 | 544 | | |
529 | | - | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
530 | 557 | | |
531 | 558 | | |
532 | 559 | | |
533 | 560 | | |
534 | 561 | | |
535 | | - | |
536 | 562 | | |
537 | 563 | | |
538 | 564 | | |
539 | 565 | | |
540 | 566 | | |
541 | 567 | | |
542 | | - | |
| 568 | + | |
543 | 569 | | |
| 570 | + | |
544 | 571 | | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
545 | 581 | | |
546 | 582 | | |
547 | 583 | | |
548 | | - | |
549 | | - | |
550 | | - | |
551 | | - | |
552 | | - | |
553 | | - | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
554 | 591 | | |
555 | | - | |
| 592 | + | |
556 | 593 | | |
557 | 594 | | |
558 | | - | |
559 | | - | |
560 | | - | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
561 | 609 | | |
562 | 610 | | |
563 | 611 | | |
564 | 612 | | |
| 613 | + | |
565 | 614 | | |
566 | 615 | | |
567 | 616 | | |
568 | 617 | | |
569 | 618 | | |
570 | 619 | | |
571 | | - | |
572 | | - | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
573 | 626 | | |
574 | 627 | | |
Lines changed: 25 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
96 | 93 | | |
97 | 94 | | |
98 | 95 | | |
| |||
293 | 290 | | |
294 | 291 | | |
295 | 292 | | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
316 | 311 | | |
317 | 312 | | |
318 | 313 | | |
| |||
Lines changed: 44 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
97 | 137 | | |
98 | 138 | | |
99 | 139 | | |
| |||
111 | 151 | | |
112 | 152 | | |
113 | 153 | | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
| 154 | + | |
| 155 | + | |
136 | 156 | | |
137 | | - | |
| 157 | + | |
| 158 | + | |
138 | 159 | | |
139 | 160 | | |
140 | 161 | | |
| |||
0 commit comments