Skip to content

feat(conversations): unify native session continuation - #939

Open
Neonforge98 wants to merge 5 commits into
feat/pm-expansion-batchfrom
codex/audience-routing
Open

feat(conversations): unify native session continuation#939
Neonforge98 wants to merge 5 commits into
feat/pm-expansion-batchfrom
codex/audience-routing

Conversation

@Neonforge98

@Neonforge98 Neonforge98 commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

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

  • Stacked on PR feat(pm): expand MCP, routines, work items, inbox, and skills #844 at 1eaec91; both stack bases resolve directly to develop at 68e7aff.
  • Complete Vitest suite passed: 1,358 files and 10,747 tests.
  • pnpm typecheck, pnpm typecheck:fast, and pnpm lint:fast passed.
  • Targeted queue and canonical transcript regression suite passed: 38 tests.
  • Rust native materializer passed 30 tests; Codex native catalog passed 5 tests. Commit hooks also passed Cargo clippy.
  • Real Codex App catalog lookup returned the migrated UUID, title, and cwd. The App was navigated to UUID 01a05745-9ca7-7702-8f33-9f9707d24499 and rendered four native turns, including repository exploration and the Codex to Claude to Codex return increment.
  • Claude Desktop visibly lists the migrated sessions, but click-open automation is blocked by the local Computer Use window error and the live Claude CLI cannot authenticate with the expired OAuth session.
  • Queue audit found no enqueueCountAtom, queueFlushRequestAtom, fixed visibility delay, text-based synthetic suppression, second queue, or second follow and scroll implementation.
  • The cloud dual-instance E2E launches successfully but skips without E2E_CLOUD credentials; this remains a required live acceptance check.

@Harry19081 Harry19081 added bug Something isn't working cloud-collaboration Cloud sync, organizations, channels, or collaboration project-management Projects, work items, routines, GitHub work, or team inbox labels Aug 25, 2026
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 98d0821 to f1420a5 Compare August 26, 2026 01:01
@Neonforge98 Neonforge98 changed the title fix(collaboration): unify human audience routing feat(conversations): unify audience routing and local continuation Aug 26, 2026
@Neonforge98
Neonforge98 changed the base branch from develop to feat/pm-expansion-batch August 26, 2026 01:02
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch 2 times, most recently from 60fb115 to 2ad6f12 Compare August 26, 2026 03:58
@Neonforge98
Neonforge98 marked this pull request as draft August 26, 2026 08:37
@Neonforge98 Neonforge98 changed the title feat(conversations): unify audience routing and local continuation feat(conversations): unify native session continuation Aug 26, 2026
@Neonforge98
Neonforge98 marked this pull request as ready for review August 26, 2026 10:08
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from 157e735 to 8e9b3b4 Compare August 26, 2026 23:50
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 5e9bded to a91320a Compare August 26, 2026 23:53
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from 8e9b3b4 to 61ef78b Compare August 27, 2026 16:48
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from ec54e67 to fdc296b Compare August 27, 2026 16:48
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from 61ef78b to 223ebfa Compare August 27, 2026 23:25
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch 2 times, most recently from e801165 to 1c4a772 Compare August 27, 2026 23:42
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 7361aff to d601dcf Compare August 30, 2026 20:34
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from 05f80a6 to bf692a2 Compare August 31, 2026 10:58
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from d601dcf to 320dbf1 Compare August 31, 2026 10:58
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from bf692a2 to 1112c74 Compare August 31, 2026 11:50
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 320dbf1 to 87e4b35 Compare August 31, 2026 11:50
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from 1112c74 to 2d86124 Compare August 31, 2026 14:12
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 87e4b35 to 758b2a9 Compare August 31, 2026 14:13
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from 2d86124 to aa7c9df Compare August 31, 2026 15:12
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 758b2a9 to 36e7649 Compare August 31, 2026 15:21
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from aa7c9df to c0b0f5a Compare September 1, 2026 16:52
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from 36e7649 to 5c2d481 Compare September 1, 2026 16:52
@Neonforge98
Neonforge98 force-pushed the feat/pm-expansion-batch branch from c0b0f5a to 2b8c2f2 Compare September 2, 2026 00:11
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch 2 times, most recently from 2d06a5a to c941f95 Compare September 2, 2026 00:20
@Neonforge98
Neonforge98 changed the base branch from feat/pm-expansion-batch to develop September 2, 2026 00:44
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch from c941f95 to ce232a9 Compare September 2, 2026 00:45
@Neonforge98
Neonforge98 changed the base branch from develop to feat/pm-expansion-batch September 2, 2026 00:46
@Neonforge98
Neonforge98 changed the base branch from feat/pm-expansion-batch to develop September 2, 2026 00:51
@Neonforge98
Neonforge98 changed the base branch from develop to feat/pm-expansion-batch September 2, 2026 00:52
@Neonforge98
Neonforge98 changed the base branch from feat/pm-expansion-batch to develop September 2, 2026 01:08
@Neonforge98
Neonforge98 force-pushed the codex/audience-routing branch 2 times, most recently from 6538c8e to 4e8928a Compare September 2, 2026 01:09
@Neonforge98
Neonforge98 changed the base branch from develop to feat/pm-expansion-batch September 2, 2026 01:10
@Neonforge98
Neonforge98 changed the base branch from feat/pm-expansion-batch to develop September 2, 2026 01:42
@Neonforge98
Neonforge98 changed the base branch from develop to feat/pm-expansion-batch September 2, 2026 01:42
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working cloud-collaboration Cloud sync, organizations, channels, or collaboration project-management Projects, work items, routines, GitHub work, or team inbox

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants