@@ -32,6 +32,12 @@ import { ProjectSelect } from './ProjectSelect';
3232import { SymlinkDirPicker } from './SymlinkDirPicker' ;
3333import type { AgentDef } from '../ipc/types' ;
3434import { DEFAULT_DOCKER_IMAGE , PROJECT_DOCKERFILE_RELATIVE_PATH } from '../lib/docker' ;
35+ import {
36+ clampCoordinatorConcurrentTasks ,
37+ DEFAULT_COORDINATOR_CONCURRENT_TASKS ,
38+ MAX_COORDINATOR_CONCURRENT_TASKS ,
39+ MIN_COORDINATOR_CONCURRENT_TASKS ,
40+ } from '../lib/coordinator-limits' ;
3541
3642interface NewTaskDialogProps {
3743 open : boolean ;
@@ -65,7 +71,9 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
6571 } | null > ( null ) ;
6672 const [ coordinatorMode , setCoordinatorMode ] = createSignal ( false ) ;
6773 const [ propagateSkipPermissions , setPropagateSkipPermissions ] = createSignal ( false ) ;
68- const [ maxConcurrentTasks , setMaxConcurrentTasks ] = createSignal ( 3 ) ;
74+ const [ maxConcurrentTasks , setMaxConcurrentTasks ] = createSignal (
75+ DEFAULT_COORDINATOR_CONCURRENT_TASKS ,
76+ ) ;
6977 const hasActiveCoordinator = ( ) =>
7078 Object . values ( store . tasks ) . some (
7179 ( t ) => t . coordinatorMode && ! t . closingStatus && t . projectId === selectedProjectId ( ) ,
@@ -553,7 +561,9 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
553561 : undefined ,
554562 coordinatorMode : coordinatorMode ( ) || undefined ,
555563 propagateSkipPermissions : coordinatorMode ( ) ? propagateSkipPermissions ( ) : undefined ,
556- maxConcurrentTasks : coordinatorMode ( ) ? maxConcurrentTasks ( ) : undefined ,
564+ maxConcurrentTasks : coordinatorMode ( )
565+ ? clampCoordinatorConcurrentTasks ( maxConcurrentTasks ( ) )
566+ : undefined ,
557567 } ) ;
558568 // Drop flow: prefill prompt without auto-sending
559569 if ( isFromDrop && p ) {
@@ -1137,12 +1147,12 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
11371147 Max concurrent sub-tasks:
11381148 < input
11391149 type = "number"
1140- min = "1"
1141- max = "20"
1150+ min = { MIN_COORDINATOR_CONCURRENT_TASKS }
1151+ max = { MAX_COORDINATOR_CONCURRENT_TASKS }
11421152 value = { maxConcurrentTasks ( ) }
11431153 onInput = { ( e ) => {
11441154 const v = parseInt ( e . currentTarget . value , 10 ) ;
1145- if ( ! isNaN ( v ) && v >= 1 ) setMaxConcurrentTasks ( v ) ;
1155+ if ( ! isNaN ( v ) ) setMaxConcurrentTasks ( clampCoordinatorConcurrentTasks ( v ) ) ;
11461156 } }
11471157 style = { {
11481158 width : '60px' ,
0 commit comments