feat(conversations): unify native session continuation - #939
Open
Neonforge98 wants to merge 5 commits into
Open
Conversation
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 26, 2026 01:01
98d0821 to
f1420a5
Compare
This was referenced Aug 26, 2026
Neonforge98
force-pushed
the
codex/audience-routing
branch
2 times, most recently
from
August 26, 2026 03:58
60fb115 to
2ad6f12
Compare
Neonforge98
marked this pull request as draft
August 26, 2026 08:37
Neonforge98
marked this pull request as ready for review
August 26, 2026 10:08
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 26, 2026 23:50
157e735 to
8e9b3b4
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 26, 2026 23:53
5e9bded to
a91320a
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 27, 2026 16:48
8e9b3b4 to
61ef78b
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 27, 2026 16:48
ec54e67 to
fdc296b
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 27, 2026 23:25
61ef78b to
223ebfa
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
2 times, most recently
from
August 27, 2026 23:42
e801165 to
1c4a772
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 30, 2026 20:34
7361aff to
d601dcf
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 31, 2026 10:58
05f80a6 to
bf692a2
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 31, 2026 10:58
d601dcf to
320dbf1
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 31, 2026 11:50
bf692a2 to
1112c74
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 31, 2026 11:50
320dbf1 to
87e4b35
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 31, 2026 14:12
1112c74 to
2d86124
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 31, 2026 14:13
87e4b35 to
758b2a9
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 31, 2026 15:12
2d86124 to
aa7c9df
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
August 31, 2026 15:21
758b2a9 to
36e7649
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
September 1, 2026 16:52
aa7c9df to
c0b0f5a
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
September 1, 2026 16:52
36e7649 to
5c2d481
Compare
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
September 2, 2026 00:11
c0b0f5a to
2b8c2f2
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
2 times, most recently
from
September 2, 2026 00:20
2d06a5a to
c941f95
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
from
September 2, 2026 00:45
c941f95 to
ce232a9
Compare
Neonforge98
force-pushed
the
codex/audience-routing
branch
2 times, most recently
from
September 2, 2026 01:09
6538c8e to
4e8928a
Compare
Define canonical conversation roots, typed events, turn intents, local continuation bindings, Cloud-plane synchronization, incremental timelines, durable publication outbox, and provider-independent sender metadata.
Reuse the normal composer surface for runtime switching, target binding, optimistic pending/sent/failed messages, queued follow-ups, sender identity, retry/edit actions, and canonical execution overlays.
Convert canonical role/tool events into Codex and Claude Code native histories, bind provider session identities, preserve interrupted tool activity, resume through the selected CLI transport, and recover from provider context exhaustion.
Synchronize Codex catalog metadata, expose native transcript roots to isolated instances, document the continuation architecture, and add cross-runtime, dual-instance, queued-control, and native-App acceptance coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Imported, Team, Codex, and Claude Code sessions could be displayed, but continuation was not one generic provider-native conversation flow. Runtime changes could lose native role and tool structure, interrupted partial work, queue semantics, sender identity, or native-app discoverability. Team Chat and failed-message UX also followed separate paths.
Solution
Add one provider-neutral canonical conversation event plane and materialize that history into each target provider native role and tool transcript. Same-runtime continuation reuses the provider native conversation; a runtime switch creates or updates the target provider conversation under the same ORG2 canonical root. User, assistant, tool-call, tool-result, compact, interrupted-partial, Team Chat, and audience events remain structured and are never flattened into one transcript prompt.
The composer reuses the existing durable message queue and the Agent or Team Chat control from PR #1127. turnIntentId is the end-to-end identity for optimistic, queued, accepted, failed, retried, and provider-persisted rows. Pending and failed messages remain visible in the transcript. Existing chat viewport ownership from PR #843 remains the only follow and scroll implementation.
Provider adapters publish Codex catalog entries and Claude transcript plus metadata atomically. Context exhaustion is handled only after the provider reports it, by rebuilding a valid provider-native message list and retrying once. Work Items may trigger this capability later, but do not own a separate continuation implementation.
This adds no cloud host, sender-device dispatcher, checkpoint transport, E2EE transcript subsystem, second queue, or second scroll controller.
Potential risks
Native provider formats and desktop-app caches can change upstream. The adapters validate fidelity, fail closed for unsupported content, isolate provider-specific catalog logic, and publish transactionally. Runtime switching also depends on strict ordering and idempotency around queued or interrupted turns.
Live Claude verification is currently blocked on this machine because the persisted Anthropic-1 OAuth refresh token is invalid. The independent cloud dual-instance spec is also skipped without E2E_CLOUD service credentials. Those paths are not claimed as passed.
Verification