-
Notifications
You must be signed in to change notification settings - Fork 24
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
/OffsetIncrement
order 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_filtering
title 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
, andalgorithm
aligns 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 thename
field, the reorderedretriever
anyOf list, and inclusion ofCustomIncrementalSync
andDynamicSchemaLoader
make 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
EnablingadditionalProperties
onInlineSchemaLoader.schema
is necessary for flexibility—looks good. wdyt?
1926-1939
: Enhance HttpRequester authentication and error handling
Great to see theauthenticator
and newerror_handler
anyOf 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_size
andPageIncrement.page_size
options 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 thecondition
field ensures users understand that it controls which records are filtered out. Good catch. wdyt?
3198-3200
: Add examples for schema normalization
Including examples for theSchemaNormalization
enum enhances discoverability of theDefault
vsNone
options—nice. wdyt?
3377-3383
: Add titles for StateDelegatingStream fields
Titles forfull_refresh_stream
andincremental_stream
improve clarity on their roles depending on state presence. wdyt?
3388-3394
: Streamline SimpleRetriever component metadata
Great addition of the retrievertitle
, plus inclusion ofdecoder
and custom requester/partition router options. Could we double‑check the placement of theignore_stream_slicer_parameters_on_paginated_requests
description 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_parameters
have been narrowed to acceptDict[str, str]
(or limited unions). The runtime code inHttpRequester
later 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
: Newdecoder
onSimpleRetriever
– check docs syncThe optional
decoder
property 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 improveConstantBackoffStrategy
clarity
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 forJwtAuthenticator
fields
Includingtitle
attributes forsecret_key
,base64_encode_secret_key
, andalgorithm
aligns this authenticator with the rest of the schema and ensures the UI shows friendly labels, wdyt?
1397-1403
: Introducename
property onDeclarativeStream
Adding a top‑levelname
field makes stream identification more explicit in the UI—excellent UX enhancement, wdyt?
1408-1409
: PrioritizeSimpleRetriever
inretriever
union
Reordering to surface the built‑inSimpleRetriever
first will guide users toward the common case—nice touch, wdyt?
1417-1418
: ExposeCustomIncrementalSync
inincremental_sync
union
Including the custom incremental sync option empowers connectors with bespoke logic—looks good, wdyt?
1428-1429
: AddDynamicSchemaLoader
toschema_loader
union
Reordering to include runtime schema loading aligns the schema with the Python model—great for advanced use cases, wdyt?
1823-1825
: Add metadata forSessionTokenAuthenticator
Providingtitle
anddescription
for this authenticator enhances discoverability in the Builder UI—nice, wdyt?
1962-1975
: Reorderauthenticator
options 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: string
alongside object payloads gives users concise syntax for simple cases, wdyt?
2000-2001
: Allow string shorthand forrequest_body_json
Enablingtype: string
for JSON bodies improves flexibility in defining payload templates, wdyt?
2018-2023
: Enhancerequest_headers
union 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_parameters
union with QueryProperties and string form
IncludingQueryProperties
and shorthand string support diversifies parameter definitions for common patterns, wdyt?
2053-2059
: Expanderror_handler
union with Composite and Custom handlers
SurfacingCompositeErrorHandler
andCustomErrorHandler
enriches 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 toOffsetIncrement
page_size options
Descriptive titles for numeric vs. interpolated page size values will make the UI labels self‑explanatory, wdyt?
2990-2992
: Add titles toPageIncrement
page_size options
Similarly enhancing the titles in the page increment strategy clarifies the choice between static and dynamic sizes, wdyt?
3086-3093
: Add titles toPrimaryKey
union variants
Labelling single key, composite key, and nested composite key variants improves user guidance when selecting a primary key format, wdyt?
3360-3360
: MarkLegacySessionTokenAuthenticator
as deprecated
Deprecation flag is critical to steer users toward the modernSessionTokenAuthenticator
component, wdyt?
3419-3419
: Addtitle
forStateDelegatingStream
Including a title makes this experimental component more discoverable in the UI, wdyt?
3450-3450
: Addtitle
forSimpleRetriever
Labeling the synchronous retriever improves consistency with other components, wdyt?
3464-3466
: IncludeCustomRequester
inSimpleRetriever.requester
union
Supporting custom requesters alongside built‑in HTTP ones offers extensibility for edge cases, wdyt?
3467-3478
: Adddecoder
component toSimpleRetriever
Exposing decoder options directly in the retriever consolidates response processing settings, wdyt?
3479-3481
: Refactorrecord_selector
reference to core definition
Switching to a direct$ref
forRecordSelector
centralizes record extraction logic, wdyt?
3498-3505
: IncludeCustomPartitionRouter
inSimpleRetriever.partition_router
Allowing custom partition routers alongside built‑in ones maximizes flexibility for complex pagination scenarios, wdyt?
3598-3608
: AllowCustomRecordExtractor
in 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
: SupportCustomRequester
across AsyncRetriever request phases
Enabling custom requesters for creation, polling, download, abort, and delete steps ensures full extensibility of asynchronous workflows, wdyt?
3656-3667
: IncludeCustomPartitionRouter
in AsyncRetriever
Extending the partition router union in the async workflow mirrors the synchronous case and provides parity, wdyt?
3669-3692
: AllowCustomDecoder
in AsyncRetriever decoders
Supporting custom decoders for both response and download phases completes the set of decoder options, wdyt?
2239-2241
: Reorderretriever
options 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
title
metadata onsecret_key
,base64_encode_secret_key
, andalgorithm
makes 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
title
fields forpage_size_option
/page_token_option
appear to be strictly cosmetic. Validation order in Pydantic is the same, so LGTM.
1856-1871
: Defaulttransform_before_filtering
switched toNone
Because the runtime code treats truthiness (
if self.transform_before_filtering:
) aNone
behaves like the oldFalse
. 👍 Still, double‑check any direct boolean comparisons (== False
) downstream just in case, wdyt?
2102-2110
: Nice addition of optionalname
fieldAdding
name
directly toDeclarativeStream
aligns 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
type
field?
KeyTransformation
now 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 thetype
attribute, or do we need to add a fallback/default in the ingest pipeline, wdyt?
Ensure backward‑compatibility for the new required
type
field?
We’ve addedtype: Literal["KeyTransformation"]
(without a default) inairbyte_cdk/sources/declarative/models/declarative_component_schema.py lines 884–896
making
type
mandatory. This may break existing YAML manifests that omit thetype
attribute.
- Should we provide a default here (e.g.
type: Literal["KeyTransformation"] = Field("KeyTransformation", const=True)
) to preserve backward‑compatibility?- Or handle missing
type
values in the ingest pipeline as a fallback? wdyt?
…o be False if None
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_properties
a pure “filter” without losing non‑str
value types?
_remove_query_properties
silently drops every non‑str
value 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_filtering
is set by mutating themodel
instance.
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_normalization
defaultingFor 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_enum
below.
This avoids side‑effects on the parsed object.
2953-2965
: Early‑exit on multipleQueryProperties
could 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_properties
is 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 thestr
but 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_schema
to 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