Files
codex/codex-rs/app-server-protocol/schema/json/v2/ThreadAttachmentListResponse.json
joeytrasatti-openai 3319d9b296 Add app-server APIs for stored thread attachments (#44564)
## What changed

- Add `thread/attachment/add`, `thread/attachment/list`, and `thread/attachment/remove` to manage durable resource references without loading the owning thread or changing conversation history.
- Identify attachments by thread, `attachmentType`, and `identityKey`. Repeated adds return the existing attachment; repeated removals succeed without emitting another update. Listing supports cursor pagination.
- Broadcast `thread/attachment/updated` after creation or deletion, after responding to the requester. Serialize attachment mutations with thread lifecycle operations and reject stores that do not support attachments.
- Update protocol schemas, TypeScript and Python bindings, documentation, and TUI notification handling so attachment updates do not add untracked threads to the agent picker.

## Testing

Add coverage for unloaded threads, pagination, idempotent addition and removal, reattachment, invalid inputs, unsupported stores, response-before-notification ordering across clients, and TUI notification routing.

GitOrigin-RevId: 0d29cf903afd4e931a70a9cf96300475213b34aa
2026-09-10 15:52:09 +00:00

52 lines
1.1 KiB
JSON
Generated

{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"ThreadAttachment": {
"description": "An independently persisted attachment associated with a thread.",
"properties": {
"attachmentType": {
"type": "string"
},
"createdAt": {
"format": "int64",
"type": "integer"
},
"id": {
"type": "string"
},
"identityKey": {
"type": "string"
},
"payload": true
},
"required": [
"attachmentType",
"createdAt",
"id",
"identityKey",
"payload"
],
"type": "object"
}
},
"description": "One page of attachments associated with the requested thread.",
"properties": {
"data": {
"items": {
"$ref": "#/definitions/ThreadAttachment"
},
"type": "array"
},
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"data"
],
"title": "ThreadAttachmentListResponse",
"type": "object"
}