|
4 | 4 | import static io.a2a.util.AsyncUtils.createTubeConfig; |
5 | 5 | import static io.a2a.util.AsyncUtils.processor; |
6 | 6 |
|
| 7 | +import java.util.ArrayList; |
7 | 8 | import java.util.Collections; |
8 | 9 | import java.util.HashMap; |
| 10 | +import java.util.List; |
9 | 11 | import java.util.Map; |
10 | 12 | import java.util.Objects; |
11 | 13 | import java.util.concurrent.Executor; |
|
30 | 32 | import io.a2a.server.tasks.ResultAggregator; |
31 | 33 | import io.a2a.server.tasks.TaskManager; |
32 | 34 | import io.a2a.server.tasks.TaskStore; |
| 35 | +import io.a2a.spec.Artifact; |
33 | 36 | import io.a2a.spec.EventKind; |
34 | 37 | import io.a2a.spec.InternalError; |
35 | 38 | import io.a2a.spec.JSONRPCError; |
| 39 | +import io.a2a.spec.Message; |
36 | 40 | import io.a2a.spec.MessageSendParams; |
37 | 41 | import io.a2a.spec.PushNotificationConfig; |
38 | 42 | import io.a2a.spec.StreamingEventKind; |
@@ -85,6 +89,21 @@ public Task onGetTask(TaskQueryParams params) throws JSONRPCError { |
85 | 89 | log.debug("No task found for {}. Throwing TaskNotFoundError", params.id()); |
86 | 90 | throw new TaskNotFoundError(); |
87 | 91 | } |
| 92 | + if (params.historyLength() != null && task.getHistory() != null && params.historyLength() < task.getHistory().size()) { |
| 93 | + List<Message> history; |
| 94 | + if (params.historyLength() <= 0) { |
| 95 | + history = new ArrayList<>(); |
| 96 | + } else { |
| 97 | + history = task.getHistory().subList( |
| 98 | + task.getHistory().size() - params.historyLength(), |
| 99 | + task.getHistory().size() - 1); |
| 100 | + } |
| 101 | + |
| 102 | + task = new Task.Builder(task) |
| 103 | + .history(history) |
| 104 | + .build(); |
| 105 | + } |
| 106 | + |
88 | 107 | log.debug("Task found {}", task); |
89 | 108 | return task; |
90 | 109 | } |
|
0 commit comments