History

feat(mcp): fork existing conversations

Julius Marminge committed 2 months ago

Commit 970ea181 parent 415ed0f18 files · +1214 −7Browse files

Showing the changes to docs (2 of 18 files). Show all

Unified · Split

2 files
  1. docs/orchestration-v2/orchestrator-mcp-server.md +18 −0
  2. docs/user/conversation-forks.md +11 −0
docs/orchestration-v2/orchestrator-mcp-server.md+18−0
@@ -327,6 +327,24 @@ Without `runId`, it selects the newest interruptible run. A terminal run is · 326 unmodified lines
327327 returned unchanged, and a thread with no active provider turn returns
328328 `no_active_run`.
329329
330+### Conversation forks and transfer discovery
331+
332+`t3_thread_fork` dispatches the existing `thread.fork` command through
333+`ThreadManagementService`, including its project admission and deleted-source
334+checks. The request names a stable source point and supplies an idempotency key;
335+the target thread ID and command ID are stable for that key. The response is
336+derived from the committed `thread.created` and `context-transfer.created`
337+events rather than an optional final projection read.
338+
339+Fork creation records lineage and a pending context transfer. Native eligibility
340+is reported from the source provider session and strong provider refs, but
341+resolution remains deferred to the first target turn. The existing provider
342+turn planner then chooses native fork or checks portable-context capabilities.
343+
344+`t3_thread_transfers` exposes a bounded, newest-first view of one current-project
345+thread's durable context-transfer records. It is the read path for fork
346+provenance and later resolution or consumption.
347+
330348 ## Delegated Task Lifecycle
331349
332350 The MCP server is a command ingress into V2. It does not call provider adapters
docs/user/conversation-forks.md+11−0
@@ -0,0 +1,11 @@
1+# Fork conversations with agents
2+
3+Agents connected through T3 Code's built-in MCP server can create a durable conversation fork without changing Git branches or workspaces.
4+
5+`t3_thread_fork` requires an explicit stable source point: the latest completed run, a specific completed run, or a checkpoint belonging to a completed run. Omitting `sourceThreadId` uses the current conversation. The new conversation stays in the same project and inherits the source conversation's provider selection and modes, limited by the calling agent's permission ceiling.
6+
7+The result identifies the source and new conversation, the requested and canonical source points, and the durable fork transfer. It also says whether a native provider fork is currently eligible. The transfer remains pending until the new conversation's first turn, when T3 Code chooses native fork or portable context using the active provider's capabilities. A pending result does not mean provider context has already moved.
8+
9+Use `t3_thread_transfers` to inspect fork and other context-transfer records on a conversation. Results are newest first and can be filtered by transfer type.
10+
11+`clientRequestId` is required for forks. Reusing it returns the original thread and command receipt instead of creating another fork.