@@ -13,7 +13,11 @@ import { GUIAgentToolCallEngine } from './ToolCallEngine';
1313import { SYSTEM_PROMPT } from './prompts' ;
1414import { Base64ImageParser } from '@agent-infra/media-utils' ;
1515import { Operator , BaseGUIAgent } from '@gui-agent/shared/base' ;
16- import { GUIAgentConfig , NormalizeCoordinates } from '@gui-agent/shared/types' ;
16+ import {
17+ GUIAgentConfig ,
18+ NormalizeCoordinates ,
19+ ImageDetailCalculator ,
20+ } from '@gui-agent/shared/types' ;
1721import {
1822 assembleSystemPrompt ,
1923 isSystemPromptTemplate ,
@@ -23,6 +27,7 @@ import {
2327} from '@gui-agent/shared/utils' ;
2428import { GUI_ADAPTED_TOOL_NAME } from './constants' ;
2529import { convertToAgentUIAction , createGUIErrorResponse } from './utils' ;
30+ import { defaultDetailCalculator } from './defaultImpls' ;
2631
2732const defaultLogger = new ConsoleLogger ( '[GUIAgent]' , LogLevel . DEBUG ) ;
2833
@@ -31,6 +36,7 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent {
3136
3237 private operator : Operator | undefined ;
3338 private normalizeCoordinates : NormalizeCoordinates ;
39+ private detailCalculator : ImageDetailCalculator ;
3440 private loopIntervalInMs : number ;
3541
3642 constructor ( config : GUIAgentConfig < T > ) {
@@ -40,6 +46,7 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent {
4046 systemPrompt,
4147 customeActionParser,
4248 normalizeCoordinates,
49+ detailCalculator,
4350 maxLoopCount,
4451 loopIntervalInMs = 500 ,
4552 } = config ;
@@ -69,6 +76,8 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent {
6976 } ) ;
7077 this . operator = operator ;
7178 this . normalizeCoordinates = normalizeCoordinates ?? defaultNormalizeCoords ;
79+ // Default detail calculator implementation
80+ this . detailCalculator = detailCalculator ?? defaultDetailCalculator ;
7281 this . loopIntervalInMs = loopIntervalInMs ;
7382 this . logger = this . logger . spawn ( '[GUIAgent]' ) ;
7483 }
@@ -163,11 +172,17 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent {
163172 return ;
164173 }
165174
175+ const { width : imageWidth , height : imageHeight } = base64Tool . getDimensions ( ) || {
176+ width : - 1 ,
177+ height : - 1 ,
178+ } ;
179+
166180 const content : ChatCompletionContentPart [ ] = [
167181 {
168182 type : 'image_url' ,
169183 image_url : {
170184 url : base64Uri ,
185+ detail : this . detailCalculator ( imageWidth , imageHeight ) ,
171186 } ,
172187 } ,
173188 ] ;
0 commit comments