Cherry-pick: CLI structure and options fixes to release/2.0 (#3407, #3408, #3409)#3504
Open
souvikghosh04 wants to merge 3 commits intorelease/2.0from
Open
Cherry-pick: CLI structure and options fixes to release/2.0 (#3407, #3408, #3409)#3504souvikghosh04 wants to merge 3 commits intorelease/2.0from
souvikghosh04 wants to merge 3 commits intorelease/2.0from
Conversation
) ## Why make this change? `dab init` used a flat, structurally wrong option `--graphql.multiple-create.enabled` while the JSON schema and `dab configure` both use the correct nested structure `--runtime.graphql.multiple-mutations.create.enabled`. ## What is this change? - Renames the `dab init` CLI option from `--graphql.multiple-create.enabled` to `--graphql.multiple-mutations.create.enabled` to align with the config schema hierarchy (`runtime.graphql.multiple-mutations.create.enabled`) and `dab configure`. - Updates all references in source, config generators, and tests. No changes to the underlying config model — `MultipleMutationOptions/MultipleCreateOptions` was already correct. - **Breaking change note**: The old flag `--graphql.multiple-create.enabled` is no longer accepted by `dab init`. Users should migrate to `--graphql.multiple-mutations.create.enabled`. ## How was this tested? - [ ] Integration Tests - [x] Unit Tests ## Sample Request(s) Before (broken): ``` dab init --database-type mssql --connection-string "@env('conn')" --graphql.multiple-create.enabled true ``` After (fixed): ``` dab init --database-type mssql --connection-string "@env('conn')" --graphql.multiple-mutations.create.enabled true ```
…#3408) ## Why make this change? - Closes #3373 dab configure individual DML tool options had an extra `.enabled` suffix, producing invalid nested config instead of the direct booleans the schema expects. ## What is this change? Removed `.enabled` suffix from 7 individual DML tool names in ConfigureOptions.cs (e.g., `--runtime.mcp.dml-tools.describe-entities.enabled` is now `runtime.mcp.dml-tools.describe-entities`). Bulk toggle (`--runtime.mcp.dml-tools.enabled`) ## How was this tested? - [ ] Integration Tests - [x] Unit Tests ## Sample Request(s) Fixed: direct boolean, matches schema `dab configure --runtime.mcp.dml-tools.describe-entities true` Multiple tools `dab configure --runtime.mcp.dml-tools.describe-entities true --runtime.mcp.dml-tools.create-record false`
## What - Closes on #3410 Adds missing CLI options and fixes schema issues for `dab configure`, `dab add`, and `dab update` commands. ## Issues Fixed | Issue | Description | Fix Location | |-------|-------------|-------------| | #3337 | Missing `runtime.pagination.max-page-size` | ConfigureOptions, ConfigGenerator | | #3338 | Missing `runtime.pagination.default-page-size` | ConfigureOptions, ConfigGenerator | | #3339 | Missing `runtime.pagination.next-link-relative` | ConfigureOptions, ConfigGenerator | | #3340 | Missing `runtime.host.max-response-size-mb` | ConfigureOptions, ConfigGenerator | | #3341 | Missing `runtime.health.*` (enabled, cache-ttl-seconds, max-query-parallelism, roles) | ConfigureOptions, ConfigGenerator | | #3342 | Missing `data-source-files` | ConfigureOptions, ConfigGenerator | | #3343 | Missing `runtime.telemetry.log-level` | ConfigureOptions, ConfigGenerator | | #3377 | `--cache.ttl` should be `--cache.ttl-seconds` | EntityOptions | | #3383 | Missing `data-source.user-delegated-auth.provider` | ConfigureOptions, ConfigGenerator | | #3384 | Missing `data-source.health.threshold-ms` | ConfigureOptions, ConfigGenerator | | #3385 | Missing `data-source.health.enabled` | ConfigureOptions, ConfigGenerator | | #3386 | Dup of #3339 | (same fix) | | #3387 | Dup of #3340 | (same fix) | | #3388 | Missing entity `health.enabled` | EntityOptions, Utils, ConfigGenerator | | #3389 | Missing entity `cache.level` | EntityOptions, Utils, ConfigGenerator | | #3390 | Schema `object-description` to `description` | dab.draft.schema.json | | #3395 | `cosmosdb_postgresql` missing from help text | ConfigureOptions | - **ConfigureOptions.cs** - 15 new options - **EntityOptions.cs** - Renamed `cache.ttl` to `cache.ttl-seconds`; added `cache.level`, `health.enabled` - **AddOptions.cs / UpdateOptions.cs** - Pass new entity params - **ConfigGenerator.cs** - Processing for all new options in configure, add, update flows - **Utils.cs** - Updated `ConstructCacheOptions`; added `ConstructEntityHealthOptions` - **dab.draft.schema.json** - Renamed `object-description` to `description` ## Tests - [x] Unit tests - New tests added
Contributor
There was a problem hiding this comment.
Pull request overview
This cherry-pick backports a set of CLI option/schema alignment fixes from main into release/2.0, primarily to ensure dab init, dab configure, dab add, and dab update produce config that matches the expected nested runtime config structure and schema.
Changes:
- Renames the
dab initGraphQL multiple-create flag to the correct nested option name (--graphql.multiple-mutations.create.enabled) and updates references/tests. - Fixes
dab configureindividual MCP DML tool option names by removing the erroneous.enabledsuffix, and adds several missingconfigureoptions (pagination, runtime health, host max response size, telemetry log-level, data-source files, etc.). - Extends entity add/update support for new entity options (
cache.ttl-seconds,cache.level,health.enabled) and updates unit/E2E tests accordingly.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Cli/Utils.cs | Updates entity cache option construction (ttl-seconds + cache level) and adds entity health option construction. |
| src/Cli/ConfigGenerator.cs | Wires new CLI options into config generation/merge logic (entity cache/health, runtime pagination/health, telemetry log-level, host max response size, datasource health/provider/files). |
| src/Cli/Commands/InitOptions.cs | Renames the init flag to graphql.multiple-mutations.create.enabled. |
| src/Cli/Commands/ConfigureOptions.cs | Adds missing configure flags and fixes MCP DML tool option names (removes .enabled). |
| src/Cli/Commands/EntityOptions.cs | Renames entity cache ttl option to cache.ttl-seconds and adds cache.level + health.enabled. |
| src/Cli/Commands/AddOptions.cs | Plumbs new entity cache/health args through add command options. |
| src/Cli/Commands/UpdateOptions.cs | Plumbs new entity cache/health args through update command options. |
| src/Cli.Tests/InitTests.cs | Updates init tests to use the renamed multiple-mutations option. |
| src/Cli.Tests/EndToEndTests.cs | Updates init E2E args and adds an E2E test covering the corrected MCP DML tool option names. |
| src/Cli.Tests/AddEntityTests.cs | Updates add-entity tests for renamed cache ttl option and new parameters. |
| src/Cli.Tests/UpdateEntityTests.cs | Updates update-entity tests for renamed cache ttl option; adds coverage for cache level + entity health enabled. |
| src/Cli.Tests/ConfigureOptionsTests.cs | Adds unit tests for new configure options (pagination, runtime health, host max response size, datasource files/health/provider, telemetry log-level). |
| schemas/dab.draft.schema.json | Renames object-description to description within the source object schema. |
| config-generators/mssql-commands.txt | Updates generated init command to use --graphql.multiple-mutations.create.enabled. |
Comment on lines
+1014
to
+1017
| PaginationOptions updatedPaginationOptions = new( | ||
| MaxPageSize: maxPageSize, | ||
| DefaultPageSize: defaultPageSize, | ||
| NextLinkRelative: nextLinkRelative); |
Comment on lines
+1688
to
+1689
| updatedHostOptions = updatedHostOptions! with { MaxResponseSizeMB = options.RuntimeHostMaxResponseSizeMb, UserProvidedMaxResponseSizeMB = true }; | ||
| _logger.LogInformation("Updated RuntimeConfig with Runtime.Host.MaxResponseSizeMb as '{value}'", options.RuntimeHostMaxResponseSizeMb); |
Comment on lines
+902
to
909
| if (!bool.TryParse(healthEnabled, out bool isEnabled)) | ||
| { | ||
| return cacheOptions with { Enabled = isEnabled }; | ||
| _logger.LogError("Invalid format for --health.enabled. Accepted values are true/false."); | ||
| return null; | ||
| } | ||
|
|
||
| return cacheOptions with { Enabled = isEnabled, TtlSeconds = ttl, UserProvidedTtlOptions = isCacheTtlUserProvided }; | ||
| return new EntityHealthCheckConfig(enabled: isEnabled); | ||
| } |
Comment on lines
+873
to
880
| if (cacheLevel is not null && !Enum.TryParse(cacheLevel, ignoreCase: true, out EntityCacheLevel _)) | ||
| { | ||
| isCacheTtlUserProvided = true; | ||
| _logger.LogError("Invalid format for --cache.level. Accepted values are L1, L1L2."); | ||
| } | ||
| else if (cacheLevel is not null) | ||
| { | ||
| level = Enum.Parse<EntityCacheLevel>(cacheLevel, ignoreCase: true); | ||
| } |
Comment on lines
+117
to
+121
| [Option("cache.level", Required = false, HelpText = "Cache level for entity. Allowed values: L1, L1L2. Default: L1L2.")] | ||
| public string? CacheLevel { get; } | ||
|
|
||
| [Option("health.enabled", Required = false, HelpText = "Enable health checks for this entity. Default: true (boolean).")] | ||
| public string? HealthEnabled { get; } |
|
|
||
| /// <summary> | ||
| /// Tests adding runtime health options to a config that doesn't have a health section. | ||
| /// The enabled flag must be explicitly set for health options to persist in config. |
Aniruddh25
approved these changes
May 5, 2026
RubenCerna2079
approved these changes
May 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Cherry-picks CLI structural fixes from main to release/2.0: