From 41ca88e95c6c194dbac17dd16a819808ea1a0917 Mon Sep 17 00:00:00 2001 From: guinness-oai Date: Tue, 25 Aug 2026 00:52:13 +0000 Subject: [PATCH] Persist realtime events in the thread timeline (#40508) ## Why Clients need a bounded view of realtime conversations that preserves the order of speech, agent work, and turn lifecycle events without loading the full thread history. ## What changed - Persist realtime session boundaries, transcript segments, and promoted agent items in paginated thread rollouts. - Add the experimental `thread/timeline/list` API to page ordinary items, realtime items, and turn boundaries in canonical rollout order. Include `activeRealtimeSessionAtPageStart` so each page can be rendered independently. - Emit typed `thread/realtime/item/started`, `thread/realtime/item/transcript/delta`, and `thread/realtime/item/completed` notifications around durable realtime items. - Keep the existing `thread/items/list` response and legacy thread history behavior unchanged. ## Testing - Cover mixed timeline pagination, realtime-session state at page boundaries, rollout replay, subagent history prefixes, transcript streaming, steering, and promoted agent artifacts. GitOrigin-RevId: faa2c420192d63e060e8fb32446e3c797422656e --- .../schema/json/ServerNotification.json | 291 ++++++++++ .../codex_app_server_protocol.schemas.json | 452 +++++++++++++++ .../codex_app_server_protocol.v2.schemas.json | 452 +++++++++++++++ ...readRealtimeItemCompletedNotification.json | 199 +++++++ ...ThreadRealtimeItemStartedNotification.json | 199 +++++++ ...altimeItemTranscriptDeltaNotification.json | 22 + .../app-server-exports-experimental.json.zst | Bin 143106 -> 145055 bytes .../app-server-exports-stable.json.zst | Bin 137617 -> 139385 bytes .../schema/typescript/ServerNotification.ts | 5 +- .../typescript/ServerNotificationEnvelope.ts | 5 +- .../v2/ThreadRealtimeBemItemPresentation.ts | 8 + .../typescript/v2/ThreadRealtimeItem.ts | 11 + ...ThreadRealtimeItemCompletedNotification.ts | 9 + .../ThreadRealtimeItemStartedNotification.ts | 9 + ...RealtimeItemTranscriptDeltaNotification.ts | 8 + .../v2/ThreadRealtimeSessionOutcome.ts | 5 + .../v2/ThreadRealtimeTranscriptRole.ts | 5 + .../typescript/v2/ThreadTimelineEntry.ts | 12 + .../schema/typescript/v2/index.ts | 8 + .../src/protocol/common.rs | 12 + .../src/protocol/thread_history.rs | 1 + .../src/protocol/thread_history_projection.rs | 1 + .../src/protocol/v2/realtime.rs | 156 +++++ .../src/protocol/v2/thread.rs | 72 +++ codex-rs/app-server/README.md | 8 +- codex-rs/app-server/src/lib.rs | 2 + codex-rs/app-server/src/message_processor.rs | 3 + .../app-server/src/realtime_event_handling.rs | 91 +++ codex-rs/app-server/src/realtime_history.rs | 534 +++++++++++++++++ .../app-server/src/realtime_history_tests.rs | 541 ++++++++++++++++++ codex-rs/app-server/src/request_processors.rs | 3 + .../request_processors/thread_lifecycle.rs | 58 +- .../request_processors/thread_processor.rs | 29 + .../src/request_processors/turn_processor.rs | 49 +- codex-rs/app-server/src/thread_state.rs | 7 + .../tests/common/test_app_server.rs | 9 + codex-rs/app-server/tests/suite/v2/mod.rs | 1 + .../tests/suite/v2/realtime_conversation.rs | 365 +++++++++++- .../tests/suite/v2/thread_timeline.rs | 224 ++++++++ codex-rs/core/src/agent/control/spawn.rs | 4 +- codex-rs/core/src/agent/control_tests.rs | 1 + .../src/session/rollout_reconstruction.rs | 3 + codex-rs/core/src/session/session.rs | 1 + codex-rs/core/src/session/tests.rs | 2 + .../src/sessions/append.rs | 5 +- codex-rs/history/src/lib.rs | 8 +- codex-rs/history/src/rollout_payload.rs | 8 + codex-rs/history/src/tests.rs | 12 +- codex-rs/memories/write/src/phase1.rs | 1 + codex-rs/protocol/src/lib.rs | 1 + codex-rs/protocol/src/realtime.rs | 59 ++ codex-rs/rollout/src/list.rs | 5 + codex-rs/rollout/src/metadata.rs | 2 + codex-rs/rollout/src/model_context.rs | 1 + codex-rs/rollout/src/persistence_metrics.rs | 14 + codex-rs/rollout/src/policy.rs | 1 + codex-rs/rollout/src/recorder.rs | 1 + codex-rs/rollout/src/search.rs | 1 + codex-rs/state/src/extract.rs | 2 + codex-rs/state/src/migrations_tests.rs | 103 ++++ codex-rs/state/src/runtime/threads.rs | 1 + .../0005_thread_realtime_items.sql | 22 + .../0006_thread_turn_ends.sql | 3 + codex-rs/thread-store/src/lib.rs | 2 + .../thread-store/src/local/delete_thread.rs | 26 +- codex-rs/thread-store/src/local/mod.rs | 14 + .../src/local/rollout_migration.rs | 30 +- .../local/rollout_migration/canonicalizer.rs | 1 + .../local/rollout_migration/rollback_plan.rs | 2 +- .../rollout_migration/rollback_replay.rs | 1 + .../thread-store/src/local/thread_history.rs | 40 +- .../src/local/thread_history/read_tests.rs | 386 +++++++++++++ .../src/local/thread_history/realtime.rs | 246 ++++++++ .../local/thread_history_materialization.rs | 27 +- .../thread_history_materialization_tests.rs | 243 +++++++- codex-rs/thread-store/src/store.rs | 12 + .../thread-store/src/thread_metadata_sync.rs | 1 + codex-rs/thread-store/src/types.rs | 17 + .../tui/src/app/app_server_event_targets.rs | 9 + codex-rs/tui/src/chatwidget/protocol.rs | 3 + 80 files changed, 5140 insertions(+), 47 deletions(-) create mode 100644 codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemCompletedNotification.json create mode 100644 codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemStartedNotification.json create mode 100644 codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemTranscriptDeltaNotification.json create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeBemItemPresentation.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeItem.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeItemCompletedNotification.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeItemStartedNotification.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeItemTranscriptDeltaNotification.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeSessionOutcome.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadRealtimeTranscriptRole.ts create mode 100644 codex-rs/app-server-protocol/schema/typescript/v2/ThreadTimelineEntry.ts create mode 100644 codex-rs/app-server/src/realtime_event_handling.rs create mode 100644 codex-rs/app-server/src/realtime_history.rs create mode 100644 codex-rs/app-server/src/realtime_history_tests.rs create mode 100644 codex-rs/app-server/tests/suite/v2/thread_timeline.rs create mode 100644 codex-rs/protocol/src/realtime.rs create mode 100644 codex-rs/state/thread_history_migrations/0005_thread_realtime_items.sql create mode 100644 codex-rs/state/thread_history_migrations/0006_thread_turn_ends.sql create mode 100644 codex-rs/thread-store/src/local/thread_history/realtime.rs diff --git a/codex-rs/app-server-protocol/schema/json/ServerNotification.json b/codex-rs/app-server-protocol/schema/json/ServerNotification.json index 6772a70680..50dc26a8eb 100644 --- a/codex-rs/app-server-protocol/schema/json/ServerNotification.json +++ b/codex-rs/app-server-protocol/schema/json/ServerNotification.json @@ -5060,6 +5060,65 @@ ], "type": "object" }, + "ThreadRealtimeBemItemPresentation": { + "description": "EXPERIMENTAL - how an existing agent item appears in a realtime conversation.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "wholeItem" + ], + "title": "WholeItemThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "WholeItemThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "type": { + "enum": [ + "inlineMarkdown" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "index": { + "format": "uint32", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "inlineVisualization" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "index", + "type" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentation", + "type": "object" + } + ] + }, "ThreadRealtimeClosedNotification": { "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", "properties": { @@ -5094,6 +5153,112 @@ ], "type": "object" }, + "ThreadRealtimeItem": { + "description": "EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "realtimeSessionStarted" + ], + "title": "RealtimeSessionStartedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "RealtimeSessionStartedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "role": { + "$ref": "#/definitions/ThreadRealtimeTranscriptRole" + }, + "text": { + "type": "string" + }, + "type": { + "enum": [ + "transcriptSegment" + ], + "title": "TranscriptSegmentThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "role", + "text", + "type" + ], + "title": "TranscriptSegmentThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "item_id": { + "type": "string" + }, + "presentation": { + "$ref": "#/definitions/ThreadRealtimeBemItemPresentation" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "bemItemPromoted" + ], + "title": "BemItemPromotedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "item_id", + "presentation", + "turn_id", + "type" + ], + "title": "BemItemPromotedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "outcome": { + "$ref": "#/definitions/ThreadRealtimeSessionOutcome" + }, + "type": { + "enum": [ + "realtimeSessionClosed" + ], + "title": "RealtimeSessionClosedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "outcome", + "type" + ], + "title": "RealtimeSessionClosedThreadRealtimeItem", + "type": "object" + } + ], + "properties": { + "id": { + "type": "string" + }, + "realtimeSessionId": { + "type": "string" + } + }, + "required": [ + "id", + "realtimeSessionId" + ], + "type": "object" + }, "ThreadRealtimeItemAddedNotification": { "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", "properties": { @@ -5108,6 +5273,58 @@ ], "type": "object" }, + "ThreadRealtimeItemCompletedNotification": { + "description": "EXPERIMENTAL - a realtime timeline item published after canonical commit.", + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "type": "object" + }, + "ThreadRealtimeItemStartedNotification": { + "description": "EXPERIMENTAL - a realtime timeline item started before its content streams.", + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "type": "object" + }, + "ThreadRealtimeItemTranscriptDeltaNotification": { + "description": "EXPERIMENTAL - text appended to an active realtime transcript item.", + "properties": { + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "delta", + "itemId", + "threadId" + ], + "type": "object" + }, "ThreadRealtimeOutputAudioDeltaNotification": { "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", "properties": { @@ -5140,6 +5357,13 @@ ], "type": "object" }, + "ThreadRealtimeSessionOutcome": { + "enum": [ + "ended", + "failed" + ], + "type": "string" + }, "ThreadRealtimeStartedNotification": { "description": "EXPERIMENTAL - emitted when thread realtime startup is accepted.", "properties": { @@ -5204,6 +5428,13 @@ ], "type": "object" }, + "ThreadRealtimeTranscriptRole": { + "enum": [ + "user", + "assistant" + ], + "type": "string" + }, "ThreadRevertedNotification": { "properties": { "threadId": { @@ -7504,6 +7735,66 @@ "title": "Thread/realtime/itemAddedNotification", "type": "object" }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/started" + ], + "title": "Thread/realtime/item/startedNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/ThreadRealtimeItemStartedNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/startedNotification", + "type": "object" + }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/transcript/delta" + ], + "title": "Thread/realtime/item/transcript/deltaNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/ThreadRealtimeItemTranscriptDeltaNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/transcript/deltaNotification", + "type": "object" + }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/completed" + ], + "title": "Thread/realtime/item/completedNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/ThreadRealtimeItemCompletedNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/completedNotification", + "type": "object" + }, { "properties": { "method": { diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json index e20a9351c6..55d8b4749b 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json @@ -5683,6 +5683,66 @@ "title": "Thread/realtime/itemAddedNotification", "type": "object" }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/started" + ], + "title": "Thread/realtime/item/startedNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/v2/ThreadRealtimeItemStartedNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/startedNotification", + "type": "object" + }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/transcript/delta" + ], + "title": "Thread/realtime/item/transcript/deltaNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/v2/ThreadRealtimeItemTranscriptDeltaNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/transcript/deltaNotification", + "type": "object" + }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/completed" + ], + "title": "Thread/realtime/item/completedNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/v2/ThreadRealtimeItemCompletedNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/completedNotification", + "type": "object" + }, { "properties": { "method": { @@ -21518,6 +21578,65 @@ ], "type": "object" }, + "ThreadRealtimeBemItemPresentation": { + "description": "EXPERIMENTAL - how an existing agent item appears in a realtime conversation.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "wholeItem" + ], + "title": "WholeItemThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "WholeItemThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "type": { + "enum": [ + "inlineMarkdown" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "index": { + "format": "uint32", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "inlineVisualization" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "index", + "type" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentation", + "type": "object" + } + ] + }, "ThreadRealtimeClosedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", @@ -21572,6 +21691,112 @@ ], "type": "object" }, + "ThreadRealtimeItem": { + "description": "EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "realtimeSessionStarted" + ], + "title": "RealtimeSessionStartedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "RealtimeSessionStartedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "role": { + "$ref": "#/definitions/v2/ThreadRealtimeTranscriptRole" + }, + "text": { + "type": "string" + }, + "type": { + "enum": [ + "transcriptSegment" + ], + "title": "TranscriptSegmentThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "role", + "text", + "type" + ], + "title": "TranscriptSegmentThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "item_id": { + "type": "string" + }, + "presentation": { + "$ref": "#/definitions/v2/ThreadRealtimeBemItemPresentation" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "bemItemPromoted" + ], + "title": "BemItemPromotedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "item_id", + "presentation", + "turn_id", + "type" + ], + "title": "BemItemPromotedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "outcome": { + "$ref": "#/definitions/v2/ThreadRealtimeSessionOutcome" + }, + "type": { + "enum": [ + "realtimeSessionClosed" + ], + "title": "RealtimeSessionClosedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "outcome", + "type" + ], + "title": "RealtimeSessionClosedThreadRealtimeItem", + "type": "object" + } + ], + "properties": { + "id": { + "type": "string" + }, + "realtimeSessionId": { + "type": "string" + } + }, + "required": [ + "id", + "realtimeSessionId" + ], + "type": "object" + }, "ThreadRealtimeItemAddedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", @@ -21588,6 +21813,64 @@ "title": "ThreadRealtimeItemAddedNotification", "type": "object" }, + "ThreadRealtimeItemCompletedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - a realtime timeline item published after canonical commit.", + "properties": { + "item": { + "$ref": "#/definitions/v2/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "title": "ThreadRealtimeItemCompletedNotification", + "type": "object" + }, + "ThreadRealtimeItemStartedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - a realtime timeline item started before its content streams.", + "properties": { + "item": { + "$ref": "#/definitions/v2/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "title": "ThreadRealtimeItemStartedNotification", + "type": "object" + }, + "ThreadRealtimeItemTranscriptDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - text appended to an active realtime transcript item.", + "properties": { + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "delta", + "itemId", + "threadId" + ], + "title": "ThreadRealtimeItemTranscriptDeltaNotification", + "type": "object" + }, "ThreadRealtimeOutputAudioDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", @@ -21624,6 +21907,13 @@ "title": "ThreadRealtimeSdpNotification", "type": "object" }, + "ThreadRealtimeSessionOutcome": { + "enum": [ + "ended", + "failed" + ], + "type": "string" + }, "ThreadRealtimeStartTransport": { "description": "EXPERIMENTAL - transport used by thread realtime.", "oneOf": [ @@ -21757,6 +22047,13 @@ "title": "ThreadRealtimeTranscriptDoneNotification", "type": "object" }, + "ThreadRealtimeTranscriptRole": { + "enum": [ + "user", + "assistant" + ], + "type": "string" + }, "ThreadResumeInitialTurnsPageParams": { "properties": { "itemsView": { @@ -22752,6 +23049,161 @@ "title": "ThreadStatusChangedNotification", "type": "object" }, + "ThreadTimelineEntry": { + "description": "EXPERIMENTAL - one item or turn boundary in canonical rollout order.", + "oneOf": [ + { + "properties": { + "item": { + "$ref": "#/definitions/v2/ThreadItem" + }, + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "turnId": { + "type": "string" + }, + "type": { + "enum": [ + "item" + ], + "title": "ItemThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "item", + "position", + "turnId", + "type" + ], + "title": "ItemThreadTimelineEntry", + "type": "object" + }, + { + "properties": { + "item": { + "$ref": "#/definitions/v2/ThreadRealtimeItem" + }, + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "realtime" + ], + "title": "RealtimeThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "item", + "position", + "type" + ], + "title": "RealtimeThreadTimelineEntry", + "type": "object" + }, + { + "properties": { + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "started_at": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "turnStarted" + ], + "title": "TurnStartedThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "position", + "turn_id", + "type" + ], + "title": "TurnStartedThreadTimelineEntry", + "type": "object" + }, + { + "properties": { + "completed_at": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "duration_ms": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "error": { + "anyOf": [ + { + "$ref": "#/definitions/v2/TurnError" + }, + { + "type": "null" + } + ] + }, + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "started_at": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "status": { + "$ref": "#/definitions/v2/TurnStatus" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "turnCompleted" + ], + "title": "TurnCompletedThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "position", + "status", + "turn_id", + "type" + ], + "title": "TurnCompletedThreadTimelineEntry", + "type": "object" + } + ] + }, "ThreadTokenUsage": { "properties": { "last": { diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json index 6afde55a16..5d6b9441a8 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json @@ -16424,6 +16424,66 @@ "title": "Thread/realtime/itemAddedNotification", "type": "object" }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/started" + ], + "title": "Thread/realtime/item/startedNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/ThreadRealtimeItemStartedNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/startedNotification", + "type": "object" + }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/transcript/delta" + ], + "title": "Thread/realtime/item/transcript/deltaNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/ThreadRealtimeItemTranscriptDeltaNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/transcript/deltaNotification", + "type": "object" + }, + { + "properties": { + "method": { + "enum": [ + "thread/realtime/item/completed" + ], + "title": "Thread/realtime/item/completedNotificationMethod", + "type": "string" + }, + "params": { + "$ref": "#/definitions/ThreadRealtimeItemCompletedNotification" + } + }, + "required": [ + "method", + "params" + ], + "title": "Thread/realtime/item/completedNotification", + "type": "object" + }, { "properties": { "method": { @@ -19270,6 +19330,65 @@ ], "type": "object" }, + "ThreadRealtimeBemItemPresentation": { + "description": "EXPERIMENTAL - how an existing agent item appears in a realtime conversation.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "wholeItem" + ], + "title": "WholeItemThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "WholeItemThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "type": { + "enum": [ + "inlineMarkdown" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "index": { + "format": "uint32", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "inlineVisualization" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "index", + "type" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentation", + "type": "object" + } + ] + }, "ThreadRealtimeClosedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "description": "EXPERIMENTAL - emitted when thread realtime transport closes.", @@ -19324,6 +19443,112 @@ ], "type": "object" }, + "ThreadRealtimeItem": { + "description": "EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "realtimeSessionStarted" + ], + "title": "RealtimeSessionStartedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "RealtimeSessionStartedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "role": { + "$ref": "#/definitions/ThreadRealtimeTranscriptRole" + }, + "text": { + "type": "string" + }, + "type": { + "enum": [ + "transcriptSegment" + ], + "title": "TranscriptSegmentThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "role", + "text", + "type" + ], + "title": "TranscriptSegmentThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "item_id": { + "type": "string" + }, + "presentation": { + "$ref": "#/definitions/ThreadRealtimeBemItemPresentation" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "bemItemPromoted" + ], + "title": "BemItemPromotedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "item_id", + "presentation", + "turn_id", + "type" + ], + "title": "BemItemPromotedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "outcome": { + "$ref": "#/definitions/ThreadRealtimeSessionOutcome" + }, + "type": { + "enum": [ + "realtimeSessionClosed" + ], + "title": "RealtimeSessionClosedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "outcome", + "type" + ], + "title": "RealtimeSessionClosedThreadRealtimeItem", + "type": "object" + } + ], + "properties": { + "id": { + "type": "string" + }, + "realtimeSessionId": { + "type": "string" + } + }, + "required": [ + "id", + "realtimeSessionId" + ], + "type": "object" + }, "ThreadRealtimeItemAddedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "description": "EXPERIMENTAL - raw non-audio thread realtime item emitted by the backend.", @@ -19340,6 +19565,64 @@ "title": "ThreadRealtimeItemAddedNotification", "type": "object" }, + "ThreadRealtimeItemCompletedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - a realtime timeline item published after canonical commit.", + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "title": "ThreadRealtimeItemCompletedNotification", + "type": "object" + }, + "ThreadRealtimeItemStartedNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - a realtime timeline item started before its content streams.", + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "title": "ThreadRealtimeItemStartedNotification", + "type": "object" + }, + "ThreadRealtimeItemTranscriptDeltaNotification": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - text appended to an active realtime transcript item.", + "properties": { + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "delta", + "itemId", + "threadId" + ], + "title": "ThreadRealtimeItemTranscriptDeltaNotification", + "type": "object" + }, "ThreadRealtimeOutputAudioDeltaNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "description": "EXPERIMENTAL - streamed output audio emitted by thread realtime.", @@ -19376,6 +19659,13 @@ "title": "ThreadRealtimeSdpNotification", "type": "object" }, + "ThreadRealtimeSessionOutcome": { + "enum": [ + "ended", + "failed" + ], + "type": "string" + }, "ThreadRealtimeStartTransport": { "description": "EXPERIMENTAL - transport used by thread realtime.", "oneOf": [ @@ -19509,6 +19799,13 @@ "title": "ThreadRealtimeTranscriptDoneNotification", "type": "object" }, + "ThreadRealtimeTranscriptRole": { + "enum": [ + "user", + "assistant" + ], + "type": "string" + }, "ThreadResumeInitialTurnsPageParams": { "properties": { "itemsView": { @@ -20504,6 +20801,161 @@ "title": "ThreadStatusChangedNotification", "type": "object" }, + "ThreadTimelineEntry": { + "description": "EXPERIMENTAL - one item or turn boundary in canonical rollout order.", + "oneOf": [ + { + "properties": { + "item": { + "$ref": "#/definitions/ThreadItem" + }, + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "turnId": { + "type": "string" + }, + "type": { + "enum": [ + "item" + ], + "title": "ItemThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "item", + "position", + "turnId", + "type" + ], + "title": "ItemThreadTimelineEntry", + "type": "object" + }, + { + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "realtime" + ], + "title": "RealtimeThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "item", + "position", + "type" + ], + "title": "RealtimeThreadTimelineEntry", + "type": "object" + }, + { + "properties": { + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "started_at": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "turnStarted" + ], + "title": "TurnStartedThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "position", + "turn_id", + "type" + ], + "title": "TurnStartedThreadTimelineEntry", + "type": "object" + }, + { + "properties": { + "completed_at": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "duration_ms": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "error": { + "anyOf": [ + { + "$ref": "#/definitions/TurnError" + }, + { + "type": "null" + } + ] + }, + "position": { + "format": "uint64", + "minimum": 0.0, + "type": "integer" + }, + "started_at": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "status": { + "$ref": "#/definitions/TurnStatus" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "turnCompleted" + ], + "title": "TurnCompletedThreadTimelineEntryType", + "type": "string" + } + }, + "required": [ + "position", + "status", + "turn_id", + "type" + ], + "title": "TurnCompletedThreadTimelineEntry", + "type": "object" + } + ] + }, "ThreadTokenUsage": { "properties": { "last": { diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemCompletedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemCompletedNotification.json new file mode 100644 index 0000000000..b24e3169ef --- /dev/null +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemCompletedNotification.json @@ -0,0 +1,199 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "ThreadRealtimeBemItemPresentation": { + "description": "EXPERIMENTAL - how an existing agent item appears in a realtime conversation.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "wholeItem" + ], + "title": "WholeItemThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "WholeItemThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "type": { + "enum": [ + "inlineMarkdown" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "index": { + "format": "uint32", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "inlineVisualization" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "index", + "type" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentation", + "type": "object" + } + ] + }, + "ThreadRealtimeItem": { + "description": "EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "realtimeSessionStarted" + ], + "title": "RealtimeSessionStartedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "RealtimeSessionStartedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "role": { + "$ref": "#/definitions/ThreadRealtimeTranscriptRole" + }, + "text": { + "type": "string" + }, + "type": { + "enum": [ + "transcriptSegment" + ], + "title": "TranscriptSegmentThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "role", + "text", + "type" + ], + "title": "TranscriptSegmentThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "item_id": { + "type": "string" + }, + "presentation": { + "$ref": "#/definitions/ThreadRealtimeBemItemPresentation" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "bemItemPromoted" + ], + "title": "BemItemPromotedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "item_id", + "presentation", + "turn_id", + "type" + ], + "title": "BemItemPromotedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "outcome": { + "$ref": "#/definitions/ThreadRealtimeSessionOutcome" + }, + "type": { + "enum": [ + "realtimeSessionClosed" + ], + "title": "RealtimeSessionClosedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "outcome", + "type" + ], + "title": "RealtimeSessionClosedThreadRealtimeItem", + "type": "object" + } + ], + "properties": { + "id": { + "type": "string" + }, + "realtimeSessionId": { + "type": "string" + } + }, + "required": [ + "id", + "realtimeSessionId" + ], + "type": "object" + }, + "ThreadRealtimeSessionOutcome": { + "enum": [ + "ended", + "failed" + ], + "type": "string" + }, + "ThreadRealtimeTranscriptRole": { + "enum": [ + "user", + "assistant" + ], + "type": "string" + } + }, + "description": "EXPERIMENTAL - a realtime timeline item published after canonical commit.", + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "title": "ThreadRealtimeItemCompletedNotification", + "type": "object" +} \ No newline at end of file diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemStartedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemStartedNotification.json new file mode 100644 index 0000000000..74971aa932 --- /dev/null +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemStartedNotification.json @@ -0,0 +1,199 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "ThreadRealtimeBemItemPresentation": { + "description": "EXPERIMENTAL - how an existing agent item appears in a realtime conversation.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "wholeItem" + ], + "title": "WholeItemThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "WholeItemThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "type": { + "enum": [ + "inlineMarkdown" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "InlineMarkdownThreadRealtimeBemItemPresentation", + "type": "object" + }, + { + "properties": { + "index": { + "format": "uint32", + "minimum": 0.0, + "type": "integer" + }, + "type": { + "enum": [ + "inlineVisualization" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentationType", + "type": "string" + } + }, + "required": [ + "index", + "type" + ], + "title": "InlineVisualizationThreadRealtimeBemItemPresentation", + "type": "object" + } + ] + }, + "ThreadRealtimeItem": { + "description": "EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline.", + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "realtimeSessionStarted" + ], + "title": "RealtimeSessionStartedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "RealtimeSessionStartedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "role": { + "$ref": "#/definitions/ThreadRealtimeTranscriptRole" + }, + "text": { + "type": "string" + }, + "type": { + "enum": [ + "transcriptSegment" + ], + "title": "TranscriptSegmentThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "role", + "text", + "type" + ], + "title": "TranscriptSegmentThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "item_id": { + "type": "string" + }, + "presentation": { + "$ref": "#/definitions/ThreadRealtimeBemItemPresentation" + }, + "turn_id": { + "type": "string" + }, + "type": { + "enum": [ + "bemItemPromoted" + ], + "title": "BemItemPromotedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "item_id", + "presentation", + "turn_id", + "type" + ], + "title": "BemItemPromotedThreadRealtimeItem", + "type": "object" + }, + { + "properties": { + "outcome": { + "$ref": "#/definitions/ThreadRealtimeSessionOutcome" + }, + "type": { + "enum": [ + "realtimeSessionClosed" + ], + "title": "RealtimeSessionClosedThreadRealtimeItemType", + "type": "string" + } + }, + "required": [ + "outcome", + "type" + ], + "title": "RealtimeSessionClosedThreadRealtimeItem", + "type": "object" + } + ], + "properties": { + "id": { + "type": "string" + }, + "realtimeSessionId": { + "type": "string" + } + }, + "required": [ + "id", + "realtimeSessionId" + ], + "type": "object" + }, + "ThreadRealtimeSessionOutcome": { + "enum": [ + "ended", + "failed" + ], + "type": "string" + }, + "ThreadRealtimeTranscriptRole": { + "enum": [ + "user", + "assistant" + ], + "type": "string" + } + }, + "description": "EXPERIMENTAL - a realtime timeline item started before its content streams.", + "properties": { + "item": { + "$ref": "#/definitions/ThreadRealtimeItem" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "item", + "threadId" + ], + "title": "ThreadRealtimeItemStartedNotification", + "type": "object" +} \ No newline at end of file diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemTranscriptDeltaNotification.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemTranscriptDeltaNotification.json new file mode 100644 index 0000000000..0354fcd408 --- /dev/null +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadRealtimeItemTranscriptDeltaNotification.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "EXPERIMENTAL - text appended to an active realtime transcript item.", + "properties": { + "delta": { + "type": "string" + }, + "itemId": { + "type": "string" + }, + "threadId": { + "type": "string" + } + }, + "required": [ + "delta", + "itemId", + "threadId" + ], + "title": "ThreadRealtimeItemTranscriptDeltaNotification", + "type": "object" +} \ No newline at end of file diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst index 65ca7eb2745f33178b837d7bc5013ddd2f3e7580..1404530ddab0ffb71b7cd79356d0158887c7ba3b 100644 GIT binary patch literal 145055 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

*jRDn>MOHdR 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

0)iLf`cc|_`gQ*gEtwe?rKyCqAYn`hn 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

H>9-aCRBS-Fn9*feM5v88M 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%0D# zv|_4aBD(SdOa=e|GjIUW<3#lDnHaq9|DVB47tHQ=`NHYDRiATh3BS2^VSTg;?nGsV zrlx5hrKkhFyZR^%K*a&9EBz~_F;3LPG(Fh)TB-bkr!&1y)aqkXPl9AC6WRl!LW zV-8BAlF#>R=?j##3Razlkn~%ZZE1GOSsM5}VBk7N_;Xs3@LAwcSVo`_=m>r^fk?oB5Xo50(E^PDgr&bghZG~yNXw-q^zW%* z*3(7c>g7vA9H0jZG!g1$nz{S=ClI^weMrc~&f7dTU&YS-rTUhY4{VEGr4w+USeoO& z)6}#h^I{uPj%E+ZtVO;N7uon$0BF~^;0;uX<(^OV?L z0LCa(=MmDa`&}$nY$T^qNPXZ}BPO;!3~K5=fcq9Yr$%1&>Ib)xu#htt*~&|c(zmb^ zYDyvLIz6+hf#D*-UM(55Q;oFabpr?cko@3mdt#>+V#mx2l*j-Dhi9#%L50msm%CzG zHKAe}&XcN=hQNyXsrXD|952~3yldiUH+6GgMy=1=6 z7K_8HaFFB_KwR=dlD^VRwhkIGpFXG(+{Vi6X8zym)fPeXQ{@wwJKT|E@K_8t0U>A% zBej8!C~XM3>!r=uIo`9nTl~WB39HTPTh#Ipe;5;8KML6H%&RK#*{#`^Ea|$OTTzDw-l%l z>CfLuphP4z;@SY+o7w~Ziz&~%^p*;Hkl0kU(px>YqiyG*>Lw25?*K|)0M#2xgpRhQ zp{1j3s>YIK(`j*t&hv4IXqgb0mX`d-wEWZkGWqu0FX~f4)~K5@W?f}^j&CW!P>Lc{ zQi>wAS*_M-4+6GUsTM@>ZT~qSuT}D9T|lZ}ZeOQ>;gxg(=LVhnC7?@jz_NdG0u)W~ AlK=n! diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst index a12fda2014560298df293e453ce0dfc0d1635bbf..e95edd35a316666b2c495b3492cbd583a7ba1b5d 100644 GIT binary patch literal 139385 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 z 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 X;EV;Ppqvs5WRr "thread/timeline/list" { + params: v2::ThreadTimelineListParams, + serialization: thread_id(params.thread_id), + response: v2::ThreadTimelineListResponse, + }, #[experimental("thread/realtime/listVoices")] ThreadRealtimeListVoices => "thread/realtime/listVoices" { params: v2::ThreadRealtimeListVoicesParams, @@ -1917,6 +1923,12 @@ server_notification_definitions! { ThreadRealtimeStarted => "thread/realtime/started" (v2::ThreadRealtimeStartedNotification), #[experimental("thread/realtime/itemAdded")] ThreadRealtimeItemAdded => "thread/realtime/itemAdded" (v2::ThreadRealtimeItemAddedNotification), + #[experimental("thread/realtime/item/started")] + ThreadRealtimeItemStarted => "thread/realtime/item/started" (v2::ThreadRealtimeItemStartedNotification), + #[experimental("thread/realtime/item/transcript/delta")] + ThreadRealtimeItemTranscriptDelta => "thread/realtime/item/transcript/delta" (v2::ThreadRealtimeItemTranscriptDeltaNotification), + #[experimental("thread/realtime/item/completed")] + ThreadRealtimeItemCompleted => "thread/realtime/item/completed" (v2::ThreadRealtimeItemCompletedNotification), #[experimental("thread/realtime/transcript/delta")] ThreadRealtimeTranscriptDelta => "thread/realtime/transcript/delta" (v2::ThreadRealtimeTranscriptDeltaNotification), #[experimental("thread/realtime/transcript/done")] diff --git a/codex-rs/app-server-protocol/src/protocol/thread_history.rs b/codex-rs/app-server-protocol/src/protocol/thread_history.rs index 566b99d12e..5e007e0cfd 100644 --- a/codex-rs/app-server-protocol/src/protocol/thread_history.rs +++ b/codex-rs/app-server-protocol/src/protocol/thread_history.rs @@ -401,6 +401,7 @@ impl ThreadHistoryBuilder { | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::SessionMeta(_) => {} } diff --git a/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs b/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs index d742fd0b22..38a7c7e2f6 100644 --- a/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs +++ b/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs @@ -82,6 +82,7 @@ pub fn project_rollout_line(line: &RolloutLine) -> ThreadHistoryChangeSet { | RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => ThreadHistoryChangeSet::default(), } diff --git a/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs b/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs index 12355c96d3..4bba26856c 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs @@ -7,11 +7,139 @@ use codex_protocol::protocol::RealtimeConversationVersion; use codex_protocol::protocol::RealtimeOutputModality; use codex_protocol::protocol::RealtimeVoice; use codex_protocol::protocol::RealtimeVoicesList; +use codex_protocol::realtime::BemItemPresentation as CoreBemItemPresentation; +use codex_protocol::realtime::RealtimeItem as CoreRealtimeItem; +use codex_protocol::realtime::RealtimeItemContent as CoreRealtimeItemContent; +use codex_protocol::realtime::RealtimeSessionOutcome as CoreRealtimeSessionOutcome; +use codex_protocol::realtime::RealtimeTranscriptRole as CoreRealtimeTranscriptRole; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; use std::collections::BTreeMap; +/// EXPERIMENTAL - a thread-scoped realtime item in the canonical timeline. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export_to = "v2/")] +pub struct ThreadRealtimeItem { + pub id: String, + pub realtime_session_id: String, + #[serde(flatten)] + pub content: ThreadRealtimeItemContent, +} + +/// EXPERIMENTAL - durable facts describing realtime speech and promoted work. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] +#[serde( + tag = "type", + rename_all = "camelCase", + rename_all_fields = "camelCase" +)] +#[ts(tag = "type", rename_all = "camelCase", export_to = "v2/")] +pub enum ThreadRealtimeItemContent { + RealtimeSessionStarted, + TranscriptSegment { + role: ThreadRealtimeTranscriptRole, + text: String, + }, + BemItemPromoted { + turn_id: String, + item_id: String, + presentation: ThreadRealtimeBemItemPresentation, + }, + RealtimeSessionClosed { + outcome: ThreadRealtimeSessionOutcome, + }, +} + +/// EXPERIMENTAL - how an existing agent item appears in a realtime conversation. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] +#[serde( + tag = "type", + rename_all = "camelCase", + rename_all_fields = "camelCase" +)] +#[ts(tag = "type", rename_all = "camelCase", export_to = "v2/")] +pub enum ThreadRealtimeBemItemPresentation { + WholeItem, + InlineMarkdown, + InlineVisualization { index: u32 }, +} + +#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(rename_all = "camelCase", export_to = "v2/")] +pub enum ThreadRealtimeTranscriptRole { + User, + Assistant, +} + +#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(rename_all = "camelCase", export_to = "v2/")] +pub enum ThreadRealtimeSessionOutcome { + Ended, + Failed, +} + +impl From for ThreadRealtimeItem { + fn from(item: CoreRealtimeItem) -> Self { + let CoreRealtimeItem { + id, + realtime_session_id, + content, + } = item; + let content = match content { + CoreRealtimeItemContent::RealtimeSessionStarted => { + ThreadRealtimeItemContent::RealtimeSessionStarted + } + CoreRealtimeItemContent::TranscriptSegment { role, text } => { + ThreadRealtimeItemContent::TranscriptSegment { + role: match role { + CoreRealtimeTranscriptRole::User => ThreadRealtimeTranscriptRole::User, + CoreRealtimeTranscriptRole::Assistant => { + ThreadRealtimeTranscriptRole::Assistant + } + }, + text, + } + } + CoreRealtimeItemContent::BemItemPromoted { + turn_id, + item_id, + presentation, + } => ThreadRealtimeItemContent::BemItemPromoted { + turn_id, + item_id, + presentation: match presentation { + CoreBemItemPresentation::WholeItem => { + ThreadRealtimeBemItemPresentation::WholeItem + } + CoreBemItemPresentation::InlineMarkdown => { + ThreadRealtimeBemItemPresentation::InlineMarkdown + } + CoreBemItemPresentation::InlineVisualization { index } => { + ThreadRealtimeBemItemPresentation::InlineVisualization { index } + } + }, + }, + CoreRealtimeItemContent::RealtimeSessionClosed { outcome } => { + ThreadRealtimeItemContent::RealtimeSessionClosed { + outcome: match outcome { + CoreRealtimeSessionOutcome::Ended => ThreadRealtimeSessionOutcome::Ended, + CoreRealtimeSessionOutcome::Failed => ThreadRealtimeSessionOutcome::Failed, + }, + } + } + }; + Self { + id, + realtime_session_id, + content, + } + } +} + /// EXPERIMENTAL - thread realtime audio chunk. #[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] @@ -263,6 +391,34 @@ pub struct ThreadRealtimeItemAddedNotification { pub item: JsonValue, } +/// EXPERIMENTAL - a realtime timeline item started before its content streams. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export_to = "v2/")] +pub struct ThreadRealtimeItemStartedNotification { + pub thread_id: String, + pub item: ThreadRealtimeItem, +} + +/// EXPERIMENTAL - text appended to an active realtime transcript item. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export_to = "v2/")] +pub struct ThreadRealtimeItemTranscriptDeltaNotification { + pub thread_id: String, + pub item_id: String, + pub delta: String, +} + +/// EXPERIMENTAL - a realtime timeline item published after canonical commit. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export_to = "v2/")] +pub struct ThreadRealtimeItemCompletedNotification { + pub thread_id: String, + pub item: ThreadRealtimeItem, +} + /// EXPERIMENTAL - flat transcript delta emitted whenever realtime /// transcript text changes. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/thread.rs b/codex-rs/app-server-protocol/src/protocol/v2/thread.rs index 75fe5091b1..fc70dbe6f2 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/thread.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/thread.rs @@ -6,12 +6,15 @@ use super::SandboxPolicy; use super::Thread; use super::ThreadHistoryMode; use super::ThreadItem; +use super::ThreadRealtimeItem; use super::ThreadSection; use super::ThreadSectionAppearance; use super::ThreadSource; use super::Turn; use super::TurnEnvironmentParams; +use super::TurnError; use super::TurnItemsView; +use super::TurnStatus; use super::UserInput; use super::shared::v2_enum_from_core; use crate::JsonSchema; @@ -1747,6 +1750,75 @@ pub struct ThreadItemsListResponse { pub backwards_cursor: Option, } +/// EXPERIMENTAL - list ordinary and realtime thread history in rollout order. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export_to = "v2/")] +pub struct ThreadTimelineListParams { + pub thread_id: String, + #[ts(optional = nullable)] + pub cursor: Option, + #[ts(optional = nullable)] + pub limit: Option, +} + +/// EXPERIMENTAL - one item or turn boundary in canonical rollout order. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] +#[serde( + tag = "type", + rename_all = "camelCase", + rename_all_fields = "camelCase" +)] +#[ts(tag = "type", rename_all = "camelCase", export_to = "v2/")] +pub enum ThreadTimelineEntry { + Item { + #[ts(type = "number")] + position: u64, + #[schemars(rename = "turnId")] + #[serde(rename = "turnId")] + #[ts(rename = "turnId")] + turn_id: String, + item: Box, + }, + Realtime { + #[ts(type = "number")] + position: u64, + item: ThreadRealtimeItem, + }, + TurnStarted { + #[ts(type = "number")] + position: u64, + #[ts(rename = "turnId")] + turn_id: String, + #[ts(rename = "startedAt", type = "number | null")] + started_at: Option, + }, + TurnCompleted { + #[ts(type = "number")] + position: u64, + #[ts(rename = "turnId")] + turn_id: String, + status: TurnStatus, + error: Option, + #[ts(rename = "startedAt", type = "number | null")] + started_at: Option, + #[ts(rename = "completedAt", type = "number | null")] + completed_at: Option, + #[ts(rename = "durationMs", type = "number | null")] + duration_ms: Option, + }, +} + +/// EXPERIMENTAL - a bounded timeline page with its resolved opening voice state. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] +#[serde(rename_all = "camelCase")] +#[ts(export_to = "v2/")] +pub struct ThreadTimelineListResponse { + pub data: Vec, + pub next_cursor: Option, + pub active_realtime_session_at_page_start: Option, +} + #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] #[ts(export_to = "v2/")] diff --git a/codex-rs/app-server/README.md b/codex-rs/app-server/README.md index 09b40ca94d..df16c36fd5 100644 --- a/codex-rs/app-server/README.md +++ b/codex-rs/app-server/README.md @@ -218,6 +218,7 @@ Example with notification opt-out: - `thread/realtime/appendText` — append text input to the active realtime session with a required `role` of `user`, `developer`, or `assistant` (experimental); returns `{}`. Older clients that omit `role` default to `user`. Parent-owned Multi-Agent V2 subagents reject this request. - `thread/realtime/appendSpeech` — append text that the realtime model should speak to the user (experimental); returns `{}`. Parent-owned Multi-Agent V2 subagents reject this request. - `thread/realtime/stop` — stop the active realtime session for the thread (experimental); returns `{}`. Parent-owned Multi-Agent V2 subagents reject this request. +- `thread/timeline/list` — page ordinary turn items, durable realtime facts, and turn boundaries together in rollout order (experimental). Entries are tagged `item`, `realtime`, `turnStarted`, or `turnCompleted`. Turn boundaries carry lifecycle metadata without duplicating the turn's items; completed boundaries also cover interrupted and failed turns. Each response contains an opaque continuation cursor and `activeRealtimeSessionAtPageStart`, allowing clients to render any bounded page without loading earlier thread history. Entries at the same rollout position have stable ordering and can span pages. Existing `thread/items/list` remains unchanged. - `review/start` — kick off Codex’s automated reviewer for a thread; responds like `turn/start`. Inline reviews emit `item/started`/`item/completed` notifications with `enteredReviewMode` and `exitedReviewMode` items, plus a final assistant `agentMessage` containing the review. Detached reviews stream ordinary turn items on the new review thread. Parent-owned Multi-Agent V2 subagents reject both inline and detached reviews. - `command/exec` — run a single command under the server sandbox without starting a thread/turn (handy for utilities and validation). - `command/exec/write` — write base64-decoded stdin bytes to a running `command/exec` session or close stdin; returns `{}`. @@ -1565,7 +1566,9 @@ All filesystem paths in this section must be absolute. Event notifications are the server-initiated event stream for thread lifecycles, turn lifecycles, and the items within them. After you start or resume a thread, keep reading stdout for `thread/started`, `thread/archived`, `thread/unarchived`, `thread/closed`, `turn/*`, and `item/*` notifications. -Thread realtime uses a separate thread-scoped notification surface. `thread/realtime/*` notifications are ephemeral transport events, not `ThreadItem`s, and are not returned by `thread/read`, `thread/resume`, or `thread/fork`. +Thread realtime publishes thread-scoped timeline item lifecycle notifications for paginated threads alongside its existing realtime notifications. Completed timeline items are durably interleaved with ordinary turn items by `thread/timeline/list`. Neither surface changes `ThreadItem`, `thread/read`, `thread/resume`, or `thread/fork`; clients ignore notification methods they do not recognize. + +Each realtime item has an `id`, a `realtimeSessionId`, and one of four types: `realtimeSessionStarted`, `transcriptSegment`, `bemItemPromoted`, or `realtimeSessionClosed`. A `bemItemPromoted` item references an existing backing-agent item by `turnId` and `itemId`; its `presentation` is `wholeItem`, `inlineMarkdown`, or `inlineVisualization` with an `index`. Recoverable configuration and initialization warnings use the existing `configWarning` notification: `{ summary, details?, path?, range? }`. App-server may emit it during initialization for config parsing and related setup diagnostics, or to the requesting connection during `thread/start` when that thread's exec-policy rules fail to parse. @@ -1600,6 +1603,9 @@ The thread realtime API emits thread-scoped notifications for session lifecycle - `thread/realtime/itemAdded` — `{ threadId, item }` for raw non-audio realtime items that do not have a dedicated typed app-server notification, including `handoff_request` (experimental). `item` is forwarded as raw JSON while the upstream websocket item schema remains unstable. - `thread/realtime/transcript/delta` — `{ threadId, role, delta }` for live realtime transcript deltas (experimental). - `thread/realtime/transcript/done` — `{ threadId, role, text }` when realtime emits the final full text for a transcript part (experimental). +- `thread/realtime/item/started` — `{ threadId, item }` when a realtime item begins. Session boundaries and artifacts complete immediately; transcript segment IDs remain stable through streaming and persistence (experimental). +- `thread/realtime/item/transcript/delta` — `{ threadId, itemId, delta }` for text appended to a started transcript segment (experimental). +- `thread/realtime/item/completed` — `{ threadId, item }` after a session boundary, transcript segment, or promoted backing-agent artifact has been durably committed (experimental). - `thread/realtime/outputAudio/delta` — `{ threadId, audio }` for streamed output audio chunks (experimental). `audio` uses camelCase fields (`data`, `sampleRate`, `numChannels`, `samplesPerChannel`). - `thread/realtime/error` — `{ threadId, message }` when realtime encounters a transport or backend error (experimental). - `thread/realtime/closed` — `{ threadId, reason }` when the realtime transport closes (experimental). diff --git a/codex-rs/app-server/src/lib.rs b/codex-rs/app-server/src/lib.rs index e253481a98..3aedcf9500 100644 --- a/codex-rs/app-server/src/lib.rs +++ b/codex-rs/app-server/src/lib.rs @@ -121,6 +121,8 @@ mod models; mod models_refresh_worker; mod otel_reloader; mod outgoing_message; +mod realtime_event_handling; +mod realtime_history; mod request_processors; mod request_serialization; mod server_request_error; diff --git a/codex-rs/app-server/src/message_processor.rs b/codex-rs/app-server/src/message_processor.rs index 5d60a6c6fd..f9c6e24b87 100644 --- a/codex-rs/app-server/src/message_processor.rs +++ b/codex-rs/app-server/src/message_processor.rs @@ -1485,6 +1485,9 @@ impl MessageProcessor { .thread_realtime_stop(&request_id, params) .await } + ClientRequest::ThreadTimelineList { params, .. } => { + self.thread_processor.thread_timeline_list(params).await + } ClientRequest::ThreadRealtimeListVoices { params: _, .. } => { self.turn_processor.thread_realtime_list_voices().await } diff --git a/codex-rs/app-server/src/realtime_event_handling.rs b/codex-rs/app-server/src/realtime_event_handling.rs new file mode 100644 index 0000000000..cc4a29e4ec --- /dev/null +++ b/codex-rs/app-server/src/realtime_event_handling.rs @@ -0,0 +1,91 @@ +use crate::outgoing_message::ThreadScopedOutgoingMessageSender; +use crate::realtime_history::RealtimeEventEffects; +use codex_app_server_protocol::ServerNotification; +use codex_app_server_protocol::ThreadRealtimeItemCompletedNotification; +use codex_app_server_protocol::ThreadRealtimeItemStartedNotification; +use codex_app_server_protocol::ThreadRealtimeItemTranscriptDeltaNotification; +use codex_core::CodexThread; +use codex_protocol::ThreadId; +use codex_protocol::realtime::RealtimeItem; +use codex_protocol::realtime::RealtimeItemContent; +use codex_rollout::RolloutItem; +use tracing::warn; + +pub(crate) async fn apply_realtime_event_effects( + conversation: &CodexThread, + outgoing: &ThreadScopedOutgoingMessageSender, + thread_id: ThreadId, + effects: RealtimeEventEffects, +) { + let thread_id = thread_id.to_string(); + + if let Some(stream) = effects.transcript_stream { + if let Some(item) = stream.started_item { + outgoing + .send_server_notification(ServerNotification::ThreadRealtimeItemStarted( + ThreadRealtimeItemStartedNotification { + thread_id: thread_id.clone(), + item: item.into(), + }, + )) + .await; + } + outgoing + .send_server_notification(ServerNotification::ThreadRealtimeItemTranscriptDelta( + ThreadRealtimeItemTranscriptDeltaNotification { + thread_id: thread_id.clone(), + item_id: stream.item_id, + delta: stream.delta, + }, + )) + .await; + } + + if let Err(error) = + persist_realtime_items(conversation, outgoing, &thread_id, effects.items).await + { + warn!(thread_id, "failed to persist realtime history: {error}"); + } +} + +pub(crate) async fn persist_realtime_items( + conversation: &CodexThread, + outgoing: &ThreadScopedOutgoingMessageSender, + thread_id: &str, + items: Vec, +) -> Result<(), String> { + if items.is_empty() { + return Ok(()); + } + conversation + .append_rollout_items( + &items + .iter() + .cloned() + .map(RolloutItem::RealtimeItem) + .collect::>(), + ) + .await + .map_err(|error| format!("failed to persist realtime history: {error}"))?; + for item in items { + if !matches!(&item.content, RealtimeItemContent::TranscriptSegment { .. }) { + outgoing + .send_server_notification(ServerNotification::ThreadRealtimeItemStarted( + ThreadRealtimeItemStartedNotification { + thread_id: thread_id.to_string(), + item: item.clone().into(), + }, + )) + .await; + } + outgoing + .send_server_notification(ServerNotification::ThreadRealtimeItemCompleted( + ThreadRealtimeItemCompletedNotification { + thread_id: thread_id.to_string(), + item: item.into(), + }, + )) + .await; + } + Ok(()) +} diff --git a/codex-rs/app-server/src/realtime_history.rs b/codex-rs/app-server/src/realtime_history.rs new file mode 100644 index 0000000000..507632f8e0 --- /dev/null +++ b/codex-rs/app-server/src/realtime_history.rs @@ -0,0 +1,534 @@ +use codex_protocol::items::AgentMessageContent; +use codex_protocol::items::DynamicToolCallStatus; +use codex_protocol::items::McpToolCallStatus; +use codex_protocol::items::TurnItem; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::RealtimeEvent; +use codex_protocol::protocol::RealtimeTranscriptDelta; +use codex_protocol::protocol::RealtimeTranscriptDone; +use codex_protocol::protocol::SubAgentActivityKind; +use codex_protocol::realtime::BemItemPresentation; +use codex_protocol::realtime::RealtimeItem; +use codex_protocol::realtime::RealtimeItemContent; +use codex_protocol::realtime::RealtimeSessionOutcome; +use codex_protocol::realtime::RealtimeTranscriptRole; +use codex_protocol::user_input::UserInput; +use std::collections::HashMap; +use std::collections::HashSet; +use std::collections::VecDeque; +use uuid::Uuid; + +const INLINE_MARKDOWN_DIRECTIVE: &str = "::codex-realtime-inline{}"; +const INLINE_VISUALIZATION_DIRECTIVE: &str = "::codex-inline-vis{"; +const VISUALIZE_DIRECTIVE: &str = "visualize{"; +const BACKTICK_FENCE: &str = "```"; +const TILDE_FENCE: &str = "~~~"; + +#[derive(Debug, Clone, PartialEq, Eq)] +struct ActiveSegment { + session_id: String, + id: String, + role: RealtimeTranscriptRole, + text: String, +} + +#[derive(Debug, Default)] +struct ActiveTranscriptSegments { + user: Option, + assistant: Option, + first_active_role: Option, +} + +impl ActiveTranscriptSegments { + fn slot_mut(&mut self, role: RealtimeTranscriptRole) -> &mut Option { + match role { + RealtimeTranscriptRole::User => &mut self.user, + RealtimeTranscriptRole::Assistant => &mut self.assistant, + } + } + + fn take(&mut self, role: RealtimeTranscriptRole) -> Option { + let segment = self.slot_mut(role).take(); + if self.first_active_role == Some(role) { + self.first_active_role = self + .user + .as_ref() + .or(self.assistant.as_ref()) + .map(|segment| segment.role); + } + segment + } +} + +#[derive(Debug)] +struct StreamingAgentMessage { + item_id: String, + text: String, +} + +#[derive(Debug)] +pub(crate) struct RealtimeTranscriptStream { + pub(crate) started_item: Option, + pub(crate) item_id: String, + pub(crate) delta: String, +} + +#[derive(Debug, Default)] +pub(crate) struct RealtimeEventEffects { + pub(crate) items: Vec, + pub(crate) transcript_stream: Option, +} + +#[derive(Clone, Copy)] +enum Continuation { + Continue, + Finish, +} + +/// Retains only live session state; durable history is served by the rollout index. +#[derive(Debug, Default)] +pub(crate) struct RealtimeHistoryState { + active_session_id: Option, + active_segments: ActiveTranscriptSegments, + streaming_agent_message: Option, + realtime_session_by_bem_turn: HashMap, + promoted_bem_presentation_keys: HashSet, + pending_handoffs: VecDeque, + failed: bool, +} + +impl RealtimeHistoryState { + pub(crate) fn should_seal_user_input(&self, input: &[UserInput]) -> bool { + self.active_session_id.is_some() + && [&self.active_segments.user, &self.active_segments.assistant] + .into_iter() + .flatten() + .any(|segment| !segment.text.is_empty()) + && !matches!(input, [UserInput::Text { text, .. }] if { + let text = text.trim(); + text.starts_with("") + && text.ends_with("") + }) + } + + pub(crate) fn seal_user_input(&mut self, input: &[UserInput]) -> Vec { + if !self.should_seal_user_input(input) { + return Vec::new(); + } + let mut items = Vec::new(); + self.seal_segments(&mut items, Continuation::Continue); + items + } + + pub(crate) fn should_observe(&self, event: &EventMsg) -> bool { + matches!(event, EventMsg::RealtimeConversationStarted(_)) + || (self.active_session_id.is_some() + && matches!( + event, + EventMsg::RealtimeConversationRealtime(_) + | EventMsg::RealtimeConversationClosed(_) + | EventMsg::TurnStarted(_) + | EventMsg::ItemStarted(_) + | EventMsg::ItemCompleted(_) + | EventMsg::AgentMessageContentDelta(_) + )) + || match event { + EventMsg::ItemStarted(event) => self + .realtime_session_by_bem_turn + .contains_key(&event.turn_id), + EventMsg::ItemCompleted(event) => self + .realtime_session_by_bem_turn + .contains_key(&event.turn_id), + EventMsg::AgentMessageContentDelta(event) => self + .realtime_session_by_bem_turn + .contains_key(&event.turn_id), + EventMsg::TurnStarted(_) => !self.pending_handoffs.is_empty(), + _ => false, + } + } + + pub(crate) fn observe( + &mut self, + event: &EventMsg, + active_turn_id: Option<&str>, + ) -> RealtimeEventEffects { + let mut items = Vec::new(); + let mut transcript_stream = None; + match event { + EventMsg::RealtimeConversationStarted(event) => { + let session_id = event + .realtime_session_id + .clone() + .unwrap_or_else(|| Uuid::now_v7().to_string()); + if self.active_session_id.as_deref() != Some(session_id.as_str()) { + self.seal_segments(&mut items, Continuation::Finish); + self.active_session_id = Some(session_id.clone()); + self.failed = false; + items.push(RealtimeItem { + id: Uuid::now_v7().to_string(), + realtime_session_id: session_id.clone(), + content: RealtimeItemContent::RealtimeSessionStarted, + }); + } + if let Some(turn_id) = active_turn_id { + self.realtime_session_by_bem_turn + .insert(turn_id.to_string(), session_id); + } + } + EventMsg::RealtimeConversationRealtime(event) => match &event.payload { + RealtimeEvent::InputTranscriptDelta(delta) => { + transcript_stream = self.add_delta(RealtimeTranscriptRole::User, delta); + } + RealtimeEvent::OutputTranscriptDelta(delta) => { + transcript_stream = self.add_delta(RealtimeTranscriptRole::Assistant, delta); + } + RealtimeEvent::InputTranscriptDone(done) => { + transcript_stream = + self.finish_segment(&mut items, RealtimeTranscriptRole::User, done); + } + RealtimeEvent::OutputTranscriptDone(done) => { + transcript_stream = + self.finish_segment(&mut items, RealtimeTranscriptRole::Assistant, done); + } + RealtimeEvent::HandoffRequested(_) => { + if let Some(session_id) = &self.active_session_id { + self.pending_handoffs.push_back(session_id.clone()); + } + } + RealtimeEvent::Error(_) => self.failed = true, + _ => {} + }, + EventMsg::TurnStarted(event) => { + if let Some(session_id) = self + .pending_handoffs + .pop_front() + .or_else(|| self.active_session_id.clone()) + { + self.realtime_session_by_bem_turn + .entry(event.turn_id.clone()) + .or_insert(session_id); + } + } + EventMsg::ItemStarted(event) => { + if let TurnItem::UserMessage(item) = &event.item { + items.extend(self.seal_user_input(&item.content)); + } + self.observe_item( + &mut items, + &event.turn_id, + &event.item, + /*completed*/ false, + ); + } + EventMsg::ItemCompleted(event) => { + if let TurnItem::UserMessage(item) = &event.item { + items.extend(self.seal_user_input(&item.content)); + } + self.observe_item( + &mut items, + &event.turn_id, + &event.item, + /*completed*/ true, + ); + if self + .streaming_agent_message + .as_ref() + .is_some_and(|message| message.item_id == event.item.id()) + { + self.streaming_agent_message = None; + } + } + EventMsg::AgentMessageContentDelta(event) => { + let message = + self.streaming_agent_message + .get_or_insert_with(|| StreamingAgentMessage { + item_id: event.item_id.clone(), + text: String::new(), + }); + if message.item_id != event.item_id { + message.item_id.clone_from(&event.item_id); + message.text.clear(); + } + message.text.push_str(&event.delta); + let text = message.text.clone(); + self.observe_assistant_message(&mut items, &event.turn_id, &event.item_id, &text); + } + EventMsg::RealtimeConversationClosed(_) => { + if let Some(session_id) = self.active_session_id.take() { + self.seal_segments(&mut items, Continuation::Finish); + items.push(RealtimeItem { + id: Uuid::now_v7().to_string(), + realtime_session_id: session_id, + content: RealtimeItemContent::RealtimeSessionClosed { + outcome: if self.failed { + RealtimeSessionOutcome::Failed + } else { + RealtimeSessionOutcome::Ended + }, + }, + }); + self.failed = false; + } + } + _ => {} + } + RealtimeEventEffects { + items, + transcript_stream, + } + } + + fn observe_item( + &mut self, + items: &mut Vec, + turn_id: &str, + item: &TurnItem, + completed: bool, + ) { + match item { + TurnItem::AgentMessage(message) => { + let text = message + .content + .iter() + .map(|content| match content { + AgentMessageContent::Text { text } => text.as_str(), + }) + .collect::(); + if !completed { + self.streaming_agent_message = Some(StreamingAgentMessage { + item_id: message.id.clone(), + text: text.clone(), + }); + } + self.observe_assistant_message(items, turn_id, &message.id, &text); + } + TurnItem::ImageGeneration(image) => { + self.add_promotion(items, turn_id, &image.id, BemItemPresentation::WholeItem); + } + TurnItem::Extension(extension) + if serde_json::to_value(extension) + .is_ok_and(|item| item["kind"] == "image_gen.generation") => + { + self.add_promotion( + items, + turn_id, + extension.id(), + BemItemPresentation::WholeItem, + ); + } + TurnItem::SubAgentActivity(activity) + if completed && activity.kind == SubAgentActivityKind::Started => + { + self.add_promotion(items, turn_id, &activity.id, BemItemPresentation::WholeItem); + } + TurnItem::DynamicToolCall(call) + if self.active_session_id.is_some() + && completed + && call.status == DynamicToolCallStatus::Completed + && call.success == Some(true) => + { + self.add_promotion(items, turn_id, &call.id, BemItemPresentation::WholeItem); + } + TurnItem::McpToolCall(call) + if self.active_session_id.is_some() + && completed + && call.server == "codex_app" + && call.status == McpToolCallStatus::Completed => + { + self.add_promotion(items, turn_id, &call.id, BemItemPresentation::WholeItem); + } + _ => {} + } + } + + fn observe_assistant_message( + &mut self, + items: &mut Vec, + turn_id: &str, + item_id: &str, + text: &str, + ) { + let mut lines = text.trim_start().lines(); + let mut first = lines.next().unwrap_or_default(); + if first.starts_with('[') + && let Some((_, content)) = first.split_once(']') + { + first = content.trim_start(); + if first.is_empty() { + first = lines.next().unwrap_or_default(); + } + } + if first == INLINE_MARKDOWN_DIRECTIVE && text.contains('\n') { + self.add_promotion(items, turn_id, item_id, BemItemPresentation::InlineMarkdown); + return; + } + + let mut in_fence = false; + let mut visualization_index = 0; + for line in text.lines() { + let trimmed = line.trim_start(); + if trimmed.starts_with(BACKTICK_FENCE) || trimmed.starts_with(TILDE_FENCE) { + in_fence = !in_fence; + continue; + } + if !in_fence + && (trimmed.starts_with(INLINE_VISUALIZATION_DIRECTIVE) + || trimmed.starts_with(VISUALIZE_DIRECTIVE)) + { + self.add_promotion( + items, + turn_id, + item_id, + BemItemPresentation::InlineVisualization { + index: visualization_index, + }, + ); + visualization_index += 1; + } + } + } + + fn add_promotion( + &mut self, + items: &mut Vec, + turn_id: &str, + item_id: &str, + presentation: BemItemPresentation, + ) { + let Some(realtime_session_id) = self.realtime_session_by_bem_turn.get(turn_id).cloned() + else { + return; + }; + let presentation_key = match &presentation { + BemItemPresentation::WholeItem => format!("{item_id}:whole-item"), + BemItemPresentation::InlineMarkdown => format!("{item_id}:inline-markdown"), + BemItemPresentation::InlineVisualization { index } => { + format!("{item_id}:inline-visualization:{index}") + } + }; + if !self.promoted_bem_presentation_keys.insert(presentation_key) { + return; + } + self.seal_segments(items, Continuation::Continue); + items.push(RealtimeItem { + id: Uuid::now_v7().to_string(), + realtime_session_id, + content: RealtimeItemContent::BemItemPromoted { + turn_id: turn_id.to_string(), + item_id: item_id.to_string(), + presentation, + }, + }); + } + + fn add_delta( + &mut self, + role: RealtimeTranscriptRole, + delta: &RealtimeTranscriptDelta, + ) -> Option { + let session_id = self.active_session_id.clone()?; + self.active_segments.first_active_role.get_or_insert(role); + let segment = self + .active_segments + .slot_mut(role) + .get_or_insert_with(|| ActiveSegment { + session_id, + id: Uuid::now_v7().to_string(), + role, + text: String::new(), + }); + let started_item = segment.text.is_empty().then(|| RealtimeItem { + id: segment.id.clone(), + realtime_session_id: segment.session_id.clone(), + content: RealtimeItemContent::TranscriptSegment { + role: segment.role, + text: String::new(), + }, + }); + segment.text.push_str(&delta.delta); + Some(RealtimeTranscriptStream { + started_item, + item_id: segment.id.clone(), + delta: delta.delta.clone(), + }) + } + + fn finish_segment( + &mut self, + items: &mut Vec, + role: RealtimeTranscriptRole, + done: &RealtimeTranscriptDone, + ) -> Option { + let Some(segment) = self.active_segments.take(role) else { + if done.text.is_empty() { + return None; + } + let stream = self.add_delta( + role, + &RealtimeTranscriptDelta { + delta: done.text.clone(), + }, + ); + if let Some(segment) = self.active_segments.take(role) { + self.seal_active_segment(items, segment, Continuation::Finish); + } + return stream; + }; + // A split leaves an empty continuation; the upstream final may repeat + // text that was already committed before the split. + self.seal_active_segment(items, segment, Continuation::Finish); + None + } + + fn seal_segments(&mut self, items: &mut Vec, continuation: Continuation) { + let mut segments = std::mem::take(&mut self.active_segments); + let roles = match segments.first_active_role { + Some(RealtimeTranscriptRole::Assistant) => [ + RealtimeTranscriptRole::Assistant, + RealtimeTranscriptRole::User, + ], + Some(RealtimeTranscriptRole::User) | None => [ + RealtimeTranscriptRole::User, + RealtimeTranscriptRole::Assistant, + ], + }; + for role in roles { + if let Some(segment) = segments.take(role) { + self.seal_active_segment(items, segment, continuation); + } + } + } + + fn seal_active_segment( + &mut self, + items: &mut Vec, + segment: ActiveSegment, + continuation: Continuation, + ) { + if !segment.text.is_empty() { + items.push(RealtimeItem { + id: segment.id, + realtime_session_id: segment.session_id.clone(), + content: RealtimeItemContent::TranscriptSegment { + role: segment.role, + text: segment.text, + }, + }); + } + if matches!(continuation, Continuation::Continue) { + self.active_segments + .first_active_role + .get_or_insert(segment.role); + *self.active_segments.slot_mut(segment.role) = Some(ActiveSegment { + session_id: segment.session_id, + id: Uuid::now_v7().to_string(), + role: segment.role, + text: String::new(), + }); + } + } +} + +#[cfg(test)] +#[path = "realtime_history_tests.rs"] +mod tests; diff --git a/codex-rs/app-server/src/realtime_history_tests.rs b/codex-rs/app-server/src/realtime_history_tests.rs new file mode 100644 index 0000000000..ad16bcff45 --- /dev/null +++ b/codex-rs/app-server/src/realtime_history_tests.rs @@ -0,0 +1,541 @@ +use super::*; +use codex_protocol::AgentPath; +use codex_protocol::ThreadId; +use codex_protocol::items::AgentMessageItem; +use codex_protocol::items::DynamicToolCallItem; +use codex_protocol::items::ImageGenerationItem; +use codex_protocol::items::McpToolCallItem; +use codex_protocol::items::SubAgentActivityItem; +use codex_protocol::protocol::AgentMessageContentDeltaEvent; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::ItemStartedEvent; +use codex_protocol::protocol::RealtimeConversationClosedEvent; +use codex_protocol::protocol::RealtimeConversationRealtimeEvent; +use codex_protocol::protocol::RealtimeConversationStartedEvent; +use codex_protocol::protocol::RealtimeConversationVersion; +use pretty_assertions::assert_eq; +use uuid::Uuid; + +fn started_state() -> RealtimeHistoryState { + let mut state = RealtimeHistoryState::default(); + state.observe( + &EventMsg::RealtimeConversationStarted(RealtimeConversationStartedEvent { + realtime_session_id: Some("voice-1".to_string()), + version: RealtimeConversationVersion::V2, + }), + Some("turn-1"), + ); + state +} + +fn observe_realtime( + state: &mut RealtimeHistoryState, + payload: RealtimeEvent, +) -> RealtimeEventEffects { + state.observe( + &EventMsg::RealtimeConversationRealtime(RealtimeConversationRealtimeEvent { payload }), + /*active_turn_id*/ None, + ) +} + +fn assistant_delta(item_id: &str, delta: &str) -> EventMsg { + EventMsg::AgentMessageContentDelta(AgentMessageContentDeltaEvent { + thread_id: "thread-1".to_string(), + turn_id: "turn-1".to_string(), + item_id: item_id.to_string(), + delta: delta.to_string(), + }) +} + +fn completed_item(item: TurnItem) -> EventMsg { + EventMsg::ItemCompleted(ItemCompletedEvent { + thread_id: ThreadId::new(), + turn_id: "turn-1".to_string(), + item, + started_at_ms: None, + completed_at_ms: 0, + }) +} + +fn dynamic_tool_call(id: &str, status: DynamicToolCallStatus) -> TurnItem { + TurnItem::DynamicToolCall(DynamicToolCallItem { + id: id.to_string(), + namespace: Some("another_client".to_string()), + tool: "any_dynamic_tool".to_string(), + arguments: serde_json::Value::Null, + status, + content_items: None, + success: Some(status == DynamicToolCallStatus::Completed), + error: None, + duration: None, + }) +} + +fn mcp_tool_call(id: &str, server: &str, status: McpToolCallStatus) -> TurnItem { + TurnItem::McpToolCall(McpToolCallItem { + id: id.to_string(), + server: server.to_string(), + tool: "create_thread".to_string(), + arguments: serde_json::Value::Null, + connector_id: None, + mcp_app_resource_uri: None, + link_id: None, + app_name: None, + action_name: None, + plugin_id: None, + read_only_hint: None, + status, + result: None, + error: None, + duration: None, + }) +} + +fn contents(effects: RealtimeEventEffects) -> Vec { + effects + .items + .into_iter() + .map(|item| { + assert_eq!(Uuid::parse_str(&item.id).unwrap().get_version_num(), 7); + item.content + }) + .collect() +} + +#[test] +fn promotes_backing_agent_artifacts_once_without_a_client_request() { + let mut state = started_state(); + let first_delta = assistant_delta("message-1", "[analysis] ::codex-realtime-inline{}"); + assert!( + state + .observe(&first_delta, /*active_turn_id*/ None) + .items + .is_empty() + ); + + let second_delta = assistant_delta("message-1", "\nVisible explanation"); + assert_eq!( + contents(state.observe(&second_delta, /*active_turn_id*/ None)), + vec![RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "message-1".to_string(), + presentation: BemItemPresentation::InlineMarkdown, + }] + ); + + let completed = completed_item(TurnItem::AgentMessage(AgentMessageItem { + id: "message-1".to_string(), + content: vec![AgentMessageContent::Text { + text: "[analysis] ::codex-realtime-inline{}\nVisible explanation".to_string(), + }], + phase: None, + memory_citation: None, + delivery: None, + })); + assert!( + state + .observe(&completed, /*active_turn_id*/ None) + .items + .is_empty() + ); + + let next_message = assistant_delta("message-2", "::codex-realtime-inline{}\nNext message"); + assert_eq!( + contents(state.observe(&next_message, /*active_turn_id*/ None)), + vec![RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "message-2".to_string(), + presentation: BemItemPresentation::InlineMarkdown, + }] + ); + + let image = EventMsg::ItemStarted(ItemStartedEvent { + thread_id: ThreadId::new(), + turn_id: "turn-1".to_string(), + item: TurnItem::ImageGeneration(ImageGenerationItem { + id: "image-1".to_string(), + status: "in_progress".to_string(), + revised_prompt: None, + result: String::new(), + saved_path: None, + }), + started_at_ms: 0, + }); + let subagent = completed_item(TurnItem::SubAgentActivity(SubAgentActivityItem { + id: "subagent-1".to_string(), + kind: SubAgentActivityKind::Started, + agent_thread_id: ThreadId::new(), + agent_path: AgentPath::root(), + })); + for (event, item_id) in [(image, "image-1"), (subagent, "subagent-1")] { + assert_eq!( + contents(state.observe(&event, /*active_turn_id*/ None)), + vec![RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: item_id.to_string(), + presentation: BemItemPresentation::WholeItem, + }] + ); + } +} + +#[test] +fn promotes_distinct_visualizations_once_and_ignores_markdown_fences() { + let mut state = started_state(); + let text = "```\n::codex-inline-vis{file=hidden}\n```\n~~~\nvisualize{file=also-hidden}\n~~~\n::codex-inline-vis{file=first}\nvisualize{file=second}"; + let message = assistant_delta("message-1", text); + assert_eq!( + contents(state.observe(&message, /*active_turn_id*/ None)), + (0..2) + .map(|index| RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "message-1".to_string(), + presentation: BemItemPresentation::InlineVisualization { index }, + }) + .collect::>() + ); + + let completed = completed_item(TurnItem::AgentMessage(AgentMessageItem { + id: "message-1".to_string(), + content: vec![AgentMessageContent::Text { + text: text.to_string(), + }], + phase: None, + memory_citation: None, + delivery: None, + })); + assert!( + state + .observe(&completed, /*active_turn_id*/ None) + .items + .is_empty() + ); +} + +#[test] +fn streams_stable_segment_items_and_ignores_upstream_transcript_revisions() { + let mut state = started_state(); + let effects = observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDelta(RealtimeTranscriptDelta { + delta: "hello".to_string(), + }), + ); + assert!(effects.items.is_empty()); + let stream = effects.transcript_stream.expect("streaming delta"); + let started = stream.started_item.expect("segment start"); + assert_eq!(stream.item_id, started.id); + assert_eq!(Uuid::parse_str(&started.id).unwrap().get_version_num(), 7); + assert_eq!(stream.delta, "hello"); + + let done = observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDone(RealtimeTranscriptDone { + text: "a substantially different upstream revision".to_string(), + }), + ); + assert_eq!( + done.items, + vec![RealtimeItem { + id: started.id, + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "hello".to_string(), + }, + }], + ); + assert!(done.transcript_stream.is_none()); +} + +#[test] +fn emits_the_complete_item_lifecycle_when_only_a_final_transcript_arrives() { + let mut state = started_state(); + let effects = observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDone(RealtimeTranscriptDone { + text: "final transcript".to_string(), + }), + ); + let stream = effects.transcript_stream.expect("final transcript stream"); + let started = stream.started_item.expect("transcript item started"); + assert_eq!(stream.item_id, started.id); + assert_eq!(stream.delta, "final transcript"); + assert_eq!( + effects.items, + vec![RealtimeItem { + id: started.id, + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "final transcript".to_string(), + }, + }] + ); +} + +#[test] +fn preserves_first_transcript_activity_order_when_both_speakers_are_active() { + for roles in [ + [ + RealtimeTranscriptRole::Assistant, + RealtimeTranscriptRole::User, + ], + [ + RealtimeTranscriptRole::User, + RealtimeTranscriptRole::Assistant, + ], + ] { + let mut state = started_state(); + for role in roles { + let delta = RealtimeTranscriptDelta { + delta: format!("{role:?} speech"), + }; + observe_realtime( + &mut state, + match role { + RealtimeTranscriptRole::User => RealtimeEvent::InputTranscriptDelta(delta), + RealtimeTranscriptRole::Assistant => { + RealtimeEvent::OutputTranscriptDelta(delta) + } + }, + ); + } + let items = state + .observe( + &EventMsg::RealtimeConversationClosed(RealtimeConversationClosedEvent { + reason: None, + }), + /*active_turn_id*/ None, + ) + .items; + let observed_roles = items + .iter() + .filter_map(|item| match item.content { + RealtimeItemContent::TranscriptSegment { role, .. } => Some(role), + _ => None, + }) + .collect::>(); + assert_eq!(observed_roles, roles); + } +} + +#[test] +fn does_not_replay_a_final_transcript_after_a_promotion_split() { + let mut state = started_state(); + observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDelta(RealtimeTranscriptDelta { + delta: "Already spoken".to_string(), + }), + ); + let promotion = completed_item(dynamic_tool_call( + "successful-tool", + DynamicToolCallStatus::Completed, + )); + assert_eq!( + state + .observe(&promotion, /*active_turn_id*/ None) + .items + .len(), + 2 + ); + + let done = observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDone(RealtimeTranscriptDone { + text: "Already spoken, with an upstream revision".to_string(), + }), + ); + assert!(done.items.is_empty()); + assert!(done.transcript_stream.is_none()); +} + +#[test] +fn generates_distinct_boundary_ids_for_reused_realtime_sessions() { + let mut state = RealtimeHistoryState::default(); + let mut boundary_ids = Vec::new(); + for _ in 0..2 { + let started = state.observe( + &EventMsg::RealtimeConversationStarted(RealtimeConversationStartedEvent { + realtime_session_id: Some("reused-session".to_string()), + version: RealtimeConversationVersion::V2, + }), + /*active_turn_id*/ None, + ); + let closed = state.observe( + &EventMsg::RealtimeConversationClosed(RealtimeConversationClosedEvent { reason: None }), + /*active_turn_id*/ None, + ); + for item in started.items.into_iter().chain(closed.items) { + assert_eq!(item.realtime_session_id, "reused-session"); + assert_eq!(Uuid::parse_str(&item.id).unwrap().get_version_num(), 7); + boundary_ids.push(item.id); + } + } + let unique_ids = boundary_ids + .iter() + .collect::>(); + assert_eq!(unique_ids.len(), 4); + + let fallback = state.observe( + &EventMsg::RealtimeConversationStarted(RealtimeConversationStartedEvent { + realtime_session_id: None, + version: RealtimeConversationVersion::V2, + }), + /*active_turn_id*/ None, + ); + assert_eq!(fallback.items.len(), 1); + assert_eq!( + Uuid::parse_str(&fallback.items[0].realtime_session_id) + .unwrap() + .get_version_num(), + 7 + ); +} + +#[test] +fn promotes_successful_codex_app_mcp_calls_and_splits_active_transcripts() { + let mut state = started_state(); + observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDelta(RealtimeTranscriptDelta { + delta: "Before tool.".to_string(), + }), + ); + for (server, status) in [ + ("other_server", McpToolCallStatus::Completed), + ("codex_app", McpToolCallStatus::InProgress), + ("codex_app", McpToolCallStatus::Failed), + ] { + assert!( + state + .observe( + &completed_item(mcp_tool_call("not-promoted", server, status)), + /*active_turn_id*/ None, + ) + .items + .is_empty() + ); + } + let completed = completed_item(mcp_tool_call( + "app-tool", + "codex_app", + McpToolCallStatus::Completed, + )); + assert_eq!( + contents(state.observe(&completed, /*active_turn_id*/ None)), + vec![ + RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "Before tool.".to_string(), + }, + RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "app-tool".to_string(), + presentation: BemItemPresentation::WholeItem, + }, + ] + ); + assert!( + state + .observe(&completed, /*active_turn_id*/ None) + .items + .is_empty() + ); +} + +#[test] +fn promotes_successful_dynamic_tools_and_splits_active_transcripts() { + let mut state = started_state(); + let first = observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDelta(RealtimeTranscriptDelta { + delta: "Before tool. ".to_string(), + }), + ) + .transcript_stream + .expect("first transcript stream"); + + let failed = completed_item(dynamic_tool_call( + "failed-tool", + DynamicToolCallStatus::Failed, + )); + assert!( + state + .observe(&failed, /*active_turn_id*/ None) + .items + .is_empty() + ); + + let completed = completed_item(dynamic_tool_call( + "successful-tool", + DynamicToolCallStatus::Completed, + )); + let items = state.observe(&completed, /*active_turn_id*/ None).items; + assert_eq!(items.len(), 2); + assert_eq!( + items[0], + RealtimeItem { + id: first.item_id.clone(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "Before tool. ".to_string(), + }, + } + ); + assert_eq!( + items[1].content, + RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "successful-tool".to_string(), + presentation: BemItemPresentation::WholeItem, + } + ); + assert_eq!(Uuid::parse_str(&items[1].id).unwrap().get_version_num(), 7); + + let second = observe_realtime( + &mut state, + RealtimeEvent::OutputTranscriptDelta(RealtimeTranscriptDelta { + delta: "After tool.".to_string(), + }), + ) + .transcript_stream + .expect("second transcript stream"); + assert_ne!(first.item_id, second.item_id); + assert!(second.started_item.is_some()); + assert!( + state + .observe(&completed, /*active_turn_id*/ None) + .items + .is_empty() + ); + + let closed = state.observe( + &EventMsg::RealtimeConversationClosed(RealtimeConversationClosedEvent { reason: None }), + /*active_turn_id*/ None, + ); + assert_eq!(closed.items[0].id, second.item_id); + let late = completed_item(dynamic_tool_call( + "late-tool", + DynamicToolCallStatus::Completed, + )); + assert!( + state + .observe(&late, /*active_turn_id*/ None) + .items + .is_empty() + ); + + state.observe( + &EventMsg::RealtimeConversationStarted(RealtimeConversationStartedEvent { + realtime_session_id: Some("voice-2".to_string()), + version: RealtimeConversationVersion::V2, + }), + Some("turn-1"), + ); + let resumed = state.observe(&late, /*active_turn_id*/ None).items; + assert_eq!(resumed.len(), 1); + assert_eq!(resumed[0].realtime_session_id, "voice-2"); +} diff --git a/codex-rs/app-server/src/request_processors.rs b/codex-rs/app-server/src/request_processors.rs index 28d48e299f..9c0f6b7567 100644 --- a/codex-rs/app-server/src/request_processors.rs +++ b/codex-rs/app-server/src/request_processors.rs @@ -284,6 +284,8 @@ use codex_app_server_protocol::ThreadStartParams; use codex_app_server_protocol::ThreadStartResponse; use codex_app_server_protocol::ThreadStartedNotification; use codex_app_server_protocol::ThreadStatus; +use codex_app_server_protocol::ThreadTimelineListParams; +use codex_app_server_protocol::ThreadTimelineListResponse; use codex_app_server_protocol::ThreadTurnsListParams; use codex_app_server_protocol::ThreadTurnsListResponse; use codex_app_server_protocol::ThreadUnarchiveParams; @@ -481,6 +483,7 @@ use codex_thread_store::GitInfoPatch as StoreGitInfoPatch; use codex_thread_store::ItemSortKey as StoreItemSortKey; use codex_thread_store::ListItemsParams as StoreListItemsParams; use codex_thread_store::ListThreadsParams as StoreListThreadsParams; +use codex_thread_store::ListTimelineParams as StoreListTimelineParams; use codex_thread_store::ListTurnsParams as StoreListTurnsParams; use codex_thread_store::LoadThreadHistoryParams as StoreLoadThreadHistoryParams; use codex_thread_store::LocalThreadStore; diff --git a/codex-rs/app-server/src/request_processors/thread_lifecycle.rs b/codex-rs/app-server/src/request_processors/thread_lifecycle.rs index 2cbf81d085..7060ec4f32 100644 --- a/codex-rs/app-server/src/request_processors/thread_lifecycle.rs +++ b/codex-rs/app-server/src/request_processors/thread_lifecycle.rs @@ -1,8 +1,12 @@ use super::*; use crate::extensions::send_thread_warning; +use crate::realtime_event_handling::apply_realtime_event_effects; +use crate::realtime_event_handling::persist_realtime_items; +use crate::realtime_history::RealtimeEventEffects; use codex_app_server_protocol::ThreadQueueChangedNotification; use codex_extension_api::ThreadIdleCause; use codex_protocol::config_types::MultiAgentMode; +use codex_protocol::protocol::ThreadHistoryMode; pub(super) const THREAD_UNLOADING_DELAY: Duration = Duration::from_secs(30 * 60); @@ -242,8 +246,10 @@ pub(super) async fn ensure_listener_task_running( &environments, ) .await; - let thread_settings_baseline = - thread_settings_from_config_snapshot(&conversation.config_snapshot().await); + let config_snapshot = conversation.config_snapshot().await; + let realtime_history_enabled = + matches!(config_snapshot.history_mode, ThreadHistoryMode::Paginated); + let thread_settings_baseline = thread_settings_from_config_snapshot(&config_snapshot); let (mut listener_command_rx, listener_generation) = { let mut thread_state = thread_state.lock().await; if thread_state.listener_matches(&conversation) { @@ -325,10 +331,20 @@ pub(super) async fn ensure_listener_task_running( // Track the event before emitting any typed translations // so thread-local state such as raw event opt-in stays // synchronized with the conversation. - let raw_events_enabled = { + let (raw_events_enabled, realtime_effects) = { let mut thread_state = thread_state.lock().await; thread_state.track_current_turn_event(&event.id, &event.msg); - thread_state.experimental_raw_events + let realtime_effects = if realtime_history_enabled + && thread_state.realtime_history.should_observe(&event.msg) + { + let active_turn_id = thread_state.active_turn_snapshot().map(|turn| turn.id); + thread_state + .realtime_history + .observe(&event.msg, active_turn_id.as_deref()) + } else { + RealtimeEventEffects::default() + }; + (thread_state.experimental_raw_events, realtime_effects) }; if matches!( &event.msg, @@ -346,6 +362,14 @@ pub(super) async fn ensure_listener_task_running( conversation_id, ); + apply_realtime_event_effects( + conversation.as_ref(), + &thread_outgoing, + conversation_id, + realtime_effects, + ) + .await; + apply_bespoke_event_handling( event.clone(), conversation_id, @@ -558,6 +582,32 @@ pub(super) async fn handle_thread_listener_command( .await; let _ = completion_tx.send(()); } + ThreadListenerCommand::SealRealtimeUserInput { + input, + completion_tx, + } => { + let items = thread_state + .lock() + .await + .realtime_history + .seal_user_input(&input); + let subscribed_connection_ids = thread_state_manager + .subscribed_connection_ids(conversation_id) + .await; + let thread_outgoing = ThreadScopedOutgoingMessageSender::new( + outgoing.clone(), + subscribed_connection_ids, + conversation_id, + ); + let result = persist_realtime_items( + conversation.as_ref(), + &thread_outgoing, + &conversation_id.to_string(), + items, + ) + .await; + let _ = completion_tx.send(result); + } } } diff --git a/codex-rs/app-server/src/request_processors/thread_processor.rs b/codex-rs/app-server/src/request_processors/thread_processor.rs index be6c016a11..686d5dd201 100644 --- a/codex-rs/app-server/src/request_processors/thread_processor.rs +++ b/codex-rs/app-server/src/request_processors/thread_processor.rs @@ -870,6 +870,35 @@ impl ThreadRequestProcessor { .map(|response| Some(response.into())) } + pub(crate) async fn thread_timeline_list( + &self, + params: ThreadTimelineListParams, + ) -> Result, JSONRPCErrorError> { + let thread_id = ThreadId::from_string(¶ms.thread_id) + .map_err(|error| invalid_request(format!("invalid thread id: {error}")))?; + let page = self + .thread_store + .list_timeline(StoreListTimelineParams { + thread_id, + cursor: params.cursor, + page_size: params + .limit + .map(|limit| limit as usize) + .unwrap_or(THREAD_ITEMS_DEFAULT_LIMIT) + .clamp(1, THREAD_ITEMS_MAX_LIMIT), + }) + .await + .map_err(paginated_history_list_error)?; + Ok(Some( + ThreadTimelineListResponse { + data: page.items, + next_cursor: page.next_cursor, + active_realtime_session_at_page_start: page.active_realtime_session_at_page_start, + } + .into(), + )) + } + pub(crate) async fn thread_shell_command( &self, request_id: &ConnectionRequestId, diff --git a/codex-rs/app-server/src/request_processors/turn_processor.rs b/codex-rs/app-server/src/request_processors/turn_processor.rs index c74d279df5..5dfd2c5701 100644 --- a/codex-rs/app-server/src/request_processors/turn_processor.rs +++ b/codex-rs/app-server/src/request_processors/turn_processor.rs @@ -528,6 +528,9 @@ impl TurnRequestProcessor { }, ) .await?; + self.seal_realtime_transcript_before_user_input(thread_id, &mapped_items) + .await?; + let submission = thread .start_or_steer_turn( TurnInputRequest::new(TurnInput::UserInput { @@ -901,12 +904,12 @@ impl TurnRequestProcessor { request_id: &ConnectionRequestId, params: TurnSteerParams, ) -> Result { - let (_, thread) = self - .load_thread(¶ms.thread_id) - .await - .inspect_err(|error| { - self.track_error_response(request_id, error, /*error_type*/ None); - })?; + let (thread_id, thread) = + self.load_thread(¶ms.thread_id) + .await + .inspect_err(|error| { + self.track_error_response(request_id, error, /*error_type*/ None); + })?; self.ensure_direct_input_allowed(request_id, thread.as_ref()) .await?; @@ -932,6 +935,9 @@ impl TurnRequestProcessor { .collect(); let additional_context = map_additional_context(params.additional_context); + self.seal_realtime_transcript_before_user_input(thread_id, &mapped_items) + .await?; + let submission = thread .steer_turn( TurnInputRequest::new(TurnInput::UserInput { @@ -1027,6 +1033,37 @@ impl TurnRequestProcessor { Ok(TurnSteerResponse { turn_id }) } + async fn seal_realtime_transcript_before_user_input( + &self, + thread_id: ThreadId, + input: &[CoreInputItem], + ) -> Result<(), JSONRPCErrorError> { + let thread_state = self.thread_state_manager.thread_state(thread_id).await; + if !thread_state + .lock() + .await + .realtime_history + .should_seal_user_input(input) + { + return Ok(()); + } + let listener = self + .thread_state_manager + .current_listener_command_tx(thread_id) + .ok_or_else(|| internal_error("thread listener is not running"))?; + let (completion_tx, completion_rx) = tokio::sync::oneshot::channel(); + listener + .send(ThreadListenerCommand::SealRealtimeUserInput { + input: input.to_vec(), + completion_tx, + }) + .map_err(|_| internal_error("thread listener is not running"))?; + completion_rx + .await + .map_err(|_| internal_error("thread listener stopped before sealing realtime input"))? + .map_err(internal_error) + } + async fn prepare_realtime_conversation_thread( &self, request_id: &ConnectionRequestId, diff --git a/codex-rs/app-server/src/thread_state.rs b/codex-rs/app-server/src/thread_state.rs index 3795638cdd..402783151e 100644 --- a/codex-rs/app-server/src/thread_state.rs +++ b/codex-rs/app-server/src/thread_state.rs @@ -1,5 +1,6 @@ use crate::outgoing_message::ConnectionId; use crate::outgoing_message::ConnectionRequestId; +use crate::realtime_history::RealtimeHistoryState; use codex_app_server_protocol::RequestId; use codex_app_server_protocol::ThreadGoal; use codex_app_server_protocol::ThreadHistoryBuilder; @@ -17,6 +18,7 @@ use codex_protocol::items::AgentMessageContent as CoreAgentMessageContent; use codex_protocol::items::TurnItem as CoreTurnItem; use codex_protocol::models::MessagePhase; use codex_protocol::protocol::EventMsg; +use codex_protocol::user_input::UserInput; use codex_rollout::RolloutItem; use codex_rollout::state_db::StateDbHandle; use codex_utils_path_uri::LegacyAppPathString; @@ -81,6 +83,10 @@ pub(crate) enum ThreadListenerCommand { request_id: RequestId, completion_tx: oneshot::Sender<()>, }, + SealRealtimeUserInput { + input: Vec, + completion_tx: oneshot::Sender>, + }, } /// Per-conversation accumulation of the latest states e.g. error message while a turn runs. @@ -104,6 +110,7 @@ pub(crate) struct ThreadState { pub(crate) cancel_tx: Option>, pub(crate) experimental_raw_events: bool, pub(crate) listener_generation: u64, + pub(crate) realtime_history: RealtimeHistoryState, last_thread_settings: Option, listener_command_tx: Option>, current_turn_history: ThreadHistoryBuilder, diff --git a/codex-rs/app-server/tests/common/test_app_server.rs b/codex-rs/app-server/tests/common/test_app_server.rs index 4a154d0606..b6ff5f97cc 100644 --- a/codex-rs/app-server/tests/common/test_app_server.rs +++ b/codex-rs/app-server/tests/common/test_app_server.rs @@ -113,6 +113,7 @@ use codex_app_server_protocol::ThreadSettingsUpdateParams; use codex_app_server_protocol::ThreadShellCommandParams; use codex_app_server_protocol::ThreadStartParams; use codex_app_server_protocol::ThreadStartResponse; +use codex_app_server_protocol::ThreadTimelineListParams; use codex_app_server_protocol::ThreadTurnsListParams; use codex_app_server_protocol::ThreadUnarchiveParams; use codex_app_server_protocol::ThreadUnsubscribeParams; @@ -1191,6 +1192,14 @@ impl TestAppServer { self.send_request("thread/realtime/stop", params).await } + pub async fn send_thread_timeline_list_request( + &mut self, + params: ThreadTimelineListParams, + ) -> anyhow::Result { + self.send_request("thread/timeline/list", Some(serde_json::to_value(params)?)) + .await + } + pub async fn send_thread_realtime_list_voices_request( &mut self, params: ThreadRealtimeListVoicesParams, diff --git a/codex-rs/app-server/tests/suite/v2/mod.rs b/codex-rs/app-server/tests/suite/v2/mod.rs index ba7043a5a1..5f9eaeff4c 100644 --- a/codex-rs/app-server/tests/suite/v2/mod.rs +++ b/codex-rs/app-server/tests/suite/v2/mod.rs @@ -110,6 +110,7 @@ mod thread_settings_update; mod thread_shell_command; mod thread_start; mod thread_status; +mod thread_timeline; mod thread_unarchive; mod thread_unsubscribe; mod turn_interrupt; diff --git a/codex-rs/app-server/tests/suite/v2/realtime_conversation.rs b/codex-rs/app-server/tests/suite/v2/realtime_conversation.rs index 38684e79d4..9cf86981bf 100644 --- a/codex-rs/app-server/tests/suite/v2/realtime_conversation.rs +++ b/codex-rs/app-server/tests/suite/v2/realtime_conversation.rs @@ -11,6 +11,7 @@ use codex_app_server_protocol::ItemStartedNotification; use codex_app_server_protocol::JSONRPCError; use codex_app_server_protocol::LoginAccountResponse; use codex_app_server_protocol::RequestId; +use codex_app_server_protocol::ThreadHistoryMode; use codex_app_server_protocol::ThreadItem; use codex_app_server_protocol::ThreadRealtimeAppendAudioParams; use codex_app_server_protocol::ThreadRealtimeAppendAudioResponse; @@ -22,7 +23,12 @@ use codex_app_server_protocol::ThreadRealtimeAudioChunk; use codex_app_server_protocol::ThreadRealtimeClosedNotification; use codex_app_server_protocol::ThreadRealtimeErrorNotification; use codex_app_server_protocol::ThreadRealtimeInitialItem; +use codex_app_server_protocol::ThreadRealtimeItem; use codex_app_server_protocol::ThreadRealtimeItemAddedNotification; +use codex_app_server_protocol::ThreadRealtimeItemCompletedNotification; +use codex_app_server_protocol::ThreadRealtimeItemContent; +use codex_app_server_protocol::ThreadRealtimeItemStartedNotification; +use codex_app_server_protocol::ThreadRealtimeItemTranscriptDeltaNotification; use codex_app_server_protocol::ThreadRealtimeListVoicesParams; use codex_app_server_protocol::ThreadRealtimeListVoicesResponse; use codex_app_server_protocol::ThreadRealtimeOutputAudioDeltaNotification; @@ -37,10 +43,15 @@ use codex_app_server_protocol::ThreadRealtimeTranscriptDeltaNotification; use codex_app_server_protocol::ThreadRealtimeTranscriptDoneNotification; use codex_app_server_protocol::ThreadStartParams; use codex_app_server_protocol::ThreadStartResponse; +use codex_app_server_protocol::ThreadTimelineEntry; +use codex_app_server_protocol::ThreadTimelineListParams; +use codex_app_server_protocol::ThreadTimelineListResponse; use codex_app_server_protocol::TurnCompletedNotification; use codex_app_server_protocol::TurnStartParams; use codex_app_server_protocol::TurnStartResponse; use codex_app_server_protocol::TurnStartedNotification; +use codex_app_server_protocol::TurnSteerParams; +use codex_app_server_protocol::TurnSteerResponse; use codex_app_server_protocol::UserInput as V2UserInput; use codex_features::Feature; use codex_protocol::protocol::CodexResponseHandoffMode; @@ -70,6 +81,7 @@ use std::time::Duration; use tempfile::TempDir; use test_case::test_case; use tokio::time::timeout; +use uuid::Uuid; use wiremock::Match; use wiremock::Mock; use wiremock::MockServer; @@ -643,6 +655,119 @@ fn v2_background_agent_tool_call(call_id: &str, prompt: &str) -> Value { }) } +#[tokio::test] +async fn realtime_conversation_streams_timeline_items() -> Result<()> { + skip_if_no_network!(Ok(())); + + let responses_server = create_mock_responses_server_sequence_unchecked(Vec::new()).await; + let realtime_server = start_websocket_server(vec![vec![vec![ + session_updated("voice-1"), + json!({ "type": "response.output_text.delta", "delta": "hello" }), + json!({ + "type": "response.output_text.done", + "text": "a substantially different final revision" + }), + ]]]) + .await; + let codex_home = TempDir::new()?; + create_config_toml( + codex_home.path(), + &responses_server.uri(), + realtime_server.uri(), + /*realtime_enabled*/ true, + StartupContextConfig::Generated, + )?; + + let mut mcp = TestAppServer::builder() + .with_codex_home(codex_home.path()) + .build() + .await?; + mcp.initialize().await?; + login_with_api_key(&mut mcp, "sk-test-key").await?; + + let thread_request = mcp + .send_thread_start_request_with_auto_env(ThreadStartParams { + history_mode: Some(ThreadHistoryMode::Paginated), + ..Default::default() + }) + .await?; + let thread: ThreadStartResponse = + timeout(DEFAULT_TIMEOUT, mcp.read_response(thread_request)).await??; + let request = mcp + .send_thread_realtime_start_request(ThreadRealtimeStartParams { + thread_id: thread.thread.id.clone(), + client_managed_handoffs: None, + delegation_ack_filler: None, + flush_transcript_tail_on_session_end: None, + codex_responses_as_items: None, + codex_response_item_prefix: None, + codex_response_handoff_mode: None, + codex_response_handoff_channel_prefixes: None, + model: None, + output_modality: RealtimeOutputModality::Audio, + include_startup_context: None, + initial_items: None, + realtime_start_instructions: None, + realtime_end_instructions: None, + prompt: None, + realtime_session_id: None, + transport: None, + version: None, + voice: None, + }) + .await?; + let _: ThreadRealtimeStartResponse = + timeout(DEFAULT_TIMEOUT, mcp.read_response(request)).await??; + + let session_started = read_notification::( + &mut mcp, + "thread/realtime/item/started", + ) + .await?; + let session_completed = read_notification::( + &mut mcp, + "thread/realtime/item/completed", + ) + .await?; + assert_eq!(session_started.item, session_completed.item); + assert_eq!( + Uuid::parse_str(&session_started.item.id)?.get_version_num(), + 7 + ); + assert!(matches!( + session_completed.item.content, + ThreadRealtimeItemContent::RealtimeSessionStarted + )); + + let started = read_notification::( + &mut mcp, + "thread/realtime/item/started", + ) + .await?; + let delta = read_notification::( + &mut mcp, + "thread/realtime/item/transcript/delta", + ) + .await?; + let completed = read_notification::( + &mut mcp, + "thread/realtime/item/completed", + ) + .await?; + assert_eq!(Uuid::parse_str(&started.item.id)?.get_version_num(), 7); + assert_ne!(started.item.id, session_started.item.id); + assert_eq!(delta.item_id, started.item.id); + assert_eq!(completed.item.id, started.item.id); + assert_eq!(delta.delta, "hello"); + assert!(matches!( + completed.item.content, + ThreadRealtimeItemContent::TranscriptSegment { text, .. } if text == "hello" + )); + + realtime_server.shutdown().await; + Ok(()) +} + #[tokio::test] async fn realtime_conversation_streams_v2_notifications() -> Result<()> { skip_if_no_network!(Ok(())); @@ -729,7 +854,10 @@ async fn realtime_conversation_streams_v2_notifications() -> Result<()> { login_with_api_key(&mut mcp, "sk-test-key").await?; let thread_start_request_id = mcp - .send_thread_start_request_with_auto_env(ThreadStartParams::default()) + .send_thread_start_request_with_auto_env(ThreadStartParams { + history_mode: Some(ThreadHistoryMode::Paginated), + ..Default::default() + }) .await?; let thread_start: ThreadStartResponse = timeout(DEFAULT_TIMEOUT, mcp.read_response(thread_start_request_id)).await??; @@ -910,6 +1038,46 @@ async fn realtime_conversation_streams_v2_notifications() -> Result<()> { assert_eq!(closed.thread_id, output_audio.thread_id); assert_eq!(closed.reason.as_deref(), Some("error")); + let history_request = mcp + .send_thread_timeline_list_request(ThreadTimelineListParams { + thread_id: thread_start.thread.id.clone(), + cursor: None, + limit: Some(100), + }) + .await?; + let history: ThreadTimelineListResponse = + timeout(DEFAULT_TIMEOUT, mcp.read_response(history_request)).await??; + assert!(matches!( + history.data.first(), + Some(ThreadTimelineEntry::Realtime { + item: ThreadRealtimeItem { + content: ThreadRealtimeItemContent::RealtimeSessionStarted, + .. + }, + .. + }) + )); + assert!(history.data.iter().any(|entry| matches!( + entry, + ThreadTimelineEntry::Realtime { + item: ThreadRealtimeItem { + content: ThreadRealtimeItemContent::TranscriptSegment { .. }, + .. + }, + .. + } + ))); + assert!(matches!( + history.data.last(), + Some(ThreadTimelineEntry::Realtime { + item: ThreadRealtimeItem { + content: ThreadRealtimeItemContent::RealtimeSessionClosed { .. }, + .. + }, + .. + }) + )); + let connections = realtime_server.connections(); assert_eq!(connections.len(), 1); let connection = &connections[0]; @@ -984,6 +1152,201 @@ async fn realtime_conversation_streams_v2_notifications() -> Result<()> { Ok(()) } +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn realtime_timeline_splits_accepted_steering_and_persists_promoted_artifacts() -> Result<()> +{ + skip_if_no_network!(Ok(())); + + let responses_server = responses::start_mock_server().await; + let (gate_tx, gate_rx) = mpsc::channel(); + Mock::given(method("POST")) + .and(path_regex(".*/responses$")) + .respond_with(GatedSseResponse { + gate_rx: Mutex::new(Some(gate_rx)), + response: responses::sse(vec![ + responses::ev_response_created("response-1"), + responses::ev_assistant_message( + "promoted-message", + "::codex-realtime-inline{}\nVisible artifact", + ), + responses::ev_completed("response-1"), + ]), + }) + .expect(2) + .mount(&responses_server) + .await; + + let mut harness = RealtimeE2eHarness::new_with_main_loop_responses_server( + RealtimeTestVersion::V2, + responses_server, + realtime_sideband(vec![open_realtime_sideband_connection(vec![ + vec![session_updated("voice-steering")], + vec![json!({ + "type": "response.output_text.delta", + "delta": "Spoken before steering" + })], + ])]), + ) + .await?; + let thread_request = harness + .mcp + .send_thread_start_request_with_auto_env(ThreadStartParams { + history_mode: Some(ThreadHistoryMode::Paginated), + ..Default::default() + }) + .await?; + let thread: ThreadStartResponse = + timeout(DEFAULT_TIMEOUT, harness.mcp.read_response(thread_request)).await??; + harness.thread_id = thread.thread.id; + let realtime_session_id = harness + .start_websocket_realtime() + .await? + .realtime_session_id + .context("realtime started notification should include a session ID")?; + + let turn_request = harness + .mcp + .send_turn_start_request(TurnStartParams { + thread_id: harness.thread_id.clone(), + input: vec![V2UserInput::Text { + text: "Start work".to_string(), + text_elements: Vec::new(), + }], + ..Default::default() + }) + .await?; + let turn: TurnStartResponse = + timeout(DEFAULT_TIMEOUT, harness.mcp.read_response(turn_request)).await??; + harness + .read_notification::("turn/started") + .await?; + + harness + .append_text(harness.thread_id.clone(), "Trigger speech") + .await?; + harness + .read_notification::( + "thread/realtime/transcript/delta", + ) + .await?; + + let steering_request = harness + .mcp + .send_turn_steer_request(TurnSteerParams { + thread_id: harness.thread_id.clone(), + input: vec![V2UserInput::Text { + text: "Accepted steering".to_string(), + text_elements: Vec::new(), + }], + expected_turn_id: turn.turn.id.clone(), + additional_context: None, + client_user_message_id: Some("accepted-steer".to_string()), + responsesapi_client_metadata: None, + }) + .await?; + let accepted: TurnSteerResponse = + timeout(DEFAULT_TIMEOUT, harness.mcp.read_response(steering_request)).await??; + assert_eq!(accepted.turn_id, turn.turn.id); + + let _ = gate_tx.send(()); + harness + .read_notification::("turn/completed") + .await?; + let page_request = harness + .mcp + .send_thread_timeline_list_request(ThreadTimelineListParams { + thread_id: harness.thread_id.clone(), + cursor: None, + limit: Some(100), + }) + .await?; + let page: ThreadTimelineListResponse = + timeout(DEFAULT_TIMEOUT, harness.mcp.read_response(page_request)).await??; + let transcript_index = page + .data + .iter() + .position(|entry| { + matches!( + entry, + ThreadTimelineEntry::Realtime { + item: ThreadRealtimeItem { + content: ThreadRealtimeItemContent::TranscriptSegment { text, .. }, + .. + }, + .. + } if text == "Spoken before steering" + ) + }) + .context("accepted steering should seal the active transcript")?; + let steering_index = page + .data + .iter() + .position(|entry| { + matches!( + entry, + ThreadTimelineEntry::Item { + item, + .. + } if matches!( + item.as_ref(), + ThreadItem::UserMessage { client_id, .. } + if client_id.as_deref() == Some("accepted-steer") + ) + ) + }) + .context("accepted steering should be included in the timeline")?; + assert!(transcript_index < steering_index); + assert!(page.data.iter().any(|entry| matches!( + entry, + ThreadTimelineEntry::Realtime { + item: ThreadRealtimeItem { + content: ThreadRealtimeItemContent::BemItemPromoted { item_id, .. }, + .. + }, + .. + } if item_id == "promoted-message" + ))); + for entry in &page.data { + if let ThreadTimelineEntry::Realtime { item, .. } = entry { + assert_eq!(Uuid::parse_str(&item.id)?.get_version_num(), 7); + } + } + + let bounded_request = harness + .mcp + .send_thread_timeline_list_request(ThreadTimelineListParams { + thread_id: harness.thread_id.clone(), + cursor: None, + limit: Some(1), + }) + .await?; + let bounded: ThreadTimelineListResponse = + timeout(DEFAULT_TIMEOUT, harness.mcp.read_response(bounded_request)).await??; + assert_eq!(bounded.data.len(), 1); + assert_eq!( + bounded.active_realtime_session_at_page_start.as_deref(), + Some(realtime_session_id.as_str()) + ); + let older_request = harness + .mcp + .send_thread_timeline_list_request(ThreadTimelineListParams { + thread_id: harness.thread_id.clone(), + cursor: Some(bounded.next_cursor.context("bounded timeline cursor")?), + limit: Some(1), + }) + .await?; + let older: ThreadTimelineListResponse = + timeout(DEFAULT_TIMEOUT, harness.mcp.read_response(older_request)).await??; + assert_eq!(older.data.len(), 1); + assert_eq!( + older.active_realtime_session_at_page_start.as_deref(), + Some(realtime_session_id.as_str()) + ); + + harness.shutdown().await; + Ok(()) +} + #[tokio::test] async fn realtime_start_can_skip_startup_context() -> Result<()> { skip_if_no_network!(Ok(())); diff --git a/codex-rs/app-server/tests/suite/v2/thread_timeline.rs b/codex-rs/app-server/tests/suite/v2/thread_timeline.rs new file mode 100644 index 0000000000..6c799a4dbb --- /dev/null +++ b/codex-rs/app-server/tests/suite/v2/thread_timeline.rs @@ -0,0 +1,224 @@ +use anyhow::Result; +use app_test_support::MockResponsesConfig; +use app_test_support::TestAppServer; +use app_test_support::create_mock_responses_server_repeating_assistant; +use codex_app_server_protocol::ClientRequest; +use codex_app_server_protocol::SortDirection; +use codex_app_server_protocol::ThreadItem; +use codex_app_server_protocol::ThreadItemsListParams; +use codex_app_server_protocol::ThreadItemsListResponse; +use codex_app_server_protocol::ThreadRealtimeItemContent; +use codex_app_server_protocol::ThreadTimelineEntry; +use codex_app_server_protocol::ThreadTimelineListParams; +use codex_app_server_protocol::ThreadTimelineListResponse; +use codex_protocol::ThreadId; +use codex_protocol::items::TurnItem; +use codex_protocol::items::UserMessageItem; +use codex_protocol::models::BaseInstructions; +use codex_protocol::protocol::EventMsg; +use codex_protocol::protocol::ItemCompletedEvent; +use codex_protocol::protocol::SessionSource; +use codex_protocol::protocol::ThreadHistoryMode; +use codex_protocol::protocol::ThreadMemoryMode; +use codex_protocol::protocol::TurnCompleteEvent; +use codex_protocol::protocol::TurnStartedEvent; +use codex_protocol::realtime::RealtimeItem; +use codex_protocol::realtime::RealtimeItemContent; +use codex_protocol::realtime::RealtimeTranscriptRole; +use codex_protocol::user_input::UserInput; +use codex_rollout::RolloutItem; +use codex_thread_store::AppendThreadItemsParams; +use codex_thread_store::CreateThreadParams; +use codex_thread_store::LocalThreadStore; +use codex_thread_store::LocalThreadStoreConfig; +use codex_thread_store::PersistContext; +use codex_thread_store::ThreadPersistenceMetadata; +use codex_thread_store::ThreadStore; +use codex_utils_absolute_path::test_support::PathExt; +use pretty_assertions::assert_eq; +use tempfile::TempDir; +use uuid::Uuid; + +#[tokio::test] +async fn timeline_pages_mix_items_and_resolve_the_opening_realtime_session() -> Result<()> { + let server = create_mock_responses_server_repeating_assistant("Done").await; + let codex_home = TempDir::new()?; + MockResponsesConfig::new(&server.uri()).write(codex_home.path())?; + + let thread_id = ThreadId::default(); + let sqlite = codex_state::SqliteConfig::new_for_testing(codex_home.path().abs()); + let state_db = + codex_state::StateRuntime::init(sqlite.clone(), "mock_provider".to_string()).await?; + let store = LocalThreadStore::new( + LocalThreadStoreConfig { + codex_home: codex_home.path().to_path_buf(), + sqlite, + default_model_provider_id: "mock_provider".to_string(), + }, + Some(state_db), + ); + store + .create_thread(CreateThreadParams { + session_id: thread_id.into(), + thread_id, + extra_config: None, + forked_from_id: None, + parent_thread_id: None, + source: SessionSource::Cli, + thread_source: None, + originator: "test_originator".to_string(), + base_instructions: BaseInstructions::default(), + dynamic_tools: Vec::new(), + selected_capability_roots: Vec::new(), + multi_agent_version: None, + history_mode: ThreadHistoryMode::Paginated, + history_base: None, + subagent_history_start_ordinal: None, + initial_window_id: Uuid::now_v7().to_string(), + metadata: ThreadPersistenceMetadata { + cwd: Some(codex_home.path().to_path_buf()), + model_provider: "mock_provider".to_string(), + memory_mode: ThreadMemoryMode::Enabled, + }, + }) + .await?; + store + .persist_thread(thread_id, PersistContext::Standard) + .await?; + store + .append_items(AppendThreadItemsParams { + thread_id, + items: vec![ + RolloutItem::RealtimeItem(RealtimeItem { + id: "voice-1:started".to_string(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + }), + RolloutItem::EventMsg(EventMsg::TurnStarted(TurnStartedEvent { + turn_id: "turn-1".to_string(), + trace_id: None, + started_at: Some(10), + model_context_window: None, + collaboration_mode_kind: Default::default(), + })), + RolloutItem::EventMsg(EventMsg::ItemCompleted(ItemCompletedEvent { + thread_id, + turn_id: "turn-1".to_string(), + item: TurnItem::UserMessage(UserMessageItem { + id: "user-1".to_string(), + client_id: None, + content: vec![UserInput::Text { + text: "check staging".to_string(), + text_elements: Vec::new(), + }], + }), + started_at_ms: Some(0), + completed_at_ms: 1, + })), + RolloutItem::RealtimeItem(RealtimeItem { + id: "voice-1:transcript-1".to_string(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "Checking staging".to_string(), + }, + }), + RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + turn_id: "turn-1".to_string(), + last_agent_message: None, + error: None, + started_at: Some(10), + completed_at: Some(12), + duration_ms: Some(2000), + time_to_first_token_ms: None, + })), + ], + }) + .await?; + store.shutdown_thread(thread_id).await?; + + let mut app_server = TestAppServer::builder() + .with_codex_home(codex_home.path()) + .without_auto_env() + .build_initialized() + .await?; + let page: ThreadTimelineListResponse = app_server + .request(|request_id| ClientRequest::ThreadTimelineList { + request_id, + params: ThreadTimelineListParams { + thread_id: thread_id.to_string(), + cursor: None, + limit: Some(3), + }, + }) + .await?; + assert_eq!(page.data.len(), 3); + assert!(matches!( + &page.data[0], + ThreadTimelineEntry::Item { turn_id, item, .. } + if turn_id == "turn-1" + && matches!(item.as_ref(), ThreadItem::UserMessage { .. }) + )); + assert!(matches!( + &page.data[1], + ThreadTimelineEntry::Realtime { item, .. } + if matches!( + &item.content, + ThreadRealtimeItemContent::TranscriptSegment { text, .. } + if text == "Checking staging" + ) + )); + assert_eq!( + page.active_realtime_session_at_page_start.as_deref(), + Some("voice-1") + ); + assert!(matches!( + &page.data[2], + ThreadTimelineEntry::TurnCompleted { turn_id, duration_ms: Some(2000), .. } + if turn_id == "turn-1" + )); + + let older: ThreadTimelineListResponse = app_server + .request(|request_id| ClientRequest::ThreadTimelineList { + request_id, + params: ThreadTimelineListParams { + thread_id: thread_id.to_string(), + cursor: page.next_cursor, + limit: Some(2), + }, + }) + .await?; + assert_eq!(older.data.len(), 2); + assert!(matches!( + &older.data[0], + ThreadTimelineEntry::Realtime { item, .. } + if matches!( + item.content, + ThreadRealtimeItemContent::RealtimeSessionStarted + ) + )); + assert!(matches!( + &older.data[1], + ThreadTimelineEntry::TurnStarted { turn_id, started_at: Some(10), .. } + if turn_id == "turn-1" + )); + assert_eq!(older.active_realtime_session_at_page_start, None); + assert_eq!(older.next_cursor, None); + + let ordinary: ThreadItemsListResponse = app_server + .request(|request_id| ClientRequest::ThreadItemsList { + request_id, + params: ThreadItemsListParams { + thread_id: thread_id.to_string(), + turn_id: None, + cursor: None, + limit: Some(10), + sort_direction: Some(SortDirection::Asc), + }, + }) + .await?; + assert_eq!(ordinary.data.len(), 1); + assert_eq!(ordinary.data[0].turn_id, "turn-1"); + + Ok(()) +} diff --git a/codex-rs/core/src/agent/control/spawn.rs b/codex-rs/core/src/agent/control/spawn.rs index ca6e43bc05..3a9e2533bb 100644 --- a/codex-rs/core/src/agent/control/spawn.rs +++ b/codex-rs/core/src/agent/control/spawn.rs @@ -87,7 +87,8 @@ fn keep_forked_rollout_item(item: &RolloutItem, preserve_reference_context_item: | ResponseItem::ContextCompaction { .. } | ResponseItem::Other => false, }, - RolloutItem::InterAgentCommunication(_) + RolloutItem::RealtimeItem(_) + | RolloutItem::InterAgentCommunication(_) | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::SecurityRiskScore(_) => false, // Full-history forks preserve the cached prompt prefix and can keep diffing @@ -1001,6 +1002,7 @@ impl AgentControl { } true } + RolloutItem::RealtimeItem(_) => false, RolloutItem::EventMsg(_) | RolloutItem::SessionMeta(_) | RolloutItem::TurnContext(_) diff --git a/codex-rs/core/src/agent/control_tests.rs b/codex-rs/core/src/agent/control_tests.rs index 1ddc5c8875..e5b7212ca5 100644 --- a/codex-rs/core/src/agent/control_tests.rs +++ b/codex-rs/core/src/agent/control_tests.rs @@ -272,6 +272,7 @@ async fn persisted_originator(thread: &CodexThread) -> String { | RolloutItem::EventMsg(_) | RolloutItem::Compacted(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::TurnContext(_) => None, }) diff --git a/codex-rs/core/src/session/rollout_reconstruction.rs b/codex-rs/core/src/session/rollout_reconstruction.rs index dae13c97fb..3896fa2e2e 100644 --- a/codex-rs/core/src/session/rollout_reconstruction.rs +++ b/codex-rs/core/src/session/rollout_reconstruction.rs @@ -282,6 +282,7 @@ impl Session { } RolloutItem::EventMsg(_) | RolloutItem::SessionMeta(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::InterAgentCommunicationMetadata { .. } => {} } @@ -371,6 +372,7 @@ impl Session { } RolloutItem::EventMsg(_) | RolloutItem::TurnContext(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::WorldState(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::SessionMeta(_) => {} @@ -411,6 +413,7 @@ impl Session { | RolloutItem::InterAgentCommunication(_) | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::TurnContext(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => { unreachable!("only world-state replay items are collected") diff --git a/codex-rs/core/src/session/session.rs b/codex-rs/core/src/session/session.rs index 5c80eb594a..69c7f4be13 100644 --- a/codex-rs/core/src/session/session.rs +++ b/codex-rs/core/src/session/session.rs @@ -1350,6 +1350,7 @@ impl Session { | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) => {} } } diff --git a/codex-rs/core/src/session/tests.rs b/codex-rs/core/src/session/tests.rs index 239c05699b..e5b49d450c 100644 --- a/codex-rs/core/src/session/tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -3400,6 +3400,7 @@ async fn start_new_context_window_assigns_and_persists_item_ids() { | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) | RolloutItem::SecurityRiskScore(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::EventMsg(_) => None, }); assert_eq!( @@ -3478,6 +3479,7 @@ async fn record_initial_history_assigns_and_persists_id_for_forked_response_item | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) | RolloutItem::SecurityRiskScore(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::EventMsg(_) => None, }); let persisted_item = persisted_item.expect("forked response item should be persisted"); diff --git a/codex-rs/external-agent-migration/src/sessions/append.rs b/codex-rs/external-agent-migration/src/sessions/append.rs index e08f0607a8..d76a54b7ce 100644 --- a/codex-rs/external-agent-migration/src/sessions/append.rs +++ b/codex-rs/external-agent-migration/src/sessions/append.rs @@ -217,7 +217,9 @@ fn source_model_items(items: &[RolloutItem]) -> Option>> let mut append_start_index = None; for (index, item) in items.iter().enumerate() { match item { - RolloutItem::SessionMeta(_) | RolloutItem::InterAgentCommunicationMetadata { .. } => {} + RolloutItem::SessionMeta(_) + | RolloutItem::InterAgentCommunicationMetadata { .. } + | RolloutItem::RealtimeItem(_) => {} RolloutItem::ResponseItem(response_item) => { model_items.push(SourceModelItem { response_item: &response_item.item, @@ -255,6 +257,7 @@ fn history_model_items(items: &[RolloutItem]) -> Option> { match item { RolloutItem::SessionMeta(_) | RolloutItem::InterAgentCommunicationMetadata { .. } + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) => {} RolloutItem::ResponseItem(response_item) => model_items.push(&response_item.item), RolloutItem::EventMsg( diff --git a/codex-rs/history/src/lib.rs b/codex-rs/history/src/lib.rs index 23fc515d8e..6e15c01bc8 100644 --- a/codex-rs/history/src/lib.rs +++ b/codex-rs/history/src/lib.rs @@ -23,6 +23,7 @@ use codex_protocol::protocol::ThreadHistoryMode; use codex_protocol::protocol::ThreadSource; use codex_protocol::protocol::TurnContextItem; use codex_protocol::protocol::WorldStateItem; +use codex_protocol::realtime::RealtimeItem; use codex_protocol::security_risk::SecurityRiskScore; use schemars::JsonSchema; use serde::Deserialize; @@ -96,12 +97,16 @@ pub enum RolloutItem { SessionMeta(SessionMetaLine), ResponseItem(ResponseItemEnvelope), InterAgentCommunication(InterAgentCommunication), - InterAgentCommunicationMetadata { trigger_turn: bool }, + InterAgentCommunicationMetadata { + trigger_turn: bool, + }, Compacted(CompactedItem), TurnContext(TurnContextItem), WorldState(WorldStateItem), SecurityRiskScore(SecurityRiskScore), EventMsg(EventMsg), + /// Sparse, model-invisible facts used to reconstruct realtime presentation. + RealtimeItem(RealtimeItem), } impl Serialize for RolloutItem { @@ -415,6 +420,7 @@ fn multi_agent_version_from_items( | RolloutItem::Compacted(_) | RolloutItem::WorldState(_) | RolloutItem::SecurityRiskScore(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::EventMsg(_) => None, }) }) diff --git a/codex-rs/history/src/rollout_payload.rs b/codex-rs/history/src/rollout_payload.rs index cc4621bf5a..8f65619363 100644 --- a/codex-rs/history/src/rollout_payload.rs +++ b/codex-rs/history/src/rollout_payload.rs @@ -5,6 +5,7 @@ use super::CompactedItem; use super::EventMsg; use super::InterAgentCommunication; use super::McpResourceOriginCheckpoint; +use super::RealtimeItem; use super::ResponseItem; use super::ResponseItemEnvelope; use super::RolloutItem; @@ -49,6 +50,9 @@ pub(super) enum RolloutItemWire<'a> { EventMsg { payload: Cow<'a, EventMsg>, }, + RealtimeItem { + payload: Cow<'a, RealtimeItem>, + }, } impl<'a> From<&'a RolloutItem> for RolloutItemWire<'a> { @@ -86,6 +90,9 @@ impl<'a> From<&'a RolloutItem> for RolloutItemWire<'a> { RolloutItem::EventMsg(payload) => Self::EventMsg { payload: Cow::Borrowed(payload), }, + RolloutItem::RealtimeItem(payload) => Self::RealtimeItem { + payload: Cow::Borrowed(payload), + }, } } } @@ -115,6 +122,7 @@ impl From> for RolloutItem { Self::SecurityRiskScore(payload.into_owned()) } RolloutItemWire::EventMsg { payload } => Self::EventMsg(payload.into_owned()), + RolloutItemWire::RealtimeItem { payload } => Self::RealtimeItem(payload.into_owned()), } } } diff --git a/codex-rs/history/src/tests.rs b/codex-rs/history/src/tests.rs index fbd115fb38..97b61cf511 100644 --- a/codex-rs/history/src/tests.rs +++ b/codex-rs/history/src/tests.rs @@ -367,6 +367,16 @@ fn rollout_item_variants_preserve_existing_payload_shapes() -> Result<()> { "type": "event_msg", "payload": { "type": "warning", "message": "heads up" }, }), + json!({ + "type": "realtime_item", + "payload": { + "id": "segment-1", + "realtime_session_id": "session-1", + "type": "transcript_segment", + "role": "assistant", + "text": "hello", + }, + }), ]; for expected in fixtures { @@ -381,7 +391,7 @@ fn rollout_item_variants_preserve_existing_payload_shapes() -> Result<()> { fn rollout_item_schema_matches_tagged_payload_and_sibling_metadata() -> Result<()> { let schema = serde_json::to_value(schemars::schema_for!(RolloutItem))?; let variants = schema["oneOf"].as_array().expect("rollout variants"); - assert_eq!(variants.len(), 9); + assert_eq!(variants.len(), 10); for variant in variants { let required = variant["required"].as_array().expect("required fields"); diff --git a/codex-rs/memories/write/src/phase1.rs b/codex-rs/memories/write/src/phase1.rs index 215574cdf0..4d98599b93 100644 --- a/codex-rs/memories/write/src/phase1.rs +++ b/codex-rs/memories/write/src/phase1.rs @@ -416,6 +416,7 @@ mod job { | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::WorldState(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => None, diff --git a/codex-rs/protocol/src/lib.rs b/codex-rs/protocol/src/lib.rs index 3a5abc9c9f..f52dbe0cdc 100644 --- a/codex-rs/protocol/src/lib.rs +++ b/codex-rs/protocol/src/lib.rs @@ -38,6 +38,7 @@ mod permission_profile_snapshot; pub mod permissions; pub mod plan_tool; pub mod protocol; +pub mod realtime; pub mod request_permissions; pub mod request_user_input; pub mod review_format; diff --git a/codex-rs/protocol/src/realtime.rs b/codex-rs/protocol/src/realtime.rs new file mode 100644 index 0000000000..8c35c3efc9 --- /dev/null +++ b/codex-rs/protocol/src/realtime.rs @@ -0,0 +1,59 @@ +use schemars::JsonSchema; +use serde::Deserialize; +use serde::Serialize; +use ts_rs::TS; + +/// A realtime thread item persisted in the canonical rollout. +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] +pub struct RealtimeItem { + pub id: String, + pub realtime_session_id: String, + #[serde(flatten)] + pub content: RealtimeItemContent, +} + +/// The minimum facts needed to interleave realtime speech and agent work. +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] +#[serde(tag = "type", rename_all = "snake_case")] +#[ts(tag = "type", rename_all = "snake_case")] +pub enum RealtimeItemContent { + RealtimeSessionStarted, + TranscriptSegment { + role: RealtimeTranscriptRole, + text: String, + }, + BemItemPromoted { + turn_id: String, + item_id: String, + presentation: BemItemPresentation, + }, + RealtimeSessionClosed { + outcome: RealtimeSessionOutcome, + }, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] +#[serde(rename_all = "snake_case")] +#[ts(rename_all = "snake_case")] +pub enum RealtimeSessionOutcome { + Ended, + Failed, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] +#[serde(rename_all = "snake_case")] +#[ts(rename_all = "snake_case")] +pub enum RealtimeTranscriptRole { + User, + Assistant, +} + +/// How an existing agent item is presented in the realtime conversation. +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] +#[serde(tag = "type", rename_all = "snake_case")] +#[ts(tag = "type", rename_all = "snake_case")] +pub enum BemItemPresentation { + WholeItem, + InlineMarkdown, + InlineVisualization { index: u32 }, +} diff --git a/codex-rs/rollout/src/list.rs b/codex-rs/rollout/src/list.rs index a5b8040c48..f75622fced 100644 --- a/codex-rs/rollout/src/list.rs +++ b/codex-rs/rollout/src/list.rs @@ -1176,6 +1176,9 @@ async fn read_head_summary(path: &Path, head_limit: usize) -> io::Result { // Not included in `head`; skip. } + RolloutItem::RealtimeItem(_) => { + // Realtime presentation does not affect model-visible thread summaries. + } RolloutItem::Compacted(_) => { // Not included in `head`; skip. } @@ -1246,6 +1249,7 @@ pub async fn read_head_for_summary(path: &Path) -> io::Result {} } @@ -1299,6 +1303,7 @@ pub async fn read_session_meta_line(path: &Path) -> io::Result | RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => {} } diff --git a/codex-rs/rollout/src/metadata.rs b/codex-rs/rollout/src/metadata.rs index 15b4344a3c..62407790ce 100644 --- a/codex-rs/rollout/src/metadata.rs +++ b/codex-rs/rollout/src/metadata.rs @@ -75,6 +75,7 @@ pub fn builder_from_items( | RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => None, }) && let Some(builder) = builder_from_session_meta(session_meta, rollout_path) @@ -144,6 +145,7 @@ pub async fn extract_metadata_from_rollout( | RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => None, }), diff --git a/codex-rs/rollout/src/model_context.rs b/codex-rs/rollout/src/model_context.rs index 06f245b39b..6a19e5f24e 100644 --- a/codex-rs/rollout/src/model_context.rs +++ b/codex-rs/rollout/src/model_context.rs @@ -153,6 +153,7 @@ impl ModelContextScan { RolloutItem::EventMsg(_) | RolloutItem::SessionMeta(_) | RolloutItem::InterAgentCommunicationMetadata { .. } + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::WorldState(_) => {} } diff --git a/codex-rs/rollout/src/persistence_metrics.rs b/codex-rs/rollout/src/persistence_metrics.rs index d345c1ae53..b26320cd8a 100644 --- a/codex-rs/rollout/src/persistence_metrics.rs +++ b/codex-rs/rollout/src/persistence_metrics.rs @@ -237,6 +237,20 @@ fn rollout_item_type(item: &RolloutItem) -> String { RolloutItem::TurnContext(_) => "turn_context".to_string(), RolloutItem::WorldState(_) => "world_state".to_string(), RolloutItem::SecurityRiskScore(_) => "security_risk_score".to_string(), + RolloutItem::RealtimeItem(item) => match &item.content { + codex_protocol::realtime::RealtimeItemContent::RealtimeSessionStarted => { + "realtime.session_started".to_string() + } + codex_protocol::realtime::RealtimeItemContent::TranscriptSegment { .. } => { + "realtime.transcript_segment".to_string() + } + codex_protocol::realtime::RealtimeItemContent::BemItemPromoted { .. } => { + "realtime.bem_item_promoted".to_string() + } + codex_protocol::realtime::RealtimeItemContent::RealtimeSessionClosed { .. } => { + "realtime.session_closed".to_string() + } + }, RolloutItem::EventMsg(EventMsg::ItemCompleted(event)) => { format!("event.item_completed.{}", turn_item_type(&event.item)) } diff --git a/codex-rs/rollout/src/policy.rs b/codex-rs/rollout/src/policy.rs index 5c6c9e026f..2334852b19 100644 --- a/codex-rs/rollout/src/policy.rs +++ b/codex-rs/rollout/src/policy.rs @@ -13,6 +13,7 @@ pub fn is_persisted_rollout_item(item: &RolloutItem, history_mode: ThreadHistory RolloutItem::InterAgentCommunication(_) | RolloutItem::InterAgentCommunicationMetadata { .. } => true, RolloutItem::EventMsg(ev) => should_persist_event_msg(ev, history_mode), + RolloutItem::RealtimeItem(_) => matches!(history_mode, ThreadHistoryMode::Paginated), // Persist Codex executive markers so we can analyze flows (e.g., compaction, API turns). RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) diff --git a/codex-rs/rollout/src/recorder.rs b/codex-rs/rollout/src/recorder.rs index 6be4356c99..394a6d3e9d 100644 --- a/codex-rs/rollout/src/recorder.rs +++ b/codex-rs/rollout/src/recorder.rs @@ -2074,6 +2074,7 @@ async fn resume_candidate_matches_cwd( | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::Compacted(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => None, }) diff --git a/codex-rs/rollout/src/search.rs b/codex-rs/rollout/src/search.rs index 72f3e54606..946e2672fd 100644 --- a/codex-rs/rollout/src/search.rs +++ b/codex-rs/rollout/src/search.rs @@ -292,6 +292,7 @@ fn conversation_text_from_item(item: &RolloutItem) -> Option { | RolloutItem::InterAgentCommunication(_) | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::Compacted(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::WorldState(_) => None, } diff --git a/codex-rs/state/src/extract.rs b/codex-rs/state/src/extract.rs index 989075a23b..9b0c7f3375 100644 --- a/codex-rs/state/src/extract.rs +++ b/codex-rs/state/src/extract.rs @@ -27,6 +27,7 @@ pub fn apply_rollout_item( RolloutItem::Compacted(_) => {} RolloutItem::WorldState(_) => {} RolloutItem::SecurityRiskScore(_) => {} + RolloutItem::RealtimeItem(_) => {} } if metadata.model_provider.is_empty() { metadata.model_provider = default_provider.to_string(); @@ -53,6 +54,7 @@ pub fn rollout_item_affects_thread_metadata(item: &RolloutItem) -> bool { | RolloutItem::InterAgentCommunication(_) | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::Compacted(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::WorldState(_) => false, } diff --git a/codex-rs/state/src/migrations_tests.rs b/codex-rs/state/src/migrations_tests.rs index fea8878d36..78c6929807 100644 --- a/codex-rs/state/src/migrations_tests.rs +++ b/codex-rs/state/src/migrations_tests.rs @@ -374,6 +374,109 @@ INSERT INTO thread_items (thread_id, turn_id, item_id, rollout_ordinal, created_ pool.close().await; } +#[tokio::test] +async fn realtime_items_preserve_older_thread_history_writers() { + let sqlite_home = crate::runtime::test_support::unique_temp_dir(); + tokio::fs::create_dir_all(&sqlite_home) + .await + .expect("sqlite home should be created"); + let _cleanup = scopeguard::guard(sqlite_home.clone(), |sqlite_home| { + let _ = std::fs::remove_dir_all(sqlite_home); + }); + let sqlite = crate::SqliteConfig::new_for_testing(sqlite_home.as_path().abs()); + let older_migrator = Migrator { + migrations: Cow::Owned( + THREAD_HISTORY_MIGRATOR + .migrations + .iter() + .filter(|migration| migration.version < 5) + .cloned() + .collect(), + ), + ignore_missing: true, + locking: THREAD_HISTORY_MIGRATOR.locking, + table_name: THREAD_HISTORY_MIGRATOR.table_name.clone(), + create_schemas: THREAD_HISTORY_MIGRATOR.create_schemas.clone(), + no_tx: THREAD_HISTORY_MIGRATOR.no_tx, + }; + let pool = sqlite + .open_thread_history_db(&older_migrator, /*telemetry_override*/ None) + .await + .expect("existing thread history migrations should apply"); + sqlx::query( + "INSERT INTO thread_items (thread_id, turn_id, item_id, rollout_ordinal, created_at_ms, item_json) VALUES ('thread-1', 'turn-1', 'existing-item', 1, 100, '{}')", + ) + .execute(&pool) + .await + .expect("existing turn-scoped item should be inserted"); + + THREAD_HISTORY_MIGRATOR + .run(&pool) + .await + .expect("realtime item migration should apply"); + let turn_id_not_null = sqlx::query_scalar::<_, i64>( + "SELECT \"notnull\" FROM pragma_table_info('thread_items') WHERE name = 'turn_id'", + ) + .fetch_one(&pool) + .await + .expect("existing thread item schema should remain inspectable"); + assert_eq!(turn_id_not_null, 1); + + sqlx::query( + "INSERT INTO thread_realtime_items (thread_id, item_id, rollout_ordinal, created_at_ms, item_type, item_json) VALUES ('thread-1', 'realtime-item', 2, 200, 'realtime_session_started', '{}')", + ) + .execute(&pool) + .await + .expect("thread-scoped realtime item should be inserted separately"); + sqlx::query( + "INSERT INTO thread_history_projection_state (thread_id, next_rollout_byte_offset, next_rollout_ordinal) VALUES ('thread-1', 0, 0)", + ) + .execute(&pool) + .await + .expect("thread projection checkpoint should be inserted"); + + let older_pool = sqlite + .open_thread_history_db(&older_migrator, /*telemetry_override*/ None) + .await + .expect("older binaries should tolerate the additive realtime migration"); + sqlx::query( + "INSERT INTO thread_items (thread_id, turn_id, item_id, rollout_ordinal, created_at_ms, item_json) VALUES ('thread-1', 'turn-1', 'older-writer-item', 3, 300, '{}')", + ) + .execute(&older_pool) + .await + .expect("older binaries should continue writing ordinary turn-scoped items"); + let ordinary_items = sqlx::query_as::<_, (String, String)>( + "SELECT item_id, turn_id FROM thread_items WHERE thread_id = ? ORDER BY rollout_ordinal", + ) + .bind("thread-1") + .fetch_all(&older_pool) + .await + .expect("older binaries should never observe turnless realtime items"); + assert_eq!( + ordinary_items, + vec![ + ("existing-item".to_string(), "turn-1".to_string()), + ("older-writer-item".to_string(), "turn-1".to_string()), + ] + ); + sqlx::query("DELETE FROM thread_history_projection_state WHERE thread_id = ?") + .bind("thread-1") + .execute(&older_pool) + .await + .expect("older binaries should delete their known projection checkpoint"); + let remaining_realtime_items = sqlx::query_scalar::<_, i64>( + "SELECT COUNT(*) FROM thread_realtime_items WHERE thread_id = ?", + ) + .bind("thread-1") + .fetch_one(&pool) + .await + .expect("read realtime items after an older writer deleted the thread"); + assert_eq!(remaining_realtime_items, 0); + + older_pool.close().await; + pool.close().await; +} + #[tokio::test] async fn agent_job_tables_are_dropped_when_upgrading() { let sqlite_home = crate::runtime::test_support::unique_temp_dir(); diff --git a/codex-rs/state/src/runtime/threads.rs b/codex-rs/state/src/runtime/threads.rs index 4bb83cd169..237cc3b08b 100644 --- a/codex-rs/state/src/runtime/threads.rs +++ b/codex-rs/state/src/runtime/threads.rs @@ -1320,6 +1320,7 @@ pub(super) fn extract_memory_mode(items: &[RolloutItem]) -> Option { | RolloutItem::Compacted(_) | RolloutItem::TurnContext(_) | RolloutItem::WorldState(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::EventMsg(_) => None, }) diff --git a/codex-rs/state/thread_history_migrations/0005_thread_realtime_items.sql b/codex-rs/state/thread_history_migrations/0005_thread_realtime_items.sql new file mode 100644 index 0000000000..9c85043651 --- /dev/null +++ b/codex-rs/state/thread_history_migrations/0005_thread_realtime_items.sql @@ -0,0 +1,22 @@ +CREATE TABLE thread_realtime_items ( + thread_id TEXT NOT NULL, + item_id TEXT NOT NULL, + rollout_ordinal INTEGER NOT NULL, + created_at_ms INTEGER NOT NULL, + item_type TEXT NOT NULL, + item_json TEXT NOT NULL, + PRIMARY KEY (thread_id, item_id) +); + +CREATE UNIQUE INDEX idx_thread_realtime_items_page + ON thread_realtime_items(thread_id, rollout_ordinal); + +CREATE INDEX idx_thread_realtime_items_boundary + ON thread_realtime_items(thread_id, rollout_ordinal) + WHERE item_type IN ('realtime_session_started', 'realtime_session_closed'); + +CREATE TRIGGER thread_realtime_items_projection_cleanup + AFTER DELETE ON thread_history_projection_state +BEGIN + DELETE FROM thread_realtime_items WHERE thread_id = OLD.thread_id; +END; diff --git a/codex-rs/state/thread_history_migrations/0006_thread_turn_ends.sql b/codex-rs/state/thread_history_migrations/0006_thread_turn_ends.sql new file mode 100644 index 0000000000..b6c6ddd738 --- /dev/null +++ b/codex-rs/state/thread_history_migrations/0006_thread_turn_ends.sql @@ -0,0 +1,3 @@ +CREATE INDEX idx_thread_turns_end_page + ON thread_turns(thread_id, rollout_end_ordinal, turn_id) + WHERE rollout_end_ordinal IS NOT NULL; diff --git a/codex-rs/thread-store/src/lib.rs b/codex-rs/thread-store/src/lib.rs index 70fc994d1a..236ef61c14 100644 --- a/codex-rs/thread-store/src/lib.rs +++ b/codex-rs/thread-store/src/lib.rs @@ -68,6 +68,7 @@ pub use types::ItemPage; pub use types::ItemSortKey; pub use types::ListItemsParams; pub use types::ListThreadsParams; +pub use types::ListTimelineParams; pub use types::ListTurnsParams; pub use types::LoadThreadHistoryParams; pub use types::MoveThreadToSectionParams; @@ -98,5 +99,6 @@ pub use types::ThreadPersistenceMetadata; pub use types::ThreadRelationFilter; pub use types::ThreadSearchPage; pub use types::ThreadSortKey; +pub use types::TimelinePage; pub use types::TurnPage; pub use types::UpdateThreadMetadataParams; diff --git a/codex-rs/thread-store/src/local/delete_thread.rs b/codex-rs/thread-store/src/local/delete_thread.rs index 74fafd5447..810153b800 100644 --- a/codex-rs/thread-store/src/local/delete_thread.rs +++ b/codex-rs/thread-store/src/local/delete_thread.rs @@ -648,6 +648,13 @@ mod tests { .execute(&pool) .await .expect("insert item"); + sqlx::query( + "INSERT INTO thread_realtime_items (thread_id, item_id, rollout_ordinal, created_at_ms, item_type, item_json) VALUES (?, 'realtime-1', 3, 1, 'realtime_session_started', '{}')", + ) + .bind(thread_id_string.as_str()) + .execute(&pool) + .await + .expect("insert realtime item"); sqlx::query( "INSERT INTO thread_history_projection_state (thread_id, next_rollout_byte_offset, next_rollout_ordinal) VALUES (?, 3, 3)", ) @@ -668,21 +675,23 @@ mod tests { } )); assert!(rollout_path.exists()); - let counts = sqlx::query_as::<_, (i64, i64, i64)>( + let counts = sqlx::query_as::<_, (i64, i64, i64, i64)>( r#" SELECT (SELECT COUNT(*) FROM thread_turns WHERE thread_id = ?), (SELECT COUNT(*) FROM thread_items WHERE thread_id = ?), + (SELECT COUNT(*) FROM thread_realtime_items WHERE thread_id = ?), (SELECT COUNT(*) FROM thread_history_projection_state WHERE thread_id = ?) "#, ) .bind(thread_id_string.as_str()) .bind(thread_id_string.as_str()) .bind(thread_id_string.as_str()) + .bind(thread_id_string.as_str()) .fetch_one(&pool) .await .expect("read preserved history rows"); - assert_eq!(counts, (1, 1, 1)); + assert_eq!(counts, (1, 1, 1, 1)); } #[tokio::test] @@ -725,6 +734,13 @@ SELECT .execute(&pool) .await .expect("insert item"); + sqlx::query( + "INSERT INTO thread_realtime_items (thread_id, item_id, rollout_ordinal, created_at_ms, item_type, item_json) VALUES (?, 'realtime-1', 3, 1, 'realtime_session_started', '{}')", + ) + .bind(thread_id_string.as_str()) + .execute(&pool) + .await + .expect("insert realtime item"); sqlx::query( "INSERT INTO thread_history_projection_state (thread_id, next_rollout_byte_offset, next_rollout_ordinal) VALUES (?, 3, 3)", ) @@ -759,21 +775,23 @@ SELECT .expect("delete thread"); assert!(!lock_path.exists()); - let counts = sqlx::query_as::<_, (i64, i64, i64)>( + let counts = sqlx::query_as::<_, (i64, i64, i64, i64)>( r#" SELECT (SELECT COUNT(*) FROM thread_turns WHERE thread_id = ?), (SELECT COUNT(*) FROM thread_items WHERE thread_id = ?), + (SELECT COUNT(*) FROM thread_realtime_items WHERE thread_id = ?), (SELECT COUNT(*) FROM thread_history_projection_state WHERE thread_id = ?) "#, ) .bind(thread_id_string.as_str()) .bind(thread_id_string.as_str()) .bind(thread_id_string.as_str()) + .bind(thread_id_string.as_str()) .fetch_one(&pool) .await .expect("read remaining history rows"); - assert_eq!(counts, (0, 0, 0)); + assert_eq!(counts, (0, 0, 0, 0)); } #[tokio::test] diff --git a/codex-rs/thread-store/src/local/mod.rs b/codex-rs/thread-store/src/local/mod.rs index b08a17d261..aa88ea0280 100644 --- a/codex-rs/thread-store/src/local/mod.rs +++ b/codex-rs/thread-store/src/local/mod.rs @@ -62,6 +62,7 @@ use crate::ListItemsParams; use crate::ListProjectsParams; use crate::ListThreadSectionsParams; use crate::ListThreadsParams; +use crate::ListTimelineParams; use crate::ListTurnsParams; use crate::LoadThreadHistoryParams; use crate::MoveProjectParams; @@ -92,6 +93,7 @@ use crate::ThreadStore; use crate::ThreadStoreError; use crate::ThreadStoreFuture; use crate::ThreadStoreResult; +use crate::TimelinePage; use crate::TurnPage; use crate::UpdateProjectParams; use crate::UpdateThreadMetadataParams; @@ -403,6 +405,14 @@ impl LocalThreadStore { thread_history::list_items(self, params).await } + /// Lists bounded ordinary and realtime items from the rollout projection. + pub async fn list_timeline( + &self, + params: ListTimelineParams, + ) -> ThreadStoreResult { + thread_history::list_timeline(self, params).await + } + /// Searches projection-backed visible messages within one paginated thread. pub async fn search_thread_occurrences( &self, @@ -596,6 +606,10 @@ impl ThreadStore for LocalThreadStore { Box::pin(LocalThreadStore::list_items(self, params)) } + fn list_timeline(&self, params: ListTimelineParams) -> ThreadStoreFuture<'_, TimelinePage> { + Box::pin(LocalThreadStore::list_timeline(self, params)) + } + fn search_threads( &self, params: SearchThreadsParams, diff --git a/codex-rs/thread-store/src/local/rollout_migration.rs b/codex-rs/thread-store/src/local/rollout_migration.rs index 46d71d5f11..79f7dd1bf1 100644 --- a/codex-rs/thread-store/src/local/rollout_migration.rs +++ b/codex-rs/thread-store/src/local/rollout_migration.rs @@ -1152,17 +1152,27 @@ impl LocalThreadStore { let fallback_created_at_ms = DateTime::parse_from_rfc3339(&line.timestamp) .map_err(migration_error)? .timestamp_millis(); - batch.push(RolloutProjectionStep::Line(ProjectedRolloutLine { - ordinal, - start_byte_offset: offset, - end_byte_offset: next_offset, - fallback_created_at_ms: Some(fallback_created_at_ms), - changes: if subagent_history_start_ordinal.is_some_and(|start| ordinal < start) { - Default::default() - } else { - project_rollout_line(&line) + let is_inherited_subagent_history = + subagent_history_start_ordinal.is_some_and(|start| ordinal < start); + batch.push(RolloutProjectionStep::Line(Box::new( + ProjectedRolloutLine { + ordinal, + start_byte_offset: offset, + end_byte_offset: next_offset, + fallback_created_at_ms: Some(fallback_created_at_ms), + changes: if is_inherited_subagent_history { + Default::default() + } else { + project_rollout_line(&line) + }, + realtime_item: match line.item { + RolloutItem::RealtimeItem(item) if !is_inherited_subagent_history => { + Some(item) + } + _ => None, + }, }, - })); + ))); offset = next_offset; if offset.saturating_sub(batch_start) >= PROJECTION_BATCH_BYTES { diff --git a/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs b/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs index 703d666ff8..9eed043bd0 100644 --- a/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs +++ b/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs @@ -292,6 +292,7 @@ impl LegacyRolloutCanonicalizer { } item @ (RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::TurnContext(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::WorldState(_)) => { self.write_item(writer, ×tamp, item).await?; diff --git a/codex-rs/thread-store/src/local/rollout_migration/rollback_plan.rs b/codex-rs/thread-store/src/local/rollout_migration/rollback_plan.rs index 9f9b0653e0..f8404b6177 100644 --- a/codex-rs/thread-store/src/local/rollout_migration/rollback_plan.rs +++ b/codex-rs/thread-store/src/local/rollout_migration/rollback_plan.rs @@ -219,7 +219,7 @@ impl RollbackPlanner { self.pending_turn_records.push(index); } } - RolloutItem::WorldState(_) => {} + RolloutItem::WorldState(_) | RolloutItem::RealtimeItem(_) => {} RolloutItem::SecurityRiskScore(_) => self.record_boundaries[index] = None, } diff --git a/codex-rs/thread-store/src/local/rollout_migration/rollback_replay.rs b/codex-rs/thread-store/src/local/rollout_migration/rollback_replay.rs index 744866eeb8..b8d47f36bf 100644 --- a/codex-rs/thread-store/src/local/rollout_migration/rollback_replay.rs +++ b/codex-rs/thread-store/src/local/rollout_migration/rollback_replay.rs @@ -75,6 +75,7 @@ impl ModelReplayPlanner { | RolloutItem::ResponseItem(_) | RolloutItem::EventMsg(_) | RolloutItem::InterAgentCommunicationMetadata { .. } + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::WorldState(_) => return, }; diff --git a/codex-rs/thread-store/src/local/thread_history.rs b/codex-rs/thread-store/src/local/thread_history.rs index b9edf517ab..8f5ca8c6c3 100644 --- a/codex-rs/thread-store/src/local/thread_history.rs +++ b/codex-rs/thread-store/src/local/thread_history.rs @@ -3,18 +3,21 @@ use codex_app_server_protocol::ThreadItem; use codex_app_server_protocol::TurnStatus; use codex_protocol::ThreadId; use codex_protocol::models::MessagePhase; +use codex_protocol::realtime::RealtimeItem; use super::LocalThreadStore; use crate::ThreadStoreError; use crate::ThreadStoreResult; mod read; +mod realtime; mod search; mod segment_paging; mod turn_lookup; pub(super) use read::list_items; pub(super) use read::list_turns; +pub(super) use realtime::list_timeline; pub(super) use search::search_thread_occurrences; pub(super) use turn_lookup::find_source_turn; pub(super) use turn_lookup::find_visible_turn; @@ -28,6 +31,7 @@ pub(super) struct ProjectedRolloutLine { pub end_byte_offset: u64, pub fallback_created_at_ms: Option, pub changes: ThreadHistoryChangeSet, + pub realtime_item: Option, } /// One ordered update to apply while advancing a rollout projection checkpoint. @@ -35,7 +39,7 @@ pub(super) struct ProjectedRolloutLine { /// Skipped ordinal ranges keep the byte and ordinal checkpoints describing the same durable /// prefix even when a complete rollout line cannot be projected. pub(super) enum RolloutProjectionStep { - Line(ProjectedRolloutLine), + Line(Box), SkippedOrdinalRange { start_ordinal: u64, end_ordinal_exclusive: u64, @@ -154,6 +158,35 @@ WHERE thread_id = ? projection.changes, ) .await?; + if let Some(item) = projection.realtime_item { + let item_json = serde_json::to_string(&item).map_err(thread_history_error)?; + sqlx::query( + r#" +INSERT INTO thread_realtime_items ( + thread_id, + item_id, + rollout_ordinal, + created_at_ms, + item_type, + item_json +) VALUES (?, ?, ?, ?, json_extract(?, '$.type'), ?) +ON CONFLICT(thread_id, item_id) DO NOTHING + "#, + ) + .bind(thread_id.as_str()) + .bind(item.id.as_str()) + .bind(ordinal) + .bind(projection.fallback_created_at_ms.ok_or_else(|| { + ThreadStoreError::Internal { + message: "realtime rollout item is missing its timestamp".to_string(), + } + })?) + .bind(item_json.as_str()) + .bind(item_json.as_str()) + .execute(&mut *transaction) + .await + .map_err(thread_history_error)?; + } next_ordinal = next_ordinal .checked_add(1) @@ -231,6 +264,11 @@ pub(super) async fn delete_thread( .execute(&mut *transaction) .await .map_err(thread_history_delete_error)?; + sqlx::query("DELETE FROM thread_realtime_items WHERE thread_id = ?") + .bind(thread_id.as_str()) + .execute(&mut *transaction) + .await + .map_err(thread_history_delete_error)?; sqlx::query("DELETE FROM thread_turns WHERE thread_id = ?") .bind(thread_id.as_str()) .execute(&mut *transaction) diff --git a/codex-rs/thread-store/src/local/thread_history/read_tests.rs b/codex-rs/thread-store/src/local/thread_history/read_tests.rs index fdffc43394..798151489e 100644 --- a/codex-rs/thread-store/src/local/thread_history/read_tests.rs +++ b/codex-rs/thread-store/src/local/thread_history/read_tests.rs @@ -3,6 +3,7 @@ use std::time::Duration; use chrono::Utc; use codex_app_server_protocol::CodexErrorInfo; +use codex_app_server_protocol::ThreadTimelineEntry; use codex_protocol::ThreadId; use codex_protocol::protocol::EventMsg; use codex_protocol::protocol::HistoryPosition; @@ -10,6 +11,11 @@ use codex_protocol::protocol::SessionMeta; use codex_protocol::protocol::SessionMetaLine; use codex_protocol::protocol::SessionSource; use codex_protocol::protocol::ThreadHistoryMode; +use codex_protocol::realtime::BemItemPresentation; +use codex_protocol::realtime::RealtimeItem; +use codex_protocol::realtime::RealtimeItemContent; +use codex_protocol::realtime::RealtimeSessionOutcome; +use codex_protocol::realtime::RealtimeTranscriptRole; use codex_rollout::RolloutItem; use codex_rollout::RolloutLine; use pretty_assertions::assert_eq; @@ -17,6 +23,7 @@ use tempfile::TempDir; use super::*; use crate::ItemSortKey; +use crate::ListTimelineParams; use crate::SearchThreadOccurrencesParams; use crate::SortDirection; use crate::StoredTurnError; @@ -225,6 +232,385 @@ async fn list_items_pages_whole_thread_and_per_turn_rows() { assert_eq!(item_ids(&next_turn_page), vec!["item-3"]); } +#[tokio::test] +async fn timeline_interleaves_items_and_restores_page_boundary_session_state() { + let (_home, store, thread_id) = store_with_mode(ThreadHistoryMode::Paginated).await; + let db = history_db(&store).await; + for (item_id, ordinal) in [ + ("before", 10), + ("middle", 20), + ("after", 30), + ("closed", 40), + ] { + insert_item(db, thread_id, "turn-1", item_id, ordinal).await; + } + for (ordinal, item) in [ + ( + 11, + RealtimeItem { + id: "voice-1:started".to_string(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + }, + ), + ( + 12, + RealtimeItem { + id: "voice-1:source:0".to_string(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "Before the artifact".to_string(), + }, + }, + ), + ( + 21, + RealtimeItem { + id: "artifact".to_string(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "middle".to_string(), + presentation: BemItemPresentation::InlineMarkdown, + }, + }, + ), + ( + 31, + RealtimeItem { + id: "voice-1:closed".to_string(), + realtime_session_id: "voice-1".to_string(), + content: RealtimeItemContent::RealtimeSessionClosed { + outcome: RealtimeSessionOutcome::Ended, + }, + }, + ), + ] { + let item_json = serde_json::to_string(&item).expect("serialize realtime item"); + sqlx::query( + r#" +INSERT INTO thread_realtime_items ( + thread_id, item_id, rollout_ordinal, created_at_ms, item_type, item_json +) VALUES (?, ?, ?, ?, json_extract(?, '$.type'), ?) + "#, + ) + .bind(thread_id.to_string()) + .bind(&item.id) + .bind(ordinal) + .bind(ordinal * 1_000) + .bind(&item_json) + .bind(&item_json) + .execute(db) + .await + .expect("insert realtime item"); + } + + let latest = store + .list_timeline(ListTimelineParams { + thread_id, + cursor: None, + page_size: 3, + }) + .await + .expect("list latest timeline page"); + assert_eq!( + latest + .items + .iter() + .map(|item| match item { + ThreadTimelineEntry::Item { position, .. } + | ThreadTimelineEntry::Realtime { position, .. } + | ThreadTimelineEntry::TurnStarted { position, .. } + | ThreadTimelineEntry::TurnCompleted { position, .. } => *position, + }) + .collect::>(), + vec![30, 31, 40] + ); + assert_eq!( + latest.active_realtime_session_at_page_start, + Some("voice-1".to_string()) + ); + let older = store + .list_timeline(ListTimelineParams { + thread_id, + cursor: latest.next_cursor, + page_size: 3, + }) + .await + .expect("list older timeline page"); + assert_eq!( + older + .items + .iter() + .map(|item| match item { + ThreadTimelineEntry::Item { position, .. } + | ThreadTimelineEntry::Realtime { position, .. } + | ThreadTimelineEntry::TurnStarted { position, .. } + | ThreadTimelineEntry::TurnCompleted { position, .. } => *position, + }) + .collect::>(), + vec![12, 20, 21] + ); + assert_eq!( + older.active_realtime_session_at_page_start, + Some("voice-1".to_string()) + ); + let oldest = store + .list_timeline(ListTimelineParams { + thread_id, + cursor: older.next_cursor, + page_size: 3, + }) + .await + .expect("list oldest timeline page"); + assert_eq!(oldest.active_realtime_session_at_page_start, None); + assert!(matches!( + oldest.items.as_slice(), + [ + ThreadTimelineEntry::Item { position: 10, .. }, + ThreadTimelineEntry::Realtime { position: 11, .. } + ] + )); + + let ordinary_items = store + .list_items(item_params( + thread_id, + /*turn_id*/ None, + /*cursor*/ None, + /*page_size*/ 10, + SortDirection::Asc, + )) + .await + .expect("existing item API excludes realtime facts"); + assert_eq!( + item_ids(&ordinary_items), + vec!["before", "middle", "after", "closed"] + ); +} + +#[tokio::test] +async fn timeline_turn_boundaries_page_through_shared_ordinals() { + let (_home, store, thread_id) = store_with_mode(ThreadHistoryMode::Paginated).await; + let db = history_db(&store).await; + let error = r#"{"message":"failed","codexErrorInfo":null,"additionalDetails":null}"#; + for (turn_id, start, end, status, error_json) in [ + ("complete", 10, Some(20), "completed", None), + ("interrupt", 20, Some(30), "interrupted", None), + ("failed", 30, Some(40), "failed", Some(error)), + ("running", 40, None, "inProgress", None), + ] { + insert_turn( + db, thread_id, turn_id, start, status, error_json, /*first_user_item_id*/ None, + /*final_agent_item_id*/ None, + ) + .await; + sqlx::query("UPDATE thread_turns SET rollout_end_ordinal = ?, started_at = ?, completed_at = ?, duration_ms = ? WHERE thread_id = ? AND turn_id = ?") + .bind(end) + .bind(start) + .bind(end) + .bind(end.map(|end| (end - start) * 1000)) + .bind(thread_id.to_string()) + .bind(turn_id) + .execute(db) + .await + .expect("set turn boundary"); + } + insert_item( + db, thread_id, "complete", "item", /*rollout_ordinal*/ 20, + ) + .await; + + let all = store + .list_timeline(ListTimelineParams { + thread_id, + cursor: None, + page_size: 20, + }) + .await + .expect("full timeline"); + let mut cursor = None; + let mut paged = Vec::new(); + loop { + let page = store + .list_timeline(ListTimelineParams { + thread_id, + cursor, + page_size: 1, + }) + .await + .expect("single-entry timeline page"); + assert_eq!(page.items.len(), 1); + paged.extend(page.items); + cursor = page.next_cursor; + if cursor.is_none() { + break; + } + } + paged.reverse(); + assert_eq!(paged, all.items); + assert_eq!( + all.items + .iter() + .map(crate::local::thread_history::realtime::entry_key) + .collect::>(), + vec![ + (10, 0, "complete"), + (20, 0, "interrupt"), + (20, 1, "item"), + (20, 3, "complete"), + (30, 0, "failed"), + (30, 3, "interrupt"), + (40, 0, "running"), + (40, 3, "failed") + ] + ); + let completed = all + .items + .into_iter() + .filter(|entry| matches!(entry, ThreadTimelineEntry::TurnCompleted { .. })) + .collect::>(); + let expected = [ + ("complete", 10, 20, "completed", serde_json::Value::Null), + ("interrupt", 20, 30, "interrupted", serde_json::Value::Null), + ( + "failed", + 30, + 40, + "failed", + serde_json::from_str(error).expect("error"), + ), + ] + .into_iter() + .map(|(id, start, end, status, error)| { + serde_json::from_value( + serde_json::json!({"type":"turnCompleted", "position":end, "turnId":id, + "status":status, "error":error, "startedAt":start, "completedAt":end, + "durationMs":10000}), + ) + .expect("expected boundary") + }) + .collect::>(); + assert_eq!(completed, expected); +} + +#[tokio::test] +async fn timeline_page_state_excludes_realtime_events_after_fork_cutoff() { + let (home, store, child_id) = store_with_mode(ThreadHistoryMode::Paginated).await; + let source_id = ThreadId::default(); + let source_path = rollout_path(home.path(), source_id); + write_rollout_with_end( + source_path.as_path(), + source_id, + /*history_base*/ None, + /*next_ordinal*/ 5, + ); + write_rollout_with_end( + rollout_path(home.path(), child_id).as_path(), + child_id, + Some(history_position( + source_path.as_path(), + source_id, + /*end_ordinal_exclusive*/ 3, + )), + /*next_ordinal*/ 2, + ); + + let db = history_db(&store).await; + insert_turn( + db, + source_id, + "source-turn", + /*rollout_ordinal*/ 1, + "completed", + /*error_json*/ None, + /*first_user_item_id*/ None, + /*final_agent_item_id*/ None, + ) + .await; + sqlx::query("UPDATE thread_turns SET rollout_end_ordinal = 4 WHERE thread_id = ?") + .bind(source_id.to_string()) + .execute(db) + .await + .expect("source turn end"); + insert_item( + db, + child_id, + "child-turn", + "child-item", + /*rollout_ordinal*/ 4, + ) + .await; + for (ordinal, item) in [ + ( + 1, + RealtimeItem { + id: "voice:started".to_string(), + realtime_session_id: "voice".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + }, + ), + ( + 3, + RealtimeItem { + id: "voice:closed".to_string(), + realtime_session_id: "voice".to_string(), + content: RealtimeItemContent::RealtimeSessionClosed { + outcome: RealtimeSessionOutcome::Ended, + }, + }, + ), + ] { + let item_json = serde_json::to_string(&item).expect("serialize realtime item"); + sqlx::query( + r#" +INSERT INTO thread_realtime_items ( + thread_id, item_id, rollout_ordinal, created_at_ms, item_type, item_json +) VALUES (?, ?, ?, ?, json_extract(?, '$.type'), ?) + "#, + ) + .bind(source_id.to_string()) + .bind(&item.id) + .bind(ordinal) + .bind(ordinal * 1_000) + .bind(&item_json) + .bind(&item_json) + .execute(db) + .await + .expect("insert realtime boundary"); + } + + let page = store + .list_timeline(ListTimelineParams { + thread_id: child_id, + cursor: None, + page_size: 1, + }) + .await + .expect("list forked timeline page"); + + assert_eq!( + page.active_realtime_session_at_page_start, + Some("voice".to_string()) + ); + let inherited = store + .list_timeline(ListTimelineParams { + thread_id: child_id, + cursor: page.next_cursor, + page_size: 10, + }) + .await + .expect("inherited timeline"); + assert_eq!( + inherited + .items + .iter() + .map(crate::local::thread_history::realtime::entry_key) + .collect::>(), + vec![(1, 0, "source-turn"), (1, 2, "voice:started")] + ); +} + #[tokio::test] async fn list_items_filters_exclusive_update_ordinals_across_pages_and_turns() { let (_home, store, thread_id) = store_with_mode(ThreadHistoryMode::Paginated).await; diff --git a/codex-rs/thread-store/src/local/thread_history/realtime.rs b/codex-rs/thread-store/src/local/thread_history/realtime.rs new file mode 100644 index 0000000000..0dd233b776 --- /dev/null +++ b/codex-rs/thread-store/src/local/thread_history/realtime.rs @@ -0,0 +1,246 @@ +use codex_app_server_protocol::ThreadItem; +use codex_app_server_protocol::ThreadTimelineEntry; +use codex_protocol::ThreadId; +use codex_protocol::realtime::RealtimeItem; +use serde::Deserialize; +use serde::Serialize; + +use super::super::LocalThreadStore; +use super::read::validate_thread_for_paginated_reads; +use super::segment_paging::validate_page_size; +use super::sqlite_integer; +use super::thread_history_error; +use crate::ListTimelineParams; +use crate::ThreadStoreError; +use crate::ThreadStoreResult; +use crate::TimelinePage; + +#[derive(Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +struct TimelineCursor { + thread_id: ThreadId, + position: u64, + kind: u8, + id: String, +} + +// A rollout record can materialize both an item and a turn boundary. Keep the +// boundary order stable, including when the page cuts through one ordinal. +pub(super) fn entry_key(entry: &ThreadTimelineEntry) -> (u64, u8, &str) { + match entry { + ThreadTimelineEntry::TurnStarted { + position, turn_id, .. + } => (*position, 0, turn_id), + ThreadTimelineEntry::Item { position, item, .. } => (*position, 1, item.id()), + ThreadTimelineEntry::Realtime { position, item } => (*position, 2, &item.id), + ThreadTimelineEntry::TurnCompleted { + position, turn_id, .. + } => (*position, 3, turn_id), + } +} + +pub(in crate::local) async fn list_timeline( + store: &LocalThreadStore, + params: ListTimelineParams, +) -> ThreadStoreResult { + validate_thread_for_paginated_reads( + store, + params.thread_id, + /*include_archived*/ false, + "thread/timeline/list", + ) + .await?; + validate_page_size(params.page_size)?; + + let lineage = store.resolve_rollout_lineage(params.thread_id).await?; + let pool = store.thread_history_db().await?; + let cursor = params + .cursor + .as_deref() + .map(serde_json::from_str::) + .transpose() + .map_err(|_| ThreadStoreError::InvalidRequest { + message: "invalid thread timeline cursor".to_string(), + })? + .map(|cursor| { + if cursor.thread_id != params.thread_id { + Err(ThreadStoreError::InvalidRequest { + message: "thread timeline cursor belongs to another thread".to_string(), + }) + } else { + Ok(cursor) + } + }) + .transpose()?; + let cursor_position = cursor.as_ref().map(|cursor| cursor.position); + let cursor_ordinal = cursor_position + .map(|position| sqlite_integer(position, "rollout ordinal")) + .transpose()? + .unwrap_or(i64::MAX); + let cursor_kind = cursor.as_ref().map_or(4, |cursor| cursor.kind); + let cursor_id = cursor.as_ref().map_or("", |cursor| cursor.id.as_str()); + + let mut rows = Vec::new(); + let max_rows = params.page_size + 1; + for segment in lineage.segments().iter().rev() { + let remaining = max_rows.saturating_sub(rows.len()); + if remaining == 0 { + break; + } + if cursor_position.is_some_and(|position| position < segment.start_ordinal()) { + continue; + } + let upper = segment + .end_ordinal() + .map(|value| sqlite_integer(value, "rollout ordinal")) + .transpose()? + .unwrap_or(i64::MAX); + let segment_rows = sqlx::query_as::<_, (i64, i64, String, Option, String)>( + r#" +WITH starts AS ( +SELECT rollout_ordinal, 0 AS kind, turn_id AS id, turn_id, + json_object('type', 'turnStarted', 'position', rollout_ordinal, + 'turnId', turn_id, 'startedAt', started_at) AS item_json +FROM thread_turns +WHERE thread_id = ?1 AND rollout_ordinal >= ?2 + AND rollout_ordinal < ?3 AND rollout_ordinal <= ?4 + AND (rollout_ordinal, 0, turn_id) < (?4, ?5, ?6) +ORDER BY rollout_ordinal DESC, turn_id DESC LIMIT ?7 +), items AS ( +SELECT rollout_ordinal, 1 AS kind, item_id AS id, turn_id, item_json +FROM thread_items +WHERE thread_id = ?1 AND rollout_ordinal >= ?2 + AND rollout_ordinal < ?3 AND rollout_ordinal <= ?4 + AND (rollout_ordinal, 1, item_id) < (?4, ?5, ?6) +ORDER BY rollout_ordinal DESC, item_id DESC LIMIT ?7 +), realtime AS ( +SELECT rollout_ordinal, 2 AS kind, item_id AS id, NULL AS turn_id, item_json +FROM thread_realtime_items +WHERE thread_id = ?1 AND rollout_ordinal >= ?2 + AND rollout_ordinal < ?3 AND rollout_ordinal <= ?4 + AND (rollout_ordinal, 2, item_id) < (?4, ?5, ?6) +ORDER BY rollout_ordinal DESC, item_id DESC LIMIT ?7 +), ends AS ( +SELECT rollout_end_ordinal AS rollout_ordinal, 3 AS kind, turn_id AS id, turn_id, + json_object('type', 'turnCompleted', 'position', rollout_end_ordinal, + 'turnId', turn_id, 'status', status, 'error', json(error_json), + 'startedAt', started_at, 'completedAt', completed_at, + 'durationMs', duration_ms) AS item_json +FROM thread_turns +WHERE thread_id = ?1 AND rollout_end_ordinal >= ?2 + AND rollout_end_ordinal < ?3 AND rollout_end_ordinal <= ?4 + AND (rollout_end_ordinal, 3, turn_id) < (?4, ?5, ?6) +ORDER BY rollout_end_ordinal DESC, turn_id DESC LIMIT ?7 +) +SELECT * FROM starts +UNION ALL SELECT * FROM items +UNION ALL SELECT * FROM realtime +UNION ALL SELECT * FROM ends +ORDER BY rollout_ordinal DESC, kind DESC, id DESC +LIMIT ?7 + "#, + ) + .bind(segment.rollout_id().to_string()) + .bind(sqlite_integer(segment.start_ordinal(), "rollout ordinal")?) + .bind(upper) + .bind(cursor_ordinal) + .bind(i64::from(cursor_kind)) + .bind(cursor_id) + .bind(i64::try_from(remaining).map_err(thread_history_error)?) + .fetch_all(pool) + .await + .map_err(thread_history_error)?; + + for (position, kind, _id, turn_id, item_json) in segment_rows { + let position = u64::try_from(position).map_err(thread_history_error)?; + rows.push(match kind { + 0 | 3 => serde_json::from_str::(&item_json) + .map_err(thread_history_error)?, + 1 => ThreadTimelineEntry::Item { + position, + turn_id: turn_id.ok_or_else(|| thread_history_error("missing turn ID"))?, + item: Box::new( + serde_json::from_str::(&item_json) + .map_err(thread_history_error)?, + ), + }, + 2 => ThreadTimelineEntry::Realtime { + position, + item: serde_json::from_str::(&item_json) + .map_err(thread_history_error)? + .into(), + }, + _ => return Err(thread_history_error("invalid timeline entry kind")), + }); + } + } + + let has_more = rows.len() > params.page_size; + rows.truncate(params.page_size); + let next_cursor = if has_more { + rows.last() + .map(|entry| { + let (position, kind, id) = entry_key(entry); + serde_json::to_string(&TimelineCursor { + thread_id: params.thread_id, + position, + kind, + id: id.to_string(), + }) + .map_err(thread_history_error) + }) + .transpose()? + } else { + None + }; + + let (page_start, page_start_kind, page_start_id) = + rows.last().map(entry_key).unwrap_or_default(); + let mut active_realtime_session_at_page_start = None; + for segment in lineage.segments().iter().rev() { + let upper = page_start.min( + segment + .end_ordinal() + .map(|ordinal| ordinal.saturating_sub(1)) + .unwrap_or(u64::MAX), + ); + if upper < segment.start_ordinal() { + continue; + } + let boundary = sqlx::query_as::<_, (String, String)>( + r#" +SELECT item_type, json_extract(item_json, '$.realtime_session_id') +FROM thread_realtime_items +WHERE thread_id = ? + AND rollout_ordinal >= ? + AND rollout_ordinal <= ? + AND (rollout_ordinal, 2, item_id) < (?, ?, ?) + AND item_type IN ('realtime_session_started', 'realtime_session_closed') +ORDER BY rollout_ordinal DESC +LIMIT 1 + "#, + ) + .bind(segment.rollout_id().to_string()) + .bind(sqlite_integer(segment.start_ordinal(), "rollout ordinal")?) + .bind(sqlite_integer(upper, "rollout ordinal")?) + .bind(sqlite_integer(page_start, "rollout ordinal")?) + .bind(i64::from(page_start_kind)) + .bind(page_start_id) + .fetch_optional(pool) + .await + .map_err(thread_history_error)?; + if let Some((item_type, session_id)) = boundary { + if item_type == "realtime_session_started" { + active_realtime_session_at_page_start = Some(session_id); + } + break; + } + } + + rows.reverse(); + Ok(TimelinePage { + items: rows, + next_cursor, + active_realtime_session_at_page_start, + }) +} diff --git a/codex-rs/thread-store/src/local/thread_history_materialization.rs b/codex-rs/thread-store/src/local/thread_history_materialization.rs index e110ecc2f4..a63ed7fcb1 100644 --- a/codex-rs/thread-store/src/local/thread_history_materialization.rs +++ b/codex-rs/thread-store/src/local/thread_history_materialization.rs @@ -5,6 +5,7 @@ use chrono::DateTime; use codex_app_server_protocol::ThreadHistoryChangeSet; use codex_app_server_protocol::project_rollout_line; use codex_protocol::ThreadId; +use codex_rollout::RolloutItem; use tokio::io::AsyncReadExt; use tokio::io::AsyncSeekExt; use tracing::warn; @@ -204,7 +205,9 @@ async fn read_projection_steps( ), }); } - let changes = if subagent_history_start_ordinal.is_some_and(|start| ordinal < start) { + let is_inherited_subagent_history = + subagent_history_start_ordinal.is_some_and(|start| ordinal < start); + let changes = if is_inherited_subagent_history { ThreadHistoryChangeSet::default() } else { project_rollout_line(&line) @@ -213,6 +216,8 @@ async fn read_projection_steps( .changed_items .iter() .any(|item| item.started_at_ms.is_none()) + || (!is_inherited_subagent_history + && matches!(&line.item, RolloutItem::RealtimeItem(_))) { match DateTime::parse_from_rfc3339(line.timestamp.as_str()) { Ok(timestamp) => Some(timestamp.timestamp_millis()), @@ -259,13 +264,19 @@ async fn read_projection_steps( .ok_or_else(|| ThreadStoreError::Internal { message: "rollout ordinal exceeds SQLite integer range".to_string(), })?; - projections.push(RolloutProjectionStep::Line(ProjectedRolloutLine { - ordinal, - start_byte_offset: line_start_offset, - end_byte_offset: line_end_offset, - fallback_created_at_ms, - changes, - })); + projections.push(RolloutProjectionStep::Line(Box::new( + ProjectedRolloutLine { + ordinal, + start_byte_offset: line_start_offset, + end_byte_offset: line_end_offset, + fallback_created_at_ms, + changes, + realtime_item: match line.item { + RolloutItem::RealtimeItem(item) if !is_inherited_subagent_history => Some(item), + _ => None, + }, + }, + ))); next_ordinal = next_line_ordinal; next_offset = line_end_offset; line_start_offset = line_end_offset; diff --git a/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs b/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs index 42f1df3533..4354e39244 100644 --- a/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs +++ b/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs @@ -26,6 +26,11 @@ use codex_protocol::protocol::TokenCountEvent; use codex_protocol::protocol::TurnCompleteEvent; use codex_protocol::protocol::TurnStartedEvent; use codex_protocol::protocol::UserMessageEvent; +use codex_protocol::realtime::BemItemPresentation; +use codex_protocol::realtime::RealtimeItem; +use codex_protocol::realtime::RealtimeItemContent; +use codex_protocol::realtime::RealtimeSessionOutcome; +use codex_protocol::realtime::RealtimeTranscriptRole; use codex_rollout::RolloutConfig; use codex_rollout::RolloutItem; use codex_rollout::RolloutLine; @@ -426,6 +431,216 @@ WHERE thread_id = ? assert_eq!(projection_state, (rollout_len, 5)); } +#[tokio::test] +async fn paginated_realtime_items_materialize_separately_in_rollout_order() { + let home = TempDir::new().expect("temp dir"); + let store = projection_store(home.path()).await; + let thread_id = ThreadId::default(); + create_paginated_thread(&store, thread_id).await; + store + .persist_thread(thread_id, PersistContext::Standard) + .await + .expect("persist thread metadata"); + + store + .append_items(AppendThreadItemsParams { + thread_id, + items: vec![ + RolloutItem::RealtimeItem(RealtimeItem { + id: "voice:started".to_string(), + realtime_session_id: "voice".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + }), + RolloutItem::RealtimeItem(RealtimeItem { + id: "voice:transcript:0".to_string(), + realtime_session_id: "voice".to_string(), + content: RealtimeItemContent::TranscriptSegment { + role: RealtimeTranscriptRole::Assistant, + text: "Here is the result.".to_string(), + }, + }), + turn_started("turn-1"), + RolloutItem::RealtimeItem(RealtimeItem { + id: "voice:promoted:agent-1".to_string(), + realtime_session_id: "voice".to_string(), + content: RealtimeItemContent::BemItemPromoted { + turn_id: "turn-1".to_string(), + item_id: "agent-1".to_string(), + presentation: BemItemPresentation::InlineMarkdown, + }, + }), + completed_item( + thread_id, + "turn-1", + TurnItem::AgentMessage(AgentMessageItem { + id: "agent-1".to_string(), + content: vec![AgentMessageContent::Text { + text: "Result".to_string(), + }], + phase: None, + memory_citation: None, + delivery: None, + }), + ), + RolloutItem::RealtimeItem(RealtimeItem { + id: "voice:closed".to_string(), + realtime_session_id: "voice".to_string(), + content: RealtimeItemContent::RealtimeSessionClosed { + outcome: RealtimeSessionOutcome::Ended, + }, + }), + ], + }) + .await + .expect("append interleaved realtime and ordinary rollout items"); + + let rollout_path = store + .live_rollout_path(thread_id) + .await + .expect("rollout path"); + let expected_rows = fs::read_to_string(rollout_path.as_path()) + .expect("read canonical rollout") + .lines() + .map(|line| serde_json::from_str::(line).expect("parse rollout line")) + .filter_map(|line| match line.item { + RolloutItem::RealtimeItem(item) => Some(( + item.id, + i64::try_from(line.ordinal.expect("paginated rollout ordinal")) + .expect("ordinal fits SQLite integer"), + chrono::DateTime::parse_from_rfc3339(line.timestamp.as_str()) + .expect("valid rollout timestamp") + .timestamp_millis(), + serde_json::to_value(item.content) + .expect("serialize realtime content") + .get("type") + .and_then(serde_json::Value::as_str) + .expect("realtime content discriminator") + .to_string(), + )), + _ => None, + }) + .collect::>(); + assert_eq!( + expected_rows + .iter() + .map(|(id, ordinal, _, item_type)| (id.as_str(), *ordinal, item_type.as_str())) + .collect::>(), + vec![ + ("voice:started", 1, "realtime_session_started"), + ("voice:transcript:0", 2, "transcript_segment"), + ("voice:promoted:agent-1", 4, "bem_item_promoted"), + ("voice:closed", 6, "realtime_session_closed"), + ] + ); + + let pool = codex_state::open_thread_history_db(&codex_state::SqliteConfig::new_for_testing( + home.path().abs(), + )) + .await + .expect("open thread history db"); + let projected_rows = sqlx::query_as::<_, (String, i64, i64, String)>( + "SELECT item_id, rollout_ordinal, created_at_ms, item_type FROM thread_realtime_items WHERE thread_id = ? ORDER BY rollout_ordinal", + ) + .bind(thread_id.to_string()) + .fetch_all(&pool) + .await + .expect("read separately projected realtime items"); + assert_eq!(projected_rows, expected_rows); + + let ordinary_items = sqlx::query_as::<_, (String, String)>( + "SELECT turn_id, item_id FROM thread_items WHERE thread_id = ? ORDER BY rollout_ordinal", + ) + .bind(thread_id.to_string()) + .fetch_all(&pool) + .await + .expect("read ordinary turn items"); + assert_eq!( + ordinary_items, + vec![("turn-1".to_string(), "agent-1".to_string())] + ); + + sqlx::query("DELETE FROM thread_history_projection_state WHERE thread_id = ?") + .bind(thread_id.to_string()) + .execute(&pool) + .await + .expect("rewind projection checkpoint"); + super::materialize_to_sqlite(&store, thread_id, rollout_path.as_path()) + .await + .expect("replay canonical rollout"); + + let replayed_rows = sqlx::query_as::<_, (String, i64, i64, String)>( + "SELECT item_id, rollout_ordinal, created_at_ms, item_type FROM thread_realtime_items WHERE thread_id = ? ORDER BY rollout_ordinal", + ) + .bind(thread_id.to_string()) + .fetch_all(&pool) + .await + .expect("read replayed realtime items"); + assert_eq!(replayed_rows, expected_rows); + + let legacy_thread_id = ThreadId::new(); + store + .create_thread(CreateThreadParams { + session_id: legacy_thread_id.into(), + thread_id: legacy_thread_id, + extra_config: None, + forked_from_id: None, + parent_thread_id: None, + source: SessionSource::Exec, + thread_source: None, + originator: "test_originator".to_string(), + base_instructions: BaseInstructions::default(), + dynamic_tools: Vec::new(), + selected_capability_roots: Vec::new(), + multi_agent_version: None, + history_mode: ThreadHistoryMode::Legacy, + history_base: None, + subagent_history_start_ordinal: None, + initial_window_id: "window-1".to_string(), + metadata: ThreadPersistenceMetadata { + cwd: Some(home.path().to_path_buf()), + model_provider: "test-provider".to_string(), + memory_mode: ThreadMemoryMode::Enabled, + }, + }) + .await + .expect("create legacy thread"); + store + .persist_thread(legacy_thread_id, PersistContext::Standard) + .await + .expect("persist legacy thread metadata"); + store + .append_items(AppendThreadItemsParams { + thread_id: legacy_thread_id, + items: vec![RolloutItem::RealtimeItem(RealtimeItem { + id: "legacy:started".to_string(), + realtime_session_id: "legacy".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + })], + }) + .await + .expect("ignore realtime item for legacy rollout"); + let legacy_rollout_path = store + .live_rollout_path(legacy_thread_id) + .await + .expect("legacy rollout path"); + let (legacy_items, _, _) = RolloutRecorder::load_rollout_items(legacy_rollout_path.as_path()) + .await + .expect("load legacy rollout"); + assert!( + !legacy_items + .iter() + .any(|item| matches!(item, RolloutItem::RealtimeItem(_))) + ); + let legacy_realtime_count = sqlx::query_scalar::<_, i64>( + "SELECT COUNT(*) FROM thread_realtime_items WHERE thread_id = ?", + ) + .bind(legacy_thread_id.to_string()) + .fetch_one(&pool) + .await + .expect("count legacy realtime items"); + assert_eq!(legacy_realtime_count, 0); +} + #[tokio::test] async fn referenced_paginated_rollout_projects_inherited_ordinal_range() { let home = TempDir::new().expect("temp dir"); @@ -1010,7 +1225,7 @@ async fn subagent_prefix_advances_projection_without_materializing_history() { &store, thread_id, /*history_base*/ None, - /*subagent_history_start_ordinal*/ Some(4), + /*subagent_history_start_ordinal*/ Some(5), ) .await; store @@ -1022,6 +1237,11 @@ async fn subagent_prefix_advances_projection_without_materializing_history() { .append_items(AppendThreadItemsParams { thread_id, items: vec![ + RolloutItem::RealtimeItem(RealtimeItem { + id: "parent:started".to_string(), + realtime_session_id: "parent".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + }), turn_started("parent-turn"), completed_item( thread_id, @@ -1034,6 +1254,11 @@ async fn subagent_prefix_advances_projection_without_materializing_history() { ), turn_completed("parent-turn"), turn_started("child-turn"), + RolloutItem::RealtimeItem(RealtimeItem { + id: "child:started".to_string(), + realtime_session_id: "child".to_string(), + content: RealtimeItemContent::RealtimeSessionStarted, + }), completed_item( thread_id, "child-turn", @@ -1054,7 +1279,7 @@ async fn subagent_prefix_advances_projection_without_materializing_history() { .await .expect("rollout path"); let (child_start_byte_offset, _) = - rollout_line_byte_offsets(rollout_path.as_path(), /*ordinal*/ 4); + rollout_line_byte_offsets(rollout_path.as_path(), /*ordinal*/ 5); let pool = codex_state::open_thread_history_db(&codex_state::SqliteConfig::new_for_testing( home.path().abs(), )) @@ -1069,7 +1294,7 @@ async fn subagent_prefix_advances_projection_without_materializing_history() { .expect("read projected turns"); assert_eq!( turns, - vec![("child-turn".to_string(), 4, Some(child_start_byte_offset))] + vec![("child-turn".to_string(), 5, Some(child_start_byte_offset))] ); let items = sqlx::query_as::<_, (String, i64)>( "SELECT item_id, rollout_ordinal FROM thread_items WHERE thread_id = ?", @@ -1078,8 +1303,16 @@ async fn subagent_prefix_advances_projection_without_materializing_history() { .fetch_all(&pool) .await .expect("read projected items"); - assert_eq!(items, vec![("child-user".to_string(), 5)]); - assert_eq!(projection_state(&pool, thread_id).await.1, 7); + assert_eq!(items, vec![("child-user".to_string(), 7)]); + let realtime_items = sqlx::query_as::<_, (String, i64)>( + "SELECT item_id, rollout_ordinal FROM thread_realtime_items WHERE thread_id = ?", + ) + .bind(thread_id.to_string()) + .fetch_all(&pool) + .await + .expect("read projected realtime items"); + assert_eq!(realtime_items, vec![("child:started".to_string(), 6)]); + assert_eq!(projection_state(&pool, thread_id).await.1, 9); } #[tokio::test] diff --git a/codex-rs/thread-store/src/store.rs b/codex-rs/thread-store/src/store.rs index 5cc582c51f..1e7c0637a8 100644 --- a/codex-rs/thread-store/src/store.rs +++ b/codex-rs/thread-store/src/store.rs @@ -363,6 +363,18 @@ pub trait ThreadStore: Any + Send + Sync { }) } + /// Lists bounded ordinary and realtime thread history in rollout order. + fn list_timeline( + &self, + _params: crate::ListTimelineParams, + ) -> ThreadStoreFuture<'_, crate::TimelinePage> { + Box::pin(async { + Err(ThreadStoreError::Unsupported { + operation: "thread/timeline/list", + }) + }) + } + /// Applies a literal metadata patch and returns the updated thread when one was materialized. /// /// `None` means the update succeeded without materializing a thread, for example because the diff --git a/codex-rs/thread-store/src/thread_metadata_sync.rs b/codex-rs/thread-store/src/thread_metadata_sync.rs index 9a4a67916d..76f3f1ce5a 100644 --- a/codex-rs/thread-store/src/thread_metadata_sync.rs +++ b/codex-rs/thread-store/src/thread_metadata_sync.rs @@ -304,6 +304,7 @@ impl ThreadMetadataSync { | RolloutItem::InterAgentCommunication(_) | RolloutItem::InterAgentCommunicationMetadata { .. } | RolloutItem::Compacted(_) + | RolloutItem::RealtimeItem(_) | RolloutItem::SecurityRiskScore(_) | RolloutItem::WorldState(_) => {} } diff --git a/codex-rs/thread-store/src/types.rs b/codex-rs/thread-store/src/types.rs index 192e6bed6e..496a076478 100644 --- a/codex-rs/thread-store/src/types.rs +++ b/codex-rs/thread-store/src/types.rs @@ -4,6 +4,7 @@ use std::sync::Arc; use chrono::DateTime; use chrono::Utc; use codex_app_server_protocol::CodexErrorInfo; +use codex_app_server_protocol::ThreadTimelineEntry; use codex_protocol::SessionId; use codex_protocol::ThreadId; use codex_protocol::capabilities::SelectedCapabilityRoot; @@ -510,6 +511,22 @@ pub struct ItemPage { pub backwards_cursor: Option, } +/// Parameters for reading a bounded mixed thread timeline. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct ListTimelineParams { + pub thread_id: ThreadId, + pub cursor: Option, + pub page_size: usize, +} + +/// Ordinary items, realtime facts, and the session state preceding their page. +#[derive(Clone, Debug, PartialEq)] +pub struct TimelinePage { + pub items: Vec, + pub next_cursor: Option, + pub active_realtime_session_at_page_start: Option, +} + /// Parameters for searching visible message occurrences within one paginated thread. #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct SearchThreadOccurrencesParams { diff --git a/codex-rs/tui/src/app/app_server_event_targets.rs b/codex-rs/tui/src/app/app_server_event_targets.rs index 19bb5db25f..f347964596 100644 --- a/codex-rs/tui/src/app/app_server_event_targets.rs +++ b/codex-rs/tui/src/app/app_server_event_targets.rs @@ -148,6 +148,15 @@ pub(super) fn server_notification_thread_target( ServerNotification::ThreadRealtimeItemAdded(notification) => { Some(notification.thread_id.as_str()) } + ServerNotification::ThreadRealtimeItemStarted(notification) => { + Some(notification.thread_id.as_str()) + } + ServerNotification::ThreadRealtimeItemTranscriptDelta(notification) => { + Some(notification.thread_id.as_str()) + } + ServerNotification::ThreadRealtimeItemCompleted(notification) => { + Some(notification.thread_id.as_str()) + } ServerNotification::ThreadRealtimeTranscriptDelta(notification) => { Some(notification.thread_id.as_str()) } diff --git a/codex-rs/tui/src/chatwidget/protocol.rs b/codex-rs/tui/src/chatwidget/protocol.rs index 8d81edbe0b..d487babe1b 100644 --- a/codex-rs/tui/src/chatwidget/protocol.rs +++ b/codex-rs/tui/src/chatwidget/protocol.rs @@ -238,6 +238,9 @@ impl ChatWidget { | ServerNotification::FuzzyFileSearchSessionCompleted(_) | ServerNotification::ThreadRealtimeStarted(_) | ServerNotification::ThreadRealtimeItemAdded(_) + | ServerNotification::ThreadRealtimeItemStarted(_) + | ServerNotification::ThreadRealtimeItemTranscriptDelta(_) + | ServerNotification::ThreadRealtimeItemCompleted(_) | ServerNotification::ThreadRealtimeOutputAudioDelta(_) | ServerNotification::ThreadRealtimeError(_) | ServerNotification::ThreadRealtimeClosed(_)