feat(mcp): configure existing conversations - #8695
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 of the new ConversationConfigurationMcpService and its touched call sites. One convention violation found; dependency acquisition (yield* ThreadManagementService / ProviderRegistry / ProviderSwitchServiceV2), the make + layer pair, and the absence of ManagedRuntime/runPromise in the service all look correct.
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 controls that can change conversation providers, models, runtime policies, and interaction modes, including effects such as provider-session detachment. It also modifies shared orchestration locking, policy enforcement, and durable receipt behavior, making human review appropriate. You can add or adjust custom eligibility rules. Learn more. |
8d7d617 to
31ec462
Compare
414c5da to
febe089
Compare
490318a to
373612e
Compare
febe089 to
94b0c58
Compare
94b0c58 to
e101aad
Compare
There was a problem hiding this comment.
UI Consistency: 1 issue found
ChatMarkdown is a shared renderer used by chat threads, review annotations, and the pull request panel. At this head it resolves the environment for its editor RPC and capability read from the globally active environment instead of the markdown's own scope, and the explicit environmentId prop that let non-thread call sites supply that scope was removed. Details inline.
Posted via Macroscope — UI Consistency
|
Macroscope skipped reviewing this pull request. Per-review cost limit exceeded (workspace setting). This review would cost an estimated $246.91, 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:
|
81cd33d to
862c5b2
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
Bugbot Autofix is ON, but a cloud agent failed to start.
Reviewed by Cursor Bugbot for commit 363abe5. Configure here.
c01ff20 to
9d2539a
Compare
bde0cf4 to
8c07d91
Compare
b82facd to
2ac9bfe
Compare
8c07d91 to
f17cd6b
Compare
f17cd6b to
8310b79
Compare
|
Superseded as the active MCP proposal by #10557 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. This intentionally limits writes to the caller. Permission-mode changes, cross-thread configuration and multi-command retry transactions are separate work. Provider/model discovery already exists in orchestrator_capabilities. Closing this mixed proposal without merging. The remote branch |

Problem
Agents could inspect thread activity but could not discover or change an existing thread's provider, model options, runtime mode, or interaction mode through the built-in MCP server.
Change
Add current-project
t3_thread_configurationandt3_thread_configuretools backed by a focused service, existing V2 commands, provider-switch planning, typed receipts, provider capability discovery, and caller permission ceilings.Behavior
All requested fields are validated before the first new command. Omitted fields retain committed values except that a provider-only change selects that provider's default model; omitted options are otherwise preserved, an explicit empty list clears them, and provider or model changes never inherit incompatible options. Durable accepted and rejected command legs replay under the same client request ID; resolving a rejected leg requires a new ID. Results separate committed settings from requested detach/restart and next-turn handoff effects.
Focused validation
vp run --filter t3 typecheckvp run --filter @t3tools/contracts typecheckgit diff --checkDependency
Standalone PR based on
t3code/codex-turn-mappingat the pinned rollout target. It is not a member of a native GitHub stack.Implemented by GPT-5.6-Sol via Codex in T3 Code.
Note
Add
t3_thread_configurationandt3_thread_configureMCP tools for existing conversationsConversationConfigurationMcpServicewith read and configure operations that let MCP callers inspect and change a thread's provider/model selection, runtime mode, and interaction modet3_thread_configuration(read-only, idempotent) andt3_thread_configure(destructive) tools in the orchestrator toolkit, with handlers delegating to the new serviceOrchestrationV2Commandvariants with optional policy ceilings and expected-selection guards; the orchestrator now loads the caller thread, enforces mode ceilings, rejects stale partial selections, and dispatches policy-bounded commands under nested caller+target thread locksclientRequestIdreplay accepted or rejected durable receipts instead of re-dispatching; mode reductions below the caller's ceiling are prioritized over other pending changesEventSinknow assigns the thread's latest sequence to command receipts for accepted commands that produce no events, instead of failingmakeOrchestratornow acquire nested locks over sorted caller+target thread IDs viadispatchLockKeys; commands without a caller thread still use the single target lock, but any deadlock-prone lock ordering assumptions should be reviewed thereMacroscope summarized 26d25cb.