@@ -170,7 +170,10 @@ export const AgentRow: FC<AgentRowProps> = ({
170
170
key = { agent . id }
171
171
direction = "column"
172
172
spacing = { 0 }
173
- className = { styles . agentRow }
173
+ className = { combineClasses ( [
174
+ styles . agentRow ,
175
+ styles [ `agentRow-${ agent . status } ` ] ,
176
+ ] ) }
174
177
>
175
178
< Stack
176
179
direction = "row"
@@ -179,58 +182,42 @@ export const AgentRow: FC<AgentRowProps> = ({
179
182
className = { styles . agentInfo }
180
183
>
181
184
< div className = { styles . agentNameAndStatus } >
182
- < AgentStatus agent = { agent } />
183
- < div >
185
+ < Stack alignItems = "center" direction = "row" spacing = { 3 } >
184
186
< div className = { styles . agentName } > { agent . name } </ div >
185
- { agent . status === "timeout" && (
186
- < div className = { styles . agentErrorMessage } >
187
- { t ( "unableToConnect" ) }
188
- </ div >
189
- ) }
190
- </ div >
187
+ < Stack
188
+ direction = "row"
189
+ spacing = { 2 }
190
+ alignItems = "baseline"
191
+ className = { styles . agentDescription }
192
+ >
193
+ { agent . status === "timeout" && (
194
+ < div className = { styles . agentErrorMessage } >
195
+ { t ( "unableToConnect" ) }
196
+ </ div >
197
+ ) }
198
+ { agent . status === "connected" && (
199
+ < >
200
+ < span className = { styles . agentOS } >
201
+ { agent . operating_system }
202
+ </ span >
203
+ < AgentVersion
204
+ agent = { agent }
205
+ serverVersion = { serverVersion }
206
+ onUpdate = { onUpdateAgent }
207
+ />
208
+ < AgentLatency agent = { agent } />
209
+ </ >
210
+ ) }
211
+ { agent . status === "connecting" && (
212
+ < >
213
+ < Skeleton width = { 160 } variant = "text" />
214
+ < Skeleton width = { 36 } variant = "text" />
215
+ </ >
216
+ ) }
217
+ </ Stack >
218
+ </ Stack >
191
219
</ div >
192
220
193
- { agent . status === "connected" && (
194
- < div className = { styles . agentDataGroup } >
195
- < div className = { styles . agentData } >
196
- < span > Ping</ span >
197
- < AgentLatency agent = { agent } />
198
- </ div >
199
-
200
- < div className = { styles . agentData } >
201
- < span > Version</ span >
202
- < AgentVersion
203
- agent = { agent }
204
- serverVersion = { serverVersion }
205
- onUpdate = { onUpdateAgent }
206
- />
207
- </ div >
208
- < AgentMetadata
209
- storybookMetadata = { storybookAgentMetadata }
210
- agent = { agent }
211
- />
212
- </ div >
213
- ) }
214
-
215
- { agent . status === "connecting" && (
216
- < div className = { styles . agentDataGroup } >
217
- < div className = { styles . agentData } >
218
- < Skeleton width = { 40 } height = { 12 } variant = "text" />
219
- < Skeleton width = { 65 } height = { 12 } variant = "text" />
220
- </ div >
221
-
222
- < div className = { styles . agentData } >
223
- < Skeleton width = { 40 } height = { 12 } variant = "text" />
224
- < Skeleton width = { 65 } height = { 12 } variant = "text" />
225
- </ div >
226
-
227
- < div className = { styles . agentData } >
228
- < Skeleton width = { 40 } height = { 12 } variant = "text" />
229
- < Skeleton width = { 65 } height = { 12 } variant = "text" />
230
- </ div >
231
- </ div >
232
- ) }
233
-
234
221
{ agent . status === "connected" && (
235
222
< div className = { styles . agentDefaultActions } >
236
223
< TerminalLink
@@ -275,42 +262,53 @@ export const AgentRow: FC<AgentRowProps> = ({
275
262
) }
276
263
</ Stack >
277
264
278
- { showApps && agent . status === "connected" && (
265
+ < div className = { styles . agentMetadata } >
266
+ < AgentMetadata
267
+ storybookMetadata = { storybookAgentMetadata }
268
+ agent = { agent }
269
+ />
270
+ </ div >
271
+
272
+ { showApps && (
279
273
< div className = { styles . apps } >
280
- { ! hideVSCodeDesktopButton && (
281
- < VSCodeDesktopButton
282
- userName = { workspace . owner_name }
283
- workspaceName = { workspace . name }
284
- agentName = { agent . name }
285
- folderPath = { agent . expanded_directory }
286
- />
274
+ { agent . status === "connected" && (
275
+ < >
276
+ { ! hideVSCodeDesktopButton && (
277
+ < VSCodeDesktopButton
278
+ userName = { workspace . owner_name }
279
+ workspaceName = { workspace . name }
280
+ agentName = { agent . name }
281
+ folderPath = { agent . expanded_directory }
282
+ />
283
+ ) }
284
+ { agent . apps . map ( ( app ) => (
285
+ < AppLink
286
+ key = { app . slug }
287
+ appsHost = { applicationsHost }
288
+ app = { app }
289
+ agent = { agent }
290
+ workspace = { workspace }
291
+ />
292
+ ) ) }
293
+ </ >
287
294
) }
288
- { agent . apps . map ( ( app ) => (
289
- < AppLink
290
- key = { app . slug }
291
- appsHost = { applicationsHost }
292
- app = { app }
293
- agent = { agent }
294
- workspace = { workspace }
295
- />
296
- ) ) }
297
- </ div >
298
- ) }
299
295
300
- { showApps && agent . status === "connecting" && (
301
- < div className = { styles . apps } >
302
- < Skeleton
303
- width = { 80 }
304
- height = { 36 }
305
- variant = "rect"
306
- className = { styles . buttonSkeleton }
307
- />
308
- < Skeleton
309
- width = { 110 }
310
- height = { 36 }
311
- variant = "rect"
312
- className = { styles . buttonSkeleton }
313
- />
296
+ { agent . status === "connecting" && (
297
+ < >
298
+ < Skeleton
299
+ width = { 80 }
300
+ height = { 36 }
301
+ variant = "rect"
302
+ className = { styles . buttonSkeleton }
303
+ />
304
+ < Skeleton
305
+ width = { 110 }
306
+ height = { 36 }
307
+ variant = "rect"
308
+ className = { styles . buttonSkeleton }
309
+ />
310
+ </ >
311
+ ) }
314
312
</ div >
315
313
) }
316
314
@@ -420,10 +418,27 @@ const useStyles = makeStyles((theme) => ({
420
418
agentRow : {
421
419
backgroundColor : theme . palette . background . paperLight ,
422
420
fontSize : 16 ,
421
+ borderLeft : `2px solid ${ theme . palette . text . secondary } ` ,
422
+ } ,
423
+
424
+ "agentRow-connected" : {
425
+ borderColor : theme . palette . success . light ,
426
+ } ,
427
+
428
+ "agentRow-disconnected" : {
429
+ borderColor : theme . palette . text . secondary ,
430
+ } ,
431
+
432
+ "agentRow-connecting" : {
433
+ borderColor : theme . palette . info . light ,
434
+ } ,
435
+
436
+ "agentRow-timeout" : {
437
+ borderColor : theme . palette . warning . light ,
423
438
} ,
424
439
425
440
agentInfo : {
426
- padding : theme . spacing ( 4 ) ,
441
+ padding : theme . spacing ( 2 , 4 ) ,
427
442
} ,
428
443
429
444
agentDefaultActions : {
@@ -432,6 +447,11 @@ const useStyles = makeStyles((theme) => ({
432
447
marginLeft : "auto" ,
433
448
} ,
434
449
450
+ agentDescription : {
451
+ fontSize : 14 ,
452
+ color : theme . palette . text . secondary ,
453
+ } ,
454
+
435
455
startupLogs : {
436
456
maxHeight : 256 ,
437
457
borderBottom : `1px solid ${ theme . palette . divider } ` ,
@@ -449,18 +469,18 @@ const useStyles = makeStyles((theme) => ({
449
469
} ,
450
470
451
471
agentNameAndStatus : {
452
- fontWeight : 600 ,
453
472
display : "flex" ,
454
473
alignItems : "center" ,
455
- gap : theme . spacing ( 2 ) ,
456
- fontSize : theme . spacing ( 2 ) ,
474
+ gap : theme . spacing ( 4 ) ,
457
475
} ,
458
476
459
477
agentName : {
460
478
whiteSpace : "nowrap" ,
461
479
overflow : "hidden" ,
462
480
textOverflow : "ellipsis" ,
463
481
maxWidth : 260 ,
482
+ fontWeight : 600 ,
483
+ fontSize : theme . spacing ( 2 ) ,
464
484
} ,
465
485
466
486
agentDataGroup : {
@@ -483,8 +503,9 @@ const useStyles = makeStyles((theme) => ({
483
503
apps : {
484
504
display : "flex" ,
485
505
flexWrap : "wrap" ,
486
- gap : theme . spacing ( 1 ) ,
487
- padding : theme . spacing ( 0 , 4 , 4 ) ,
506
+ gap : theme . spacing ( 1.5 ) ,
507
+ padding : theme . spacing ( 4 ) ,
508
+ borderTop : `1px solid ${ theme . palette . divider } ` ,
488
509
} ,
489
510
490
511
logsPanel : {
@@ -539,4 +560,14 @@ const useStyles = makeStyles((theme) => ({
539
560
height : theme . spacing ( 2 ) ,
540
561
} ,
541
562
} ,
563
+
564
+ agentOS : {
565
+ textTransform : "capitalize" ,
566
+ } ,
567
+
568
+ agentMetadata : {
569
+ padding : theme . spacing ( 2.5 , 4 ) ,
570
+ borderTop : `1px solid ${ theme . palette . divider } ` ,
571
+ background : theme . palette . background . paper ,
572
+ } ,
542
573
} ) )
0 commit comments