@@ -64,61 +64,79 @@ public DmlToolsConfig(
6464 if ( allToolsEnabled is not null )
6565 {
6666 AllToolsEnabled = allToolsEnabled . Value ;
67- UserProvidedAllToolsEnabled = true ;
67+ UserProvidedAllTools = true ;
68+
69+ // When allToolsEnabled is set, use it as the default for all tools
70+ bool toolDefault = allToolsEnabled . Value ;
71+
72+ DescribeEntities = describeEntities ?? toolDefault ;
73+ CreateRecord = createRecord ?? toolDefault ;
74+ ReadRecords = readRecords ?? toolDefault ;
75+ UpdateRecord = updateRecord ?? toolDefault ;
76+ DeleteRecord = deleteRecord ?? toolDefault ;
77+ ExecuteEntity = executeEntity ?? toolDefault ;
6878 }
6979 else
7080 {
7181 AllToolsEnabled = DEFAULT_ENABLED ;
82+
83+ // Set values with defaults
84+ DescribeEntities = describeEntities ?? DEFAULT_ENABLED ;
85+ CreateRecord = createRecord ?? DEFAULT_ENABLED ;
86+ ReadRecords = readRecords ?? DEFAULT_ENABLED ;
87+ UpdateRecord = updateRecord ?? DEFAULT_ENABLED ;
88+ DeleteRecord = deleteRecord ?? DEFAULT_ENABLED ;
89+ ExecuteEntity = executeEntity ?? DEFAULT_ENABLED ;
7290 }
7391
74- // Set values with defaults and track user-provided status
75- DescribeEntities = describeEntities ?? DEFAULT_ENABLED ;
92+ // Track user-provided status - only true if the parameter was not null
7693 UserProvidedDescribeEntities = describeEntities is not null ;
77-
78- CreateRecord = createRecord ?? DEFAULT_ENABLED ;
7994 UserProvidedCreateRecord = createRecord is not null ;
80-
81- ReadRecords = readRecords ?? DEFAULT_ENABLED ;
8295 UserProvidedReadRecords = readRecords is not null ;
83-
84- UpdateRecord = updateRecord ?? DEFAULT_ENABLED ;
8596 UserProvidedUpdateRecord = updateRecord is not null ;
86-
87- DeleteRecord = deleteRecord ?? DEFAULT_ENABLED ;
8897 UserProvidedDeleteRecord = deleteRecord is not null ;
89-
90- ExecuteEntity = executeEntity ?? DEFAULT_ENABLED ;
9198 UserProvidedExecuteEntity = executeEntity is not null ;
9299 }
93100
94101 /// <summary>
95102 /// Creates a DmlToolsConfig with all tools set to the same state
103+ /// Used when user explicitly sets "dml-tools": true/false
96104 /// </summary>
97105 public static DmlToolsConfig FromBoolean ( bool enabled )
98106 {
107+ // Only pass allToolsEnabled, leave individual tools as null
99108 return new DmlToolsConfig (
100109 allToolsEnabled : enabled ,
101- describeEntities : enabled ,
102- createRecord : enabled ,
103- readRecords : enabled ,
104- updateRecord : enabled ,
105- deleteRecord : enabled ,
106- executeEntity : enabled
110+ describeEntities : null ,
111+ createRecord : null ,
112+ readRecords : null ,
113+ updateRecord : null ,
114+ deleteRecord : null ,
115+ executeEntity : null
107116 ) ;
108117 }
109118
110119 /// <summary>
111120 /// Creates a default DmlToolsConfig with all tools enabled
121+ /// Used when dml-tools is not specified in config at all
112122 /// </summary>
113- public static DmlToolsConfig Default => FromBoolean ( DEFAULT_ENABLED ) ;
123+ public static DmlToolsConfig Default => new (
124+ allToolsEnabled : null ,
125+ describeEntities : null ,
126+ createRecord : null ,
127+ readRecords : null ,
128+ updateRecord : null ,
129+ deleteRecord : null ,
130+ executeEntity : null
131+ ) ;
114132
115133 /// <summary>
116134 /// Flag which informs CLI and JSON serializer whether to write all-tools-enabled
117135 /// property/value to the runtime config file.
118136 /// </summary>
119137 [ JsonIgnore ( Condition = JsonIgnoreCondition . Always ) ]
120138 [ MemberNotNullWhen ( true , nameof ( AllToolsEnabled ) ) ]
121- public bool UserProvidedAllToolsEnabled { get ; init ; } = false ;
139+ public bool UserProvidedAllTools { get ; init ; } = false ;
122140
123141 /// <summary>
124142 /// Flag which informs CLI and JSON serializer whether to write describe-entities
0 commit comments