@@ -24,39 +24,34 @@ class A2AAgentCardPanel(
24
24
) : JPanel(BorderLayout (0, 0)) {
25
25
26
26
// Helper methods to safely access AgentCard properties
27
- // Use reflection to access Java record fields safely
27
+ // Use the new AgentCard record methods
28
28
private fun getAgentName (): String = try {
29
- getFieldValue( agentCard, " name" ) as ? String ? : " Unknown Agent"
29
+ agentCard. name() ? : " Unknown Agent"
30
30
} catch (e: Exception ) {
31
31
" Unknown Agent"
32
32
}
33
33
34
34
private fun getAgentDescription (): String = try {
35
- getFieldValue( agentCard, " description" ) as ? String ? : " No description available"
35
+ agentCard. description() ? : " No description available"
36
36
} catch (e: Exception ) {
37
37
" No description available"
38
38
}
39
39
40
40
private fun getAgentVersion (): String = try {
41
- getFieldValue( agentCard, " version" ) as ? String ? : " 1.0.0"
41
+ agentCard. version() ? : " 1.0.0"
42
42
} catch (e: Exception ) {
43
43
" 1.0.0"
44
44
}
45
45
46
46
private fun getProviderName (): String = try {
47
- val provider = getFieldValue(agentCard, " provider" )
48
- if (provider != null ) {
49
- getFieldValue(provider, " name" ) as ? String ? : " Unknown"
50
- } else {
51
- " Unknown"
52
- }
47
+ val provider = agentCard.provider()
48
+ provider?.organization() ? : " Unknown"
53
49
} catch (e: Exception ) {
54
50
" Unknown"
55
51
}
56
52
57
53
private fun getSkillsCount (): Int = try {
58
- val skills = getFieldValue(agentCard, " skills" ) as ? List <* >
59
- skills?.size ? : 0
54
+ agentCard.skills()?.size ? : 0
60
55
} catch (e: Exception ) {
61
56
0
62
57
}
@@ -198,7 +193,7 @@ class A2AAgentCardPanel(
198
193
}
199
194
200
195
private fun getAgentName (): String = try {
201
- getFieldValue( agentCard, " name" ) as ? String ? : " Unknown Agent"
196
+ agentCard. name() ? : " Unknown Agent"
202
197
} catch (e: Exception ) {
203
198
" Unknown Agent"
204
199
}
@@ -228,32 +223,35 @@ class A2AAgentCardPanel(
228
223
229
224
// Basic Information
230
225
addSectionHeader(panel, " Basic Information" )
231
- addDetailRow(panel, " Name" , getFieldValue( agentCard, " name" ) as ? String ? : " N/A" )
232
- addDetailRow(panel, " Description" , getFieldValue( agentCard, " description" ) as ? String ? : " N/A" )
233
- addDetailRow(panel, " Version" , getFieldValue( agentCard, " version" ) as ? String ? : " N/A" )
234
- addDetailRow(panel, " URL" , getFieldValue( agentCard, " url" ) as ? String ? : " N/A" )
235
- addDetailRow(panel, " Protocol Version" , getFieldValue( agentCard, " protocolVersion" ) as ? String ? : " N/A" )
226
+ addDetailRow(panel, " Name" , agentCard. name() ? : " N/A" )
227
+ addDetailRow(panel, " Description" , agentCard. description() ? : " N/A" )
228
+ addDetailRow(panel, " Version" , agentCard. version() ? : " N/A" )
229
+ addDetailRow(panel, " URL" , agentCard. url() ? : " N/A" )
230
+ addDetailRow(panel, " Protocol Version" , agentCard. protocolVersion() ? : " N/A" )
236
231
237
232
// Provider Information
238
- val provider = getFieldValue( agentCard, " provider" )
233
+ val provider = agentCard. provider( )
239
234
if (provider != null ) {
240
235
addSectionHeader(panel, " Provider" )
241
- addDetailRow(panel, " Name" , getFieldValue(provider, " name" ) as ? String ? : " N/A" )
242
- addDetailRow(panel, " Description" , getFieldValue(provider, " description" ) as ? String ? : " N/A" )
243
- addDetailRow(panel, " URL" , getFieldValue(provider, " url" ) as ? String ? : " N/A" )
236
+ try {
237
+ addDetailRow(panel, " Organization" , provider.organization() ? : " N/A" )
238
+ addDetailRow(panel, " URL" , provider.url() ? : " N/A" )
239
+ } catch (e: Exception ) {
240
+ addDetailRow(panel, " Provider" , provider.toString())
241
+ }
244
242
}
245
243
246
244
// Capabilities
247
- val capabilities = getFieldValue( agentCard, " capabilities" )
245
+ val capabilities = agentCard. capabilities( )
248
246
if (capabilities != null ) {
249
247
addSectionHeader(panel, " Capabilities" )
250
- addDetailRow(panel, " Supports Streaming" , getFieldValue( capabilities, " supportsStreaming " )?.toString() ? : " N/A" )
251
- addDetailRow(panel, " Supports Tools " , getFieldValue( capabilities, " supportsTools " )?.toString() ? : " N/A" )
252
- addDetailRow(panel, " Supports Resources " , getFieldValue( capabilities, " supportsResources " )?.toString() ? : " N/A" )
248
+ addDetailRow(panel, " Supports Streaming" , capabilities.streaming( )?.toString() ? : " N/A" )
249
+ addDetailRow(panel, " Push Notifications " , capabilities.pushNotifications( )?.toString() ? : " N/A" )
250
+ addDetailRow(panel, " State Transition History " , capabilities.stateTransitionHistory( )?.toString() ? : " N/A" )
253
251
}
254
252
255
253
// Skills
256
- val skills = getFieldValue( agentCard, " skills" ) as ? List < * >
254
+ val skills = agentCard. skills()
257
255
if (! skills.isNullOrEmpty()) {
258
256
addSectionHeader(panel, " Skills (${skills.size} )" )
259
257
skills.forEach { skill ->
@@ -265,17 +263,17 @@ class A2AAgentCardPanel(
265
263
266
264
// Input/Output Modes
267
265
addSectionHeader(panel, " Input/Output Modes" )
268
- val inputModes = getFieldValue( agentCard, " defaultInputModes" ) as ? List < * >
269
- val outputModes = getFieldValue( agentCard, " defaultOutputModes" ) as ? List < * >
266
+ val inputModes = agentCard. defaultInputModes()
267
+ val outputModes = agentCard. defaultOutputModes()
270
268
addDetailRow(panel, " Default Input Modes" , inputModes?.joinToString(" , " ) ? : " N/A" )
271
269
addDetailRow(panel, " Default Output Modes" , outputModes?.joinToString(" , " ) ? : " N/A" )
272
270
273
271
// Additional Information
274
272
addSectionHeader(panel, " Additional Information" )
275
- addDetailRow(panel, " Documentation URL" , getFieldValue( agentCard, " documentationUrl" ) as ? String ? : " N/A" )
276
- addDetailRow(panel, " Icon URL" , getFieldValue( agentCard, " iconUrl" ) as ? String ? : " N/A" )
277
- addDetailRow(panel, " Preferred Transport" , getFieldValue( agentCard, " preferredTransport" ) as ? String ? : " N/A" )
278
- addDetailRow(panel, " Supports Auth Extended Card" , getFieldValue( agentCard, " supportsAuthenticatedExtendedCard" )?.toString() ? : " N/A" )
273
+ addDetailRow(panel, " Documentation URL" , agentCard. documentationUrl() ? : " N/A" )
274
+ addDetailRow(panel, " Icon URL" , agentCard. iconUrl() ? : " N/A" )
275
+ addDetailRow(panel, " Preferred Transport" , agentCard. preferredTransport() ? : " N/A" )
276
+ addDetailRow(panel, " Supports Auth Extended Card" , agentCard. supportsAuthenticatedExtendedCard( )?.toString() ? : " N/A" )
279
277
280
278
return panel
281
279
}
@@ -320,8 +318,32 @@ class A2AAgentCardPanel(
320
318
isOpaque = true
321
319
}
322
320
323
- val skillName = getFieldValue(skill, " name" ) as ? String ? : " Unnamed Skill"
324
- val skillDesc = getFieldValue(skill, " description" ) as ? String ? : " No description"
321
+ // Try to access skill properties using the new API
322
+ val skillName = try {
323
+ when {
324
+ skill.javaClass.simpleName == " AgentSkill" -> {
325
+ // Use reflection for AgentSkill record methods
326
+ val nameMethod = skill.javaClass.getMethod(" name" )
327
+ nameMethod.invoke(skill) as ? String ? : " Unnamed Skill"
328
+ }
329
+ else -> getFieldValue(skill, " name" ) as ? String ? : " Unnamed Skill"
330
+ }
331
+ } catch (e: Exception ) {
332
+ " Unnamed Skill"
333
+ }
334
+
335
+ val skillDesc = try {
336
+ when {
337
+ skill.javaClass.simpleName == " AgentSkill" -> {
338
+ // Use reflection for AgentSkill record methods
339
+ val descMethod = skill.javaClass.getMethod(" description" )
340
+ descMethod.invoke(skill) as ? String ? : " No description"
341
+ }
342
+ else -> getFieldValue(skill, " description" ) as ? String ? : " No description"
343
+ }
344
+ } catch (e: Exception ) {
345
+ " No description"
346
+ }
325
347
326
348
val nameLabel = JBLabel (" • $skillName " ).apply {
327
349
font = JBUI .Fonts .label(12.0f ).asBold()
@@ -358,7 +380,7 @@ class A2AAgentCardPanel(
358
380
}
359
381
360
382
private fun getAgentName (): String = try {
361
- getFieldValue( agentCard, " name" ) as ? String ? : " Unknown Agent"
383
+ agentCard. name() ? : " Unknown Agent"
362
384
} catch (e: Exception ) {
363
385
" Unknown Agent"
364
386
}
0 commit comments