mirror of
https://github.com/openai/codex.git
synced 2026-04-25 07:05:38 +00:00
app-server: expose loaded thread status via read/list and notifications (#11786)
Motivation - Today, a newly connected client has no direct way to determine the current runtime status of threads from read/list responses alone. - This forces clients to infer state from transient events, which can lead to stale or inconsistent UI when reconnecting or attaching late. Changes - Add `status` to `thread/read` responses. - Add `statuses` to `thread/list` responses. - Emit `thread/status/changed` notifications with `threadId` and the new status. - Track runtime status for all loaded threads and default unknown threads to `idle`. - Update protocol/docs/tests/schema fixtures for the revised API. Testing - Validated protocol API changes with automated protocol tests and regenerated schema/type fixtures. - Validated app-server behavior with unit and integration test suites, including status transitions and notifications.
This commit is contained in:
committed by
GitHub
parent
216fe7f2ef
commit
1f54496c48
@@ -794,6 +794,14 @@
|
||||
],
|
||||
"description": "Origin of the thread (CLI, VSCode, codex exec, codex app-server, etc.)."
|
||||
},
|
||||
"status": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/ThreadStatus"
|
||||
}
|
||||
],
|
||||
"description": "Current runtime status for the thread."
|
||||
},
|
||||
"turns": {
|
||||
"description": "Only populated on `thread/resume`, `thread/rollback`, `thread/fork`, and `thread/read` (when `includeTurns` is true) responses. For all other responses and notifications returning a Thread, the turns field will be an empty list.",
|
||||
"items": {
|
||||
@@ -815,11 +823,19 @@
|
||||
"modelProvider",
|
||||
"preview",
|
||||
"source",
|
||||
"status",
|
||||
"turns",
|
||||
"updatedAt"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"ThreadActiveFlag": {
|
||||
"enum": [
|
||||
"waitingOnApproval",
|
||||
"waitingOnUserInput"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"ThreadId": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -1306,6 +1322,81 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"ThreadStatus": {
|
||||
"oneOf": [
|
||||
{
|
||||
"properties": {
|
||||
"type": {
|
||||
"enum": [
|
||||
"notLoaded"
|
||||
],
|
||||
"title": "NotLoadedThreadStatusType",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"title": "NotLoadedThreadStatus",
|
||||
"type": "object"
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"type": {
|
||||
"enum": [
|
||||
"idle"
|
||||
],
|
||||
"title": "IdleThreadStatusType",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"title": "IdleThreadStatus",
|
||||
"type": "object"
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"type": {
|
||||
"enum": [
|
||||
"systemError"
|
||||
],
|
||||
"title": "SystemErrorThreadStatusType",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"title": "SystemErrorThreadStatus",
|
||||
"type": "object"
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"activeFlags": {
|
||||
"items": {
|
||||
"$ref": "#/definitions/ThreadActiveFlag"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"type": {
|
||||
"enum": [
|
||||
"active"
|
||||
],
|
||||
"title": "ActiveThreadStatusType",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"activeFlags",
|
||||
"type"
|
||||
],
|
||||
"title": "ActiveThreadStatus",
|
||||
"type": "object"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Turn": {
|
||||
"properties": {
|
||||
"error": {
|
||||
|
||||
Reference in New Issue
Block a user