1
1
import './index.less' ;
2
2
import { useAllCurrentTasks , useExecutionDump } from '@/components/store' ;
3
- import type { ExecutionTask , ExecutionTaskInsightLocate } from '@midscene/core' ;
3
+ import type {
4
+ AIUsageInfo ,
5
+ ExecutionTask ,
6
+ ExecutionTaskInsightLocate ,
7
+ } from '@midscene/core' ;
4
8
import { typeStr } from '@midscene/core/agent' ;
9
+
10
+ // Extended task type with searchAreaUsage
11
+ type ExecutionTaskWithSearchAreaUsage = ExecutionTask & {
12
+ searchAreaUsage ?: AIUsageInfo ;
13
+ } ;
5
14
import {
6
15
type AnimationScript ,
7
16
iconForStatus ,
@@ -16,7 +25,7 @@ import type { PlaywrightTasks } from '../../types';
16
25
import ReportOverview from '../report-overview' ;
17
26
18
27
const SideItem = ( props : {
19
- task : ExecutionTask ;
28
+ task : ExecutionTaskWithSearchAreaUsage ;
20
29
selected ?: boolean ;
21
30
onClick ?: ( ) => void ;
22
31
onItemHover ?: ( task : ExecutionTask | null , x ?: number , y ?: number ) => any ;
@@ -138,19 +147,31 @@ const SideItem = (props: {
138
147
{ /* Display usage info in table style if available and Pro mode is enabled */ }
139
148
{ props . proModeEnabled && (
140
149
< >
141
- < Tooltip title = "The name of the model used this time" >
150
+ < Tooltip title = { task . usage ?. model_name || '' } >
142
151
< div className = "usage-column model-name" >
143
152
{ task . usage ?. model_name || '-' }
144
153
</ div >
145
154
</ Tooltip >
146
155
< Tooltip title = "Input tokens sent to the AI model" >
147
156
< div className = "usage-column prompt-tokens" >
148
- { task . usage ?. prompt_tokens || '-' }
157
+ { ( ( ) => {
158
+ const mainUsage = task . usage ?. prompt_tokens || 0 ;
159
+ const searchAreaUsage =
160
+ task . searchAreaUsage ?. prompt_tokens || 0 ;
161
+ const total = mainUsage + searchAreaUsage ;
162
+ return total > 0 ? total : '-' ;
163
+ } ) ( ) }
149
164
</ div >
150
165
</ Tooltip >
151
166
< Tooltip title = "Output tokens generated by the AI model" >
152
167
< div className = "usage-column completion-tokens" >
153
- { task . usage ?. completion_tokens || '-' }
168
+ { ( ( ) => {
169
+ const mainUsage = task . usage ?. completion_tokens || 0 ;
170
+ const searchAreaUsage =
171
+ task . searchAreaUsage ?. completion_tokens || 0 ;
172
+ const total = mainUsage + searchAreaUsage ;
173
+ return total > 0 ? total : '-' ;
174
+ } ) ( ) }
154
175
</ div >
155
176
</ Tooltip >
156
177
</ >
@@ -235,13 +256,24 @@ const Sidebar = (props: SidebarProps = {}): JSX.Element => {
235
256
const totalPromptTokens =
236
257
groupedDump ?. executions
237
258
. flatMap ( ( e ) => e . tasks )
238
- . reduce ( ( acc , task ) => acc + ( task . usage ?. prompt_tokens || 0 ) , 0 ) || 0 ;
259
+ . reduce ( ( acc , task ) => {
260
+ const mainUsage = task . usage ?. prompt_tokens || 0 ;
261
+ const searchAreaUsage =
262
+ ( task as ExecutionTaskWithSearchAreaUsage ) . searchAreaUsage
263
+ ?. prompt_tokens || 0 ;
264
+ return acc + mainUsage + searchAreaUsage ;
265
+ } , 0 ) || 0 ;
239
266
240
267
const totalCompletionTokens =
241
268
groupedDump ?. executions
242
269
. flatMap ( ( e ) => e . tasks )
243
- . reduce ( ( acc , task ) => acc + ( task . usage ?. completion_tokens || 0 ) , 0 ) ||
244
- 0 ;
270
+ . reduce ( ( acc , task ) => {
271
+ const mainUsage = task . usage ?. completion_tokens || 0 ;
272
+ const searchAreaUsage =
273
+ ( task as ExecutionTaskWithSearchAreaUsage ) . searchAreaUsage
274
+ ?. completion_tokens || 0 ;
275
+ return acc + mainUsage + searchAreaUsage ;
276
+ } , 0 ) || 0 ;
245
277
246
278
const executionContent = groupedDump ? (
247
279
< div className = "execution-info-section" >
0 commit comments