feat(worker): resolve max-turns from task then list then global default
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -390,10 +390,13 @@ public sealed class TaskRunner
|
||||
SystemPrompt: string.IsNullOrWhiteSpace(instructions) ? null : instructions,
|
||||
AgentPath: task.AgentPath ?? listConfig?.AgentPath,
|
||||
ResumeSessionId: resumeSessionId,
|
||||
MaxTurns: global.DefaultMaxTurns,
|
||||
MaxTurns: ResolveMaxTurns(task.MaxTurns, listConfig?.MaxTurns, global.DefaultMaxTurns),
|
||||
PermissionMode: global.DefaultPermissionMode);
|
||||
}
|
||||
|
||||
internal static int? ResolveMaxTurns(int? taskTurns, int? listTurns, int globalDefault)
|
||||
=> taskTurns ?? listTurns ?? globalDefault;
|
||||
|
||||
public static string MergeInstructions(params string?[] parts)
|
||||
{
|
||||
var trimmed = parts
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
using ClaudeDo.Worker.Runner;
|
||||
using Xunit;
|
||||
|
||||
namespace ClaudeDo.Worker.Tests.Runner;
|
||||
|
||||
public class MaxTurnsResolutionTests
|
||||
{
|
||||
[Fact]
|
||||
public void Task_override_wins()
|
||||
=> Assert.Equal(5, TaskRunner.ResolveMaxTurns(taskTurns: 5, listTurns: 20, globalDefault: 100));
|
||||
|
||||
[Fact]
|
||||
public void List_override_used_when_no_task_override()
|
||||
=> Assert.Equal(20, TaskRunner.ResolveMaxTurns(taskTurns: null, listTurns: 20, globalDefault: 100));
|
||||
|
||||
[Fact]
|
||||
public void Falls_back_to_global_default()
|
||||
=> Assert.Equal(100, TaskRunner.ResolveMaxTurns(taskTurns: null, listTurns: null, globalDefault: 100));
|
||||
}
|
||||
Reference in New Issue
Block a user