-
Notifications
You must be signed in to change notification settings - Fork 30
fix: (CDK) (design) correct field titles/orders in declarative_component_schema.yaml
#480
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: (CDK) (design) correct field titles/orders in declarative_component_schema.yaml
#480
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR reorders fields and updates titles in the declarative_component_schema to improve the auto-generated UI for the Builder. Key changes include updating field titles, reordering anyOf options, and removing duplicate or inconsistent field definitions.
Comments suppressed due to low confidence (3)
airbyte_cdk/sources/declarative/declarative_component_schema.yaml:2004
- The $ref formatting for QueryProperties has been corrected; please ensure this change aligns with expected reference syntax in the rest of the schema.
- - $ref: "#/definitions/QueryProperties"
airbyte_cdk/sources/declarative/declarative_component_schema.yaml:3170
- Removal of the DpathExtractor reference in the extractor's anyOf list removes a fallback option; please confirm that this change is intentional.
- - "$ref": "#/definitions/DpathExtractor"
airbyte_cdk/sources/declarative/declarative_component_schema.yaml:2000
- [nitpick] Consider standardizing the naming convention of title values across similar schema fields to maintain a uniform and clear UI experience.
title: Key/Value Pairs
📝 WalkthroughWalkthroughThe schema file for declarative components was updated to enhance clarity and structure. Titles and descriptions were added or refined for various fields to provide better context. The order of properties and enum values was adjusted in several components, and deprecated components were explicitly marked. New properties such as Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant DeclarativeComponentSchema
participant ModelToComponentFactory
User ->> DeclarativeComponentSchema: Define or update component configuration
DeclarativeComponentSchema -->> User: Present enhanced titles, descriptions, and property order
User ->> DeclarativeComponentSchema: Use new error_handler or decoder properties (if applicable)
DeclarativeComponentSchema -->> User: Validate and document schema with updated metadata
User ->> ModelToComponentFactory: Create RecordSelector with optional fields possibly None
ModelToComponentFactory ->> ModelToComponentFactory: Set defaults for transform_before_filtering and schema_normalization if None
ModelToComponentFactory -->> User: Return fully initialized RecordSelector component
Would you like me to generate a more detailed diagram focusing on the new Possibly related PRs
Suggested labels
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (4)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
airbyte_cdk/sources/declarative/declarative_component_schema.yaml (3)
1678-1685: Reorder paginator strategies and name options
SwitchingPageIncrement/OffsetIncrementorder and adding titles for page size/token injection options will aid discoverability. Have we confirmed this order aligns with the most common use cases? wdyt?Also applies to: 1686-1690
3169-3172: Enhance RecordSelector extractor and filtering options
Reordering built-in vs custom extractor/filter anyOf and adding thetransform_before_filteringtitle will improve UI grouping. Could we also add a short example for this new field? wdyt?Also applies to: 3175-3178, 3185-3188
3298-3298: Mark LegacySessionTokenAuthenticator as deprecated
Flagging this authenticator as deprecated will prompt users to migrate toSessionTokenAuthenticator. Should we add a link to the migration guide in the docs? wdyt?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
airbyte_cdk/sources/declarative/declarative_component_schema.yaml(27 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (7)
- GitHub Check: Check: 'source-pokeapi' (skip=false)
- GitHub Check: Check: 'source-amplitude' (skip=false)
- GitHub Check: Check: 'source-shopify' (skip=false)
- GitHub Check: Check: 'source-hardcoded-records' (skip=false)
- GitHub Check: Pytest (All, Python 3.11, Ubuntu)
- GitHub Check: Pytest (All, Python 3.10, Ubuntu)
- GitHub Check: Pytest (Fast)
🔇 Additional comments (11)
airbyte_cdk/sources/declarative/declarative_component_schema.yaml (11)
441-446: Add descriptive titles for backoff strategies
Titles for both numeric and interpolated backoff time values improve clarity in the Builder UI—great addition! wdyt?
1062-1074: Enhance JWT authenticator field descriptions
Adding titles forsecret_key,base64_encode_secret_key, andalgorithmaligns with other components and will improve UX. Have we ensured consistency with other authenticator docs? wdyt?
1397-1404: Refine DeclarativeStream properties and ordering
The addition of thenamefield, the reorderedretrieveranyOf list, and inclusion ofCustomIncrementalSyncandDynamicSchemaLoadermake the stream schema more intuitive. Can we verify in the Builder UI that these appear in the intended order? wdyt?Also applies to: 1408-1411, 1417-1429
2238-2238: Allow additional schema properties
EnablingadditionalPropertiesonInlineSchemaLoader.schemais necessary for flexibility—looks good. wdyt?
1926-1939: Enhance HttpRequester authentication and error handling
Great to see theauthenticatorand newerror_handleranyOf lists reordered and expanded, plus clearer titles on headers, parameters, and body types. Can we test a few connector definitions in the Builder UI to confirm these changes render correctly? wdyt?Also applies to: 1948-1948, 1964-1964, 1982-1987, 2000-2007, 2017-2023
2893-2896: Add titles for pagination increments
Introducing titles to bothOffsetIncrement.page_sizeandPageIncrement.page_sizeoptions clarifies intent and matches the Backoff naming. wdyt?Also applies to: 2927-2930
3023-3031: Clarify composite key options
The titles for single and composite primary key variants guide users in selecting the right schema type—nice touch. wdyt?
3140-3144: Add title to record filter condition
Labeling theconditionfield ensures users understand that it controls which records are filtered out. Good catch. wdyt?
3198-3200: Add examples for schema normalization
Including examples for theSchemaNormalizationenum enhances discoverability of theDefaultvsNoneoptions—nice. wdyt?
3377-3383: Add titles for StateDelegatingStream fields
Titles forfull_refresh_streamandincremental_streamimprove clarity on their roles depending on state presence. wdyt?
3388-3394: Streamline SimpleRetriever component metadata
Great addition of the retrievertitle, plus inclusion ofdecoderand custom requester/partition router options. Could we double‑check the placement of theignore_stream_slicer_parameters_on_paginated_requestsdescription remains clear in the UI? wdyt?Also applies to: 3403-3404, 3405-3415, 3436-3444
declarative_component_schema.yaml
…clarative-component-schema
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
airbyte_cdk/sources/declarative/models/declarative_component_schema.py (2)
2230-2297: Potential over‑restriction of request option value types
request_body_data,request_headers, andrequest_parametershave been narrowed to acceptDict[str, str](or limited unions). The runtime code inHttpRequesterlater castsstr(v)but happily handles non‑string values today (e.g., ints, bools). Would relaxing the annotation back toDict[str, Any]preserve flexibility for users who pass numbers or nested structures?- request_body_data: Optional[Union[Dict[str, str], str]] = Field( + request_body_data: Optional[Union[Dict[str, Any], str]] = Field(Same for
request_headers/request_parameters. Thoughts?
2426-2446: NewdecoderonSimpleRetriever– check docs syncThe optional
decoderproperty is now exposed in the schema (💯). Could we update the Connector Builder docs/examples to show how to use it so builders discover the feature, wdyt?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
airbyte_cdk/sources/declarative/declarative_component_schema.yaml(27 hunks)airbyte_cdk/sources/declarative/models/declarative_component_schema.py(16 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
airbyte_cdk/sources/declarative/models/declarative_component_schema.py (8)
airbyte_cdk/sources/declarative/requesters/request_option.py (1)
RequestOption(25-117)airbyte_cdk/sources/declarative/extractors/record_filter.py (1)
RecordFilter(17-49)airbyte_cdk/sources/declarative/extractors/record_selector.py (3)
name(57-65)name(68-70)RecordSelector(25-170)airbyte_cdk/sources/declarative/retrievers/simple_retriever.py (5)
name(107-115)name(118-120)SimpleRetriever(55-624)primary_key(291-293)primary_key(296-298)airbyte_cdk/sources/declarative/declarative_stream.py (5)
name(93-97)name(100-102)primary_key(70-71)primary_key(74-76)DeclarativeStream(32-241)airbyte_cdk/sources/declarative/retrievers/async_retriever.py (1)
AsyncRetriever(19-124)airbyte_cdk/sources/declarative/auth/jwt.py (1)
JwtAuthenticator(41-197)airbyte_cdk/sources/declarative/requesters/http_requester.py (1)
HttpRequester(38-433)
⏰ Context from checks skipped due to timeout of 90000ms (6)
- GitHub Check: Check: 'source-pokeapi' (skip=false)
- GitHub Check: Check: 'source-amplitude' (skip=false)
- GitHub Check: Check: 'source-shopify' (skip=false)
- GitHub Check: Check: 'source-hardcoded-records' (skip=false)
- GitHub Check: Pytest (All, Python 3.11, Ubuntu)
- GitHub Check: Pytest (All, Python 3.10, Ubuntu)
🔇 Additional comments (36)
airbyte_cdk/sources/declarative/declarative_component_schema.yaml (29)
443-445: Descriptive titles improveConstantBackoffStrategyclarity
Great addition of explicit titles for the numeric and interpolated backoff intervals—this will surface more informative labels in the Builder UI, wdyt?
1062-1076: Add missing metadata forJwtAuthenticatorfields
Includingtitleattributes forsecret_key,base64_encode_secret_key, andalgorithmaligns this authenticator with the rest of the schema and ensures the UI shows friendly labels, wdyt?
1397-1403: Introducenameproperty onDeclarativeStream
Adding a top‑levelnamefield makes stream identification more explicit in the UI—excellent UX enhancement, wdyt?
1408-1409: PrioritizeSimpleRetrieverinretrieverunion
Reordering to surface the built‑inSimpleRetrieverfirst will guide users toward the common case—nice touch, wdyt?
1417-1418: ExposeCustomIncrementalSyncinincremental_syncunion
Including the custom incremental sync option empowers connectors with bespoke logic—looks good, wdyt?
1428-1429: AddDynamicSchemaLoadertoschema_loaderunion
Reordering to include runtime schema loading aligns the schema with the Python model—great for advanced use cases, wdyt?
1823-1825: Add metadata forSessionTokenAuthenticator
Providingtitleanddescriptionfor this authenticator enhances discoverability in the Builder UI—nice, wdyt?
1962-1975: Reorderauthenticatoroptions underHttpRequester
Aligning the union order to list core methods (NoAuth, ApiKey, Basic, etc.) before custom/deprecated strategies improves UX consistency, wdyt?
1983-1983: Allow string shorthand forrequest_body_data
Supportingtype: stringalongside object payloads gives users concise syntax for simple cases, wdyt?
2000-2001: Allow string shorthand forrequest_body_json
Enablingtype: stringfor JSON bodies improves flexibility in defining payload templates, wdyt?
2018-2023: Enhancerequest_headersunion with titles and string case
Adding a title for key/value pairs and allowing a raw string form makes header definitions clearer and more succinct, wdyt?
2036-2042: Extendrequest_parametersunion with QueryProperties and string form
IncludingQueryPropertiesand shorthand string support diversifies parameter definitions for common patterns, wdyt?
2053-2059: Expanderror_handlerunion with Composite and Custom handlers
SurfacingCompositeErrorHandlerandCustomErrorHandlerenriches the retry logic options available to users, wdyt?
2274-2275: Enable additional properties inInlineSchemaLoader.schema
Allowing free‐form schema objects supports more complex inline definitions—this matches the Python model change, wdyt?
2956-2958: Add titles toOffsetIncrementpage_size options
Descriptive titles for numeric vs. interpolated page size values will make the UI labels self‑explanatory, wdyt?
2990-2992: Add titles toPageIncrementpage_size options
Similarly enhancing the titles in the page increment strategy clarifies the choice between static and dynamic sizes, wdyt?
3086-3093: Add titles toPrimaryKeyunion variants
Labelling single key, composite key, and nested composite key variants improves user guidance when selecting a primary key format, wdyt?
3360-3360: MarkLegacySessionTokenAuthenticatoras deprecated
Deprecation flag is critical to steer users toward the modernSessionTokenAuthenticatorcomponent, wdyt?
3419-3419: AddtitleforStateDelegatingStream
Including a title makes this experimental component more discoverable in the UI, wdyt?
3450-3450: AddtitleforSimpleRetriever
Labeling the synchronous retriever improves consistency with other components, wdyt?
3464-3466: IncludeCustomRequesterinSimpleRetriever.requesterunion
Supporting custom requesters alongside built‑in HTTP ones offers extensibility for edge cases, wdyt?
3467-3478: Adddecodercomponent toSimpleRetriever
Exposing decoder options directly in the retriever consolidates response processing settings, wdyt?
3479-3481: Refactorrecord_selectorreference to core definition
Switching to a direct$refforRecordSelectorcentralizes record extraction logic, wdyt?
3498-3505: IncludeCustomPartitionRouterinSimpleRetriever.partition_router
Allowing custom partition routers alongside built‑in ones maximizes flexibility for complex pagination scenarios, wdyt?
3598-3608: AllowCustomRecordExtractorin AsyncRetriever extractors
Adding the custom extractor option to status, target, and download phases harmonizes with the rest of the schema’s extensibility model, wdyt?
3613-3651: SupportCustomRequesteracross AsyncRetriever request phases
Enabling custom requesters for creation, polling, download, abort, and delete steps ensures full extensibility of asynchronous workflows, wdyt?
3656-3667: IncludeCustomPartitionRouterin AsyncRetriever
Extending the partition router union in the async workflow mirrors the synchronous case and provides parity, wdyt?
3669-3692: AllowCustomDecoderin AsyncRetriever decoders
Supporting custom decoders for both response and download phases completes the set of decoder options, wdyt?
2239-2241: Reorderretrieveroptions inDynamicSchemaLoader
Bringing built‑in retrievers (Async, Custom, Simple) into the correct order improves schema consistency, wdyt?airbyte_cdk/sources/declarative/models/declarative_component_schema.py (7)
418-430: Titles added – looks goodThe new
titlemetadata onsecret_key,base64_encode_secret_key, andalgorithmmakes the generated UI clearer without affecting validation logic. Nice incremental UX win – no action required from my side.
1804-1815: Minor refactor only – no behavioural change detectedThe union reorder plus extra
titlefields forpage_size_option/page_token_optionappear to be strictly cosmetic. Validation order in Pydantic is the same, so LGTM.
1856-1871: Defaulttransform_before_filteringswitched toNoneBecause the runtime code treats truthiness (
if self.transform_before_filtering:) aNonebehaves like the oldFalse. 👍 Still, double‑check any direct boolean comparisons (== False) downstream just in case, wdyt?
2102-2110: Nice addition of optionalnamefieldAdding
namedirectly toDeclarativeStreamaligns the schema with the runtime dataclass that already maintains_name. This removes the “why isn’t name in the schema?” confusion – thanks!
2492-2580: AsyncRetriever expansions LGTMAll newly re‑ordered unions and the download/abort/delete requester fields are optional and backward‑compatible. Implementation code already supports these properties, so happy path here.
2656-2656: Forward refs call retainedKeeping
HttpRequester.update_forward_refs()prevents lazy‑import issues with circular types – thanks for not dropping it.
884-896:❓ Verification inconclusive
Confirm backward‑compat on newly required
typefield?
KeyTransformationnow explicitly includestype: Literal["KeyTransformation"]. If existing manifests omitted this field (because the surrounding object already implied the type), they would now fail validation. Do we have evidence that all production YAMLs already provide thetypeattribute, or do we need to add a fallback/default in the ingest pipeline, wdyt?
Ensure backward‑compatibility for the new required
typefield?
We’ve addedtype: Literal["KeyTransformation"](without a default) inairbyte_cdk/sources/declarative/models/declarative_component_schema.py lines 884–896making
typemandatory. This may break existing YAML manifests that omit thetypeattribute.
- Should we provide a default here (e.g.
type: Literal["KeyTransformation"] = Field("KeyTransformation", const=True)) to preserve backward‑compatibility?- Or handle missing
typevalues in the ingest pipeline as a fallback? wdyt?
…o be False if None
bazarnov
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left comments about my findings.
…odel type instead of generic object
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (4)
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py (4)
2197-2205: Could we make_remove_query_propertiesa pure “filter” without losing non‑strvalue types?
_remove_query_propertiessilently drops every non‑strvalue inrequest_parameters.
If a future schema allows other immutable types (e.g.int,bool, or an interpolated expression object), those would also be discarded – not justQueryPropertiesModel.
Would switching to an explicitisinstance(..., QueryPropertiesModel)filter instead of an implicit “keep onlystr” rule make the intent clearer and safer, wdyt?
For example:- if not isinstance(request_parameter, QueryPropertiesModel) + if not isinstance(request_parameter, QueryPropertiesModel)(the comprehension currently keeps only strings but does not express that intent.)
2830-2833: Mutating the parsed Pydantic model could be fragile – prefer a local default?
transform_before_filteringis set by mutating themodelinstance.
Because Pydantic models may become immutable (or validate on assignment) in v2, would it be safer to assign to a local variable instead?transform_before_filtering = ( model.transform_before_filtering if model.transform_before_filtering is not None else False )You could then pass that variable downstream without touching the model itself, wdyt?
2848-2851: Same concern forschema_normalizationdefaultingFor consistency with the previous comment, perhaps default
schema_normalization
without mutatingmodel:schema_normalization_enum = ( model.schema_normalization if model.schema_normalization is not None else SchemaNormalizationModel.None_ )and then use
schema_normalization_enumbelow.
This avoids side‑effects on the parsed object.
2953-2965: Early‑exit on multipleQueryPropertiescould improve readabilityInside the loop we continue scanning even after finding a second
QueryPropertiesModel, only to raise afterwards.
Would breaking as soon aslen(query_properties_definitions) > 1
simplify control‑flow and save a little work, wdyt?
Nothing critical, just a small readability tweak.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py(5 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py (1)
airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py (1)
InterpolatedRequestOptionsProvider(25-142)
🪛 GitHub Actions: Linters
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py
[error] 3613-3613: "FileUploader" has no attribute "parameters" (mypy attr-defined error)
⏰ Context from checks skipped due to timeout of 90000ms (9)
- GitHub Check: Check: 'source-pokeapi' (skip=false)
- GitHub Check: Check: 'source-amplitude' (skip=false)
- GitHub Check: Check: 'source-shopify' (skip=false)
- GitHub Check: Check: 'source-hardcoded-records' (skip=false)
- GitHub Check: Pytest (All, Python 3.11, Ubuntu)
- GitHub Check: Pytest (Fast)
- GitHub Check: Pytest (All, Python 3.10, Ubuntu)
- GitHub Check: SDM Docker Image Build
- GitHub Check: Analyze (python)
🔇 Additional comments (1)
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py (1)
3092-3098: Return type annotation might be too strict
_remove_query_propertiesis annotated to returnMapping[str, str],
but upstream (InterpolatedRequestOptionsProvider) accepts
Mapping[str, str] | str.
If callers later pass objects such asInterpolatedString
(which are not subclasses ofstr) they would violate the annotation even
though the runtime would work.Would loosening the return type to
Mapping[str, Any]
(or keeping thestrbut adding a# type: ignore[arg-type])
align the annotation with real‑world usage, wdyt?
…nd feature flag) (#15845) ## What https://github.com/user-attachments/assets/8ed2f725-1567-441c-bd96-88a812607f19 This is the first step in integrating SchemaForm into Builder UI. This PR adds a feature flag `connectorBuilder.schemaForm`, which when set to `true` causes the UI mode of Builder to render a raw SchemaForm for the stream view. ## How I approached this by adding a third case to the ConnectorBuilderEditPage's [rendering logic](https://github.com/airbytehq/airbyte-platform-internal/pull/15845/files#diff-f605f9d9694d2052bb126db465f2c37d16fa81917fce08c485db4e44581f8f28R142) (alongside yaml mode and current UI), which is executed when the feature flag is true and `mode` is `ui`. Most of the new logic lies in the new [SchemaFormBuilder](https://github.com/airbytehq/airbyte-platform-internal/pull/15845/files#diff-538753de1b3ea281377366b407b242856f39ecc6ec93e035bbca4166ae85fde7) component, which handles rendering both a new sidebar and the new stream config view. While this meant I had to repeat a bit of logic from the other UI mode, I felt this was better for feature flagging. **Note**: this state is not perfect, namely: - You can't always switch to YAML mode and then back to UI mode, since it is still validating against what is possible in the old UI mode - There is no way to configure `User Inputs` - I just didn't have time to get this working - No AI assist buttons, jinja expression suggestions, linking, etc., as I didn't have time - Doesn't break apart stream fields into separate cards, didn't have time But since this is behind a feature flag and the old implementation _should_ be unaffected by these changes, I think this is fine to merge in its current state. ## Testing If you want to test this out yourself, I recommend checking out [this branch](airbytehq/airbyte-python-cdk#480) in the `airbyte-python-cdk` repo, and after you run `pnpm start` on this branch, just copy over the `declarative_component_schema.yaml` file into this repo's webapp `build` folder, e.g (running from the `airbyte-python-cdk` repo): ``` cp airbyte_cdk/sources/declarative/declarative_component_schema.yaml ~/code/airbyte-platform-internal/oss/airbyte-webapp/build ``` This will use the corrected declarative_component_schema that changes some field ordering and titles to get to a slightly better UX.
…nd feature flag) (#15845) ## What https://github.com/user-attachments/assets/8ed2f725-1567-441c-bd96-88a812607f19 This is the first step in integrating SchemaForm into Builder UI. This PR adds a feature flag `connectorBuilder.schemaForm`, which when set to `true` causes the UI mode of Builder to render a raw SchemaForm for the stream view. ## How I approached this by adding a third case to the ConnectorBuilderEditPage's [rendering logic](https://github.com/airbytehq/airbyte-platform-internal/pull/15845/files#diff-f605f9d9694d2052bb126db465f2c37d16fa81917fce08c485db4e44581f8f28R142) (alongside yaml mode and current UI), which is executed when the feature flag is true and `mode` is `ui`. Most of the new logic lies in the new [SchemaFormBuilder](https://github.com/airbytehq/airbyte-platform-internal/pull/15845/files#diff-538753de1b3ea281377366b407b242856f39ecc6ec93e035bbca4166ae85fde7) component, which handles rendering both a new sidebar and the new stream config view. While this meant I had to repeat a bit of logic from the other UI mode, I felt this was better for feature flagging. **Note**: this state is not perfect, namely: - You can't always switch to YAML mode and then back to UI mode, since it is still validating against what is possible in the old UI mode - There is no way to configure `User Inputs` - I just didn't have time to get this working - No AI assist buttons, jinja expression suggestions, linking, etc., as I didn't have time - Doesn't break apart stream fields into separate cards, didn't have time But since this is behind a feature flag and the old implementation _should_ be unaffected by these changes, I think this is fine to merge in its current state. ## Testing If you want to test this out yourself, I recommend checking out [this branch](airbytehq/airbyte-python-cdk#480) in the `airbyte-python-cdk` repo, and after you run `pnpm start` on this branch, just copy over the `declarative_component_schema.yaml` file into this repo's webapp `build` folder, e.g (running from the `airbyte-python-cdk` repo): ``` cp airbyte_cdk/sources/declarative/declarative_component_schema.yaml ~/code/airbyte-platform-internal/oss/airbyte-webapp/build ``` This will use the corrected declarative_component_schema that changes some field ordering and titles to get to a slightly better UX.
Now that we are using the
declarative_component_schemato automatically generate the Builder UI in https://github.com/airbytehq/airbyte-platform-internal/pull/15845, there are several places where fields lack titles or are ordered non-ideally.This PR corrects these places to achieve an auto-generated UI that produces a better UX.
This PR is only reordering some fields/anyOf options and changing titles, so it should not be breaking at all and therefore safe to merge.
There will probably be more PRs like this coming in the future as well.
Summary by CodeRabbit
Summary by CodeRabbit