mirror of
https://github.com/openai/codex.git
synced 2026-10-19 17:28:46 +00:00
## What changed
Allow `cursor` to accept an item anchor such as `{"type":"item","itemId":"item-123"}` with a non-empty `turnId`. Ascending pagination returns items after the anchor; descending pagination returns items before it. The anchor itself is excluded, and subsequent pages use the returned opaque string cursor.
Resolve anchors within the requested turn's visible history, including inherited fork history. Reject missing turn IDs and empty, unknown, or out-of-scope item IDs with invalid params (`-32602`). Preserve existing string and null cursor behavior, and update the protocol schemas, TypeScript and Python types, and API documentation.
## Testing
Add protocol round-trip and invalid-shape tests, app-server coverage for anchored pagination and errors, and thread-store coverage for growing turns, reverse pagination, page boundaries, fork visibility, and anchor scope validation.
GitOrigin-RevId: a74cea190d3ff1b44865429f8b0650b793eb688d
96 lines
2.2 KiB
JSON
Generated
96 lines
2.2 KiB
JSON
Generated
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"SortDirection": {
|
|
"enum": [
|
|
"asc",
|
|
"desc"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ThreadItemsListAnchor": {
|
|
"description": "An exclusive item position within the requested visible turn.",
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"itemId": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"item"
|
|
],
|
|
"title": "ItemThreadItemsListAnchorType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"itemId",
|
|
"type"
|
|
],
|
|
"title": "ItemThreadItemsListAnchor",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"ThreadItemsListCursor": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/ThreadItemsListAnchor"
|
|
}
|
|
],
|
|
"description": "Starting position for an item-history page."
|
|
}
|
|
},
|
|
"properties": {
|
|
"cursor": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ThreadItemsListCursor"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Opaque continuation cursor or an exclusive item anchor in the requested visible turn. An item anchor requires a non-empty `turnId`; ascending (the default) returns items after it, and descending returns items before it. Continue with the returned string cursor."
|
|
},
|
|
"limit": {
|
|
"description": "Optional item page size.",
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"sortDirection": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SortDirection"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Optional item pagination direction; defaults to ascending."
|
|
},
|
|
"threadId": {
|
|
"type": "string"
|
|
},
|
|
"turnId": {
|
|
"description": "Optional turn id to filter by. When omitted, returns items across the thread.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"threadId"
|
|
],
|
|
"title": "ThreadItemsListParams",
|
|
"type": "object"
|
|
} |