a2aproject / a2aproject/a2a-java

[Feat]: Simplification of the client API?

Ouverte
#517 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
490
Forks
172
Merge moyen
1 j 6 h
PR mergées (30 j)
55

Description

### Is your feature request related to a problem? Please describe.

The `client` API is a thin wrapper around the domain objects in the `spec` module.

I wonder if we could not make the API a bit simpler while retaining all the capabilities it exposes.

### Describe the solution you'd like

For example, a lot of calls wrap their parameters in `XXXParams` object:

```
public Task cancelTask(TaskIdParams request)
```

but TaskIdParams is composed of a `taskId` and a `metadata` map.
Could the call simply be:

```
public Task cancelTask(String taskId, Map metadata) {
return clientTransport.cancelTask(new TaskIdParams(taskId, metadata), request, context);
}
```

and a default method:

```
public default Task cancelTask(String taskId) {
return cancelTask(taskId, emptyMap();
}
```

This way, the `TaskIdParams` does not leak to the `Client` API (making it bigger than it needs to be.

The API is already to that for its `sendMessage` methods that hides the internal `MessageSendParams`.
This is a pattern that should be applied to other methods as well

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.