History

Fix redundant extractModelSelectionOptions call and prevent silent model options injection on session restart

- ChatView: Store extractModelSelectionOptions result in a local variable instead of calling it twice with identical arguments in selectedModelSelection useMemo - ProviderCommandReactor: Only derive model options from requestedModelSelection (explicit user request), not from thread.modelSelection fallback, to prevent silent injection of persisted options during runtime-mode-triggered session restarts

Cursor Agent committed 7 months ago

Commit 73c8d111 parent 07e86e92 files · +10 −14Browse files

Unified · Split

2 files
  1. apps/server/src/orchestration/Layers/ProviderCommandReactor.ts +4 −1
  2. apps/web/src/components/ChatView.tsx +6 −13
apps/server/src/orchestration/Layers/ProviderCommandReactor.ts+4−1
@@ -249,7 +249,10 @@ const make = Effect.gen(function* () { · 248 unmodified lines
249249 const desiredModelSelection = requestedModelSelection ?? thread.modelSelection;
250250 const desiredModel = desiredModelSelection.model;
251251 const desiredModelOptions =
252− options?.modelOptions ?? toProviderModelOptions(desiredModelSelection);
252+ options?.modelOptions ??
253+ (requestedModelSelection !== undefined
254+ ? toProviderModelOptions(requestedModelSelection)
255+ : undefined);
253256 const effectiveCwd = resolveThreadWorkspaceCwd({
254257 thread,
255258 projects: readModel.projects,
apps/web/src/components/ChatView.tsx+6−13
@@ -643,21 +643,14 @@ export default function ChatView({ threadId }: ChatViewProps) { · 642 unmodified lines
643643 );
644644 const selectedPromptEffort = composerProviderState.promptEffort;
645645 const selectedModelOptionsForDispatch = composerProviderState.modelOptionsForDispatch;
646− const selectedModelSelection = useMemo<ModelSelection>(
647− () => ({
646+ const selectedModelSelection = useMemo<ModelSelection>(() => {
647+ const options = extractModelSelectionOptions(selectedProvider, selectedModelOptionsForDispatch);
648+ return {
648649 provider: selectedProvider,
649650 model: selectedModel,
650− ...(extractModelSelectionOptions(selectedProvider, selectedModelOptionsForDispatch)
651− ? {
652− options: extractModelSelectionOptions(
653− selectedProvider,
654− selectedModelOptionsForDispatch,
655− ),
656− }
657− : {}),
658− }),
659− [selectedModel, selectedModelOptionsForDispatch, selectedProvider],
660− );
651+ ...(options ? { options } : {}),
652+ };
653+ }, [selectedModel, selectedModelOptionsForDispatch, selectedProvider]);
661654 const providerOptionsForDispatch = useMemo(() => getProviderStartOptions(settings), [settings]);
662655 const selectedModelForPicker = selectedModel;
663656 const modelOptionsByProvider = useMemo(