a2aproject / a2aproject/a2a-js

[Bug]: REST push-notification config listing ignores pageSize and pageToken

Đang mở Phù hợp với người mới
#700 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
613
Fork
169
Merge trung bình
1 ngày 6 giờ
Pull request đã merge (30 ngày)
21

Mô tả

## What happened

The REST transport silently drops `pageSize` and `pageToken` when listing push-notification configurations. A call that supplies `pageSize: 7` and `pageToken: "cursor-abc"` sends `GET /tasks/task-1/pushNotificationConfigs` with no query string. The REST server also invokes the request handler with `pageSize: 0` and an empty `pageToken` even when the HTTP request contains those query parameters, so callers cannot request a page or continue from a cursor.

## What I expected

When `pageSize` and/or `pageToken` are supplied, the REST client should transmit them as URL-encoded camelCase query parameters, and the REST server should pass those values through to `ListTaskPushNotificationConfigsRequest`. A caller should be able to retrieve a bounded page and follow the returned `nextPageToken`.

## Steps to reproduce

1. Create a `RestTransport` with a custom `fetch` implementation that records the requested URL and returns a successful JSON response.
2. Call `listTaskPushNotificationConfig({ tenant: "", taskId: "task-1", pageSize: 7, pageToken: "cursor-abc" })`.
3. Observe that the requested URL is `/tasks/task-1/pushNotificationConfigs` rather than including `?pageSize=7&pageToken=cursor-abc`.
4. Alternatively, send `GET /tasks/task-1/pushNotificationConfigs?pageSize=7&pageToken=cursor-abc` to an Express server using `restHandler` and inspect the request-handler arguments; they still contain `pageSize: 0` and `pageToken: ""`.

## Additional context

The A2A specification section 11.5 (Query Parameter Naming for Request Parameters) requires GET operation request parameters to be sent as query parameters and defines the camelCase names `pageSize` and `pageToken`: https://github.com/a2aproject/A2A/blob/main/docs/specification.md#115-query-parameter-naming-for-request-parameters

The same request fields are available through the JSON-RPC and gRPC transports, so silently ignoring them in REST makes pagination behavior differ across transports. If pagination is intentionally unsupported for this endpoint, the public REST API should document or reject those inputs instead of ignoring them.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Look at the REST transport code that handles the listTaskPushNotificationConfig call, likely in a file like src/transport/rest.ts or similar. The bug is that pageSize and pageToken parameters are not being serialized into the query string. Also check the server-side restHandler to see why it's not parsing them. The fix involves ensuring these fields are included in the URL query parameters on the client and correctly extracted on the server. Test by running the provided reproduction steps.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
express, javascript, node.js, typescript
Lĩnh vực
api, backend
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
70/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.