Structure the schema and rendering code by widget #4
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
Update the structure of the code to centralize the definition of each Gen UI widget (know as a CatalogItem in the code), so that we can easily add new CatalogItems.
Overview of new structure
CatalogItem: represent a single widget that the LLM can create and manipulateCatalog: represents a specific set of CatalogItems which can be exposed to the LLMDynamicUi:WidgetTreeLlmAdaptor: represents a way that the LLM can output and manipulate widget trees for a specific Catalog. E.g. the current protocol which supports CRUD operations. This could be swapped out for other protocol styles. This currently just includes the schema part of this, but it'd be nice to later combine this with the code that handles the outputs that match this schema.CatalogItem API
This is intended to just include all the necessary logic to define and render a single widget.
Existing Catalog
I haven't migrated every catalog item, because I want to get feedback on the API before doing so. It's easy to migrate the rest using Gemini CLI!
Future ideas