feat(mcp): fork existing conversations - #8696
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
There was a problem hiding this comment.
Effect service conventions review: one convention violation found in the new ConversationTransferMcpService module.
Posted via Macroscope — Effect Service Conventions
Thread transfer impact
This comment will update automatically after the next completed run. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds production MCP tools that create durable conversation forks and context-transfer records, with new provider-resolution behavior and shared orchestration locking and permission enforcement. Its new user-facing workflow and cross-cutting runtime changes warrant human review. You can add or adjust custom eligibility rules. Learn more. |
b268728 to
99b0ed2
Compare
99b0ed2 to
b3772e6
Compare
b3772e6 to
125913a
Compare
125913a to
d55ea91
Compare
|
Macroscope skipped reviewing this pull request. Per-review cost limit exceeded (workspace setting). This review would cost an estimated $246.19, which exceeds your per-review limit of $10.00. The top 3 files driving up this estimate:
Tip To get this pull request reviewed, you can:
|
There was a problem hiding this comment.
One convention issue found: a new single-tag Effect.catchTag in Orchestrator.ts. The rest of the new ConversationTransferMcpService module (inline Context.Service interface, environment-acquired ThreadManagementService, exported make/layer, namespace imports of Effect modules) matches the conventions.
Posted via Macroscope — Effect Service Conventions
d55ea91 to
ef0aa12
Compare
ef0aa12 to
eced912
Compare
eced912 to
7577ec0
Compare
9fb7083 to
6f3e626
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
Bugbot Autofix is ON, but a cloud agent failed to start.
Reviewed by Cursor Bugbot for commit 6f3e626. Configure here.
6f3e626 to
1ad23c2
Compare
|
Superseded as the active MCP proposal by #10558 in the rebuilt MCP stack, following the maintainer request to review thin service wrappers separately from service hardening. This is not a full feature-parity replacement. Each invocation generates a new command. No additional clientRequestId protocol, transfer journal or provider implementation. Merge targets remain in the calling project. Closing this mixed proposal without merging. The remote branch |

Problem
Agents could create ordinary or delegated threads, but could not create a durable T3 conversation fork from a precise stable source or inspect its context-transfer provenance.
Change
Add current-project
t3_thread_forkand boundedt3_thread_transferstools backed by a focused service and the existingthread.forkV2 command throughThreadManagementService.Behavior
Forks require a completed run, checkpoint, or latest stable source plus a retry key. Results return the committed transfer and receipt, inherited-permission enforcement, and truthful native-fork eligibility while leaving native or portable resolution to the first target turn. Derived target identities use a fork-specific namespace and cannot overwrite existing or soft-deleted threads.
Focused validation
git diff --checkDependency
Bottom layer of native stack 8776, based on
t3code/codex-turn-mappingat the pinned rollout target. #8697 consumes this transfer contract and service for merge-back.Implemented by GPT-5.6-Sol via Codex in T3 Code.
Note
Add MCP conversation fork and transfer list tools
ConversationTransferMcpServiceexposingt3_thread_transfersfor bounded read-only transfer listing andt3_thread_forkfor conversation mutations.Orchestratorthread.forkdispatch validates caller policy ceilings (runtime and interaction modes) and checks target projection existence before issuing fork commands.withDispatchLocks) so forks coordinate on source, target, and caller threads.ConversationForkInput,ConversationForkResult, andTransferPageLimitschemas with strict validation (e.g., Unicode well-formedness for retry keys).thread.forkdispatch now fails when target projection exists or source runtime/interaction mode exceeds the caller ceiling;withDispatchLockschanges dispatch lock acquisition to multiple sorted keys.Macroscope summarized 1ad23c2.