Files
codex/codex-rs/app-server-protocol/schema/json/v2/ThreadItemsListParams.json
T
Brent Traut e7f32cf192 Add experimental command output deferral to thread item listings (#59601)
## What changed

Allow experimental clients to request `deferOutput: {"commandExecution": true}` in `thread/items/list` for a specific `turnId`. Completed commands with a recorded completion time, exit code zero, and nonempty saved output return `outputDeferred: true` and `item.aggregatedOutput: null`. Clients can retrieve the complete output through `thread/items/read` using the turn and item IDs.

Keep full output by default and for listings across turns. Make conversion from `ThreadItemEntry` to `ThreadItem` fallible so Rust consumers detect deferred output instead of treating an incomplete item as complete.

## Testing

Add integration coverage for experimental capability gating, default and disabled options, command status and output eligibility, listings across turns, deferred-item conversion, and full output retrieval by item ID.

GitOrigin-RevId: d6bfac34bb68f7e3b327fd5553270ed6d0fe87cf
2026-11-05 08:10:44 +00:00

111 lines
2.6 KiB
JSON
Generated

{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"SortDirection": {
"enum": [
"asc",
"desc"
],
"type": "string"
},
"ThreadItemOutputDeferral": {
"properties": {},
"type": "object"
},
"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."
},
"deferOutput": {
"anyOf": [
{
"$ref": "#/definitions/ThreadItemOutputDeferral"
},
{
"type": "null"
}
],
"description": "For a single turn, choose which saved outputs to fetch separately by item ID."
},
"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"
}