Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This adds the Verdure example app to the examples directory. It includes both a Flutter client and a Python server that acts as a landscape client intake app which uses GenUI to render the intake forms that are appropriate for the given uploaded photo.
Summary of Changes
This pull request delivers a significant new example application, Verdure, demonstrating a full-stack AI-powered landscape design workflow. It integrates a Flutter client with a Python A2A server, showcasing dynamic UI generation via GenUI. The example covers user interaction from photo upload and questionnaire completion to design presentation and order confirmation. Alongside this new feature, several critical issues in core UI and validation libraries were identified and addressed, ensuring the stability and correctness of the underlying frameworks.
Highlights
examples/verdure/client) is a comprehensive application built with Flutter, Riverpod for state management, and GoRouter for navigation. It integratesflutter_genuiandflutter_genui_a2uito consume UI definitions from the Python backend, enabling a dynamic user experience for photo uploads, questionnaires, design presentations, shopping cart, and order confirmation.examples/verdure/server) acts as the landscape client intake app, utilizing thea2a-sdkand a customa2ui_extextension. It processes user queries, including image uploads, and generates A2UI JSON responses to drive the Flutter client's UI. It also includes a tool to fetch landscape options and handles session management.breakstatements in switch cases withinpackages/flutter_genuiandpackages/json_schema_builderwere addressed. These omissions caused unintended fall-through logic, leading to incorrect UI rendering and data validation behavior.packages/flutter_genui_a2uidependency was updated to usea2a: ^3.1.0. Additionally, the root.gitignorewas modified to include Python-specific ignore patterns and adjust existing Flutter/Firebase patterns, and the mainpubspec.yamlwas updated to include the new Verdure client in the workspace.Changelog
**/prefix, potentially restricting their scope.__pycache__/,*.py[cod],*.egg-info/,.pytest_cache/,.coverage,htmlcov/)..gitignorerules for the Flutter client..gitignorerules for the Flutter client.NSAppTransportSecurityfor local networking..gitignorerules for the Flutter client.MyApplicationfor Linux, handling GTK application setup.MyApplicationon Linux..gitignorerules for the Flutter client.NSAppTransportSecurityfor local networking.pubspec.yamlfor the Verdure Flutter client, defining dependencies and assets.pyproject.tomlfor the Python A2UI extension.a2uiExtensionand_a2uiExecutor.pyproject.tomlfor the Verdure Python server, configuring the UV workspace.__init__.pyfor the Verdure server package.LandscapeAgentimplementation, including agent instructions, UI validation logic, and integration with the ADK runner.LandscapeAgentExecutorto handle incoming requests, parse UI events, process image uploads, and stream responses from theLandscapeAgent.pyproject.tomlfor the Verdure Python server package.LandscapeAgent, including aget_landscape_optionsfunction.breakstatement from theDataModelUpdatecase, causing unintended fall-through toSurfaceDeletion.a2adependency from a git reference to a published version (^3.1.0).breakstatements fromJsonType.stringandJsonType.num/JsonType.intcases, causing unintended fall-through to subsequent validation logic.examples/verdure/clientto the workspace definition.