@@ -30,6 +30,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip
3030import { Tabs , TabsContent , TabsList , TabsTrigger } from "@/components/ui/tabs" ;
3131import { Empty , EmptyDescription , EmptyHeader , EmptyMedia } from "@/components/ui/empty" ;
3232import { defaultSkills } from "@/utils/config" ;
33+ import { readStoredTaskDialogParams , writeStoredTaskDialogParams } from "./task-dialog-params-storage" ;
3334
3435
3536interface SkillItemProps {
@@ -210,16 +211,39 @@ export function TaskInput({ repos, onTaskCreated }: TaskInputProps) {
210211 } ;
211212
212213 const setDefaultConfig = ( ) => {
213- setSelectedModelId ( selectPreferredTaskModel ( models , subscription ) )
214- setSelectedHostId ( selectHost ( hosts , true ) )
214+ const storedParams = readStoredTaskDialogParams ( ) ;
215+ const defaultModelId = selectPreferredTaskModel ( models , subscription ) ;
216+ const nextModelId = (
217+ storedParams . modelId
218+ && models . some ( ( model ) => model . id === storedParams . modelId )
219+ && canUseModelBySubscription ( models . find ( ( model ) => model . id === storedParams . modelId ) , subscription )
220+ )
221+ ? storedParams . modelId
222+ : defaultModelId ;
223+
224+ setSelectedModelId ( nextModelId ) ;
215225
216226 if ( user . role === ConstsUserRole . UserRoleSubAccount ) {
217- setSelectedHostId ( selectHost ( hosts , true ) )
218- setSelectedImageId ( selectImage ( images , true ) ) ;
219- } else {
220- setSelectedHostId ( selectHost ( hosts , false ) )
221- setSelectedImageId ( selectImage ( images , false ) ) ;
227+ const nextHostId = (
228+ storedParams . hostId === "public_host"
229+ || hosts . some ( ( host ) => host . id === storedParams . hostId && host . status === ConstsHostStatus . HostStatusOnline )
230+ )
231+ ? ( storedParams . hostId || "public_host" )
232+ : selectHost ( hosts , true ) ;
233+ const nextImageId = (
234+ storedParams . imageId
235+ && images . some ( ( image ) => image . id === storedParams . imageId )
236+ )
237+ ? storedParams . imageId
238+ : selectImage ( images , true ) ;
239+
240+ setSelectedHostId ( nextHostId ) ;
241+ setSelectedImageId ( nextImageId ) ;
242+ return ;
222243 }
244+
245+ setSelectedHostId ( selectHost ( hosts , false ) ) ;
246+ setSelectedImageId ( selectImage ( images , false ) ) ;
223247 } ;
224248
225249 const adaptedModelForTool = ( ) : boolean => {
@@ -265,6 +289,13 @@ export function TaskInput({ repos, onTaskCreated }: TaskInputProps) {
265289 return ;
266290 }
267291
292+ const storedParams = readStoredTaskDialogParams ( ) ;
293+ writeStoredTaskDialogParams ( {
294+ modelId : selectedModelId ,
295+ hostId : user . role === ConstsUserRole . UserRoleSubAccount ? selectedHostId : storedParams . hostId ,
296+ imageId : user . role === ConstsUserRole . UserRoleSubAccount ? selectedImageId : storedParams . imageId ,
297+ } ) ;
298+
268299 executeTask ( ) ;
269300 } ;
270301
0 commit comments