fix(mcp): make set_task_config/set_list_config patch instead of overwrite
Omitted fields on set_task_config/set_list_config used to be indistinguishable from an explicit clear, so any single-field update silently wiped every other override (including SessionSkills, which wasn't even a tool parameter). Now only the fields you pass are changed; clearing an override requires naming it in the new clearFields array (a sentinel string doesn't work uniformly since maxTurns is an int). set_list_config's "all four null deletes the config" case is preserved but only reachable via clearFields. Return values now reflect the full resulting config.
This commit is contained in:
@@ -81,7 +81,7 @@ public sealed class EffectiveRunConfigTests : IDisposable
|
||||
public async Task Task_override_beats_list_override_beats_preset()
|
||||
{
|
||||
var listId = await SeedListAsync();
|
||||
await _sut.SetListConfig(listId, "opus", null, "list-agent.md", 50, CancellationToken.None);
|
||||
await _sut.SetListConfig(listId, "opus", null, "list-agent.md", 50, cancellationToken: CancellationToken.None);
|
||||
var task = await SeedTaskAsync(listId, t => { t.Model = "haiku"; t.MaxTurns = 12; });
|
||||
|
||||
var result = await _sut.GetEffectiveRunConfig(task.Id, CancellationToken.None);
|
||||
@@ -98,7 +98,7 @@ public sealed class EffectiveRunConfigTests : IDisposable
|
||||
public async Task List_override_wins_when_no_task_override()
|
||||
{
|
||||
var listId = await SeedListAsync();
|
||||
await _sut.SetListConfig(listId, "opus", null, null, 50, CancellationToken.None);
|
||||
await _sut.SetListConfig(listId, "opus", null, null, 50, cancellationToken: CancellationToken.None);
|
||||
var task = await SeedTaskAsync(listId);
|
||||
|
||||
var result = await _sut.GetEffectiveRunConfig(task.Id, CancellationToken.None);
|
||||
|
||||
Reference in New Issue
Block a user