Skip to content

Commit 7486ea1

Browse files
authored
Merge pull request #4814 from continuedev/dallin/mcp-history
Disable chat while tools generated
2 parents f0b2383 + 8e76919 commit 7486ea1

File tree

4 files changed

+40
-14
lines changed

4 files changed

+40
-14
lines changed

extensions/intellij/gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ pluginGroup=com.github.continuedev.continueintellijextension
33
pluginName=continue-intellij-extension
44
pluginRepositoryUrl=https://github.com/continuedev/continue
55
# SemVer format -> https://semver.org
6-
pluginVersion=1.0.6
6+
pluginVersion=1.0.7
77
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
88
pluginSinceBuild=223
99
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension

gui/src/components/mainInput/InputToolbar.tsx

+31-3
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import {
99
vscButtonBackground,
1010
vscButtonForeground,
1111
vscForeground,
12+
vscInputBackground,
1213
} from "..";
1314
import { useAppDispatch, useAppSelector } from "../../redux/hooks";
1415
import { selectUseActiveFile } from "../../redux/selectors";
16+
import { selectCurrentToolCall } from "../../redux/selectors/selectCurrentToolCall";
1517
import { selectDefaultModel } from "../../redux/slices/configSlice";
1618
import {
1719
selectHasCodeToEdit,
@@ -21,6 +23,7 @@ import { exitEditMode } from "../../redux/thunks";
2123
import { loadLastSession } from "../../redux/thunks/session";
2224
import {
2325
getAltKeyLabel,
26+
getFontSize,
2427
getMetaKeyLabel,
2528
isMetaEquivalentKeyPressed,
2629
} from "../../util";
@@ -30,15 +33,35 @@ import ModeSelect from "../modelSelection/ModeSelect";
3033
import { useFontSize } from "../ui/font";
3134
import HoverItem from "./InputToolbar/bottom/HoverItem";
3235

36+
const StyledDiv = styled.div<{ isHidden?: boolean }>`
37+
padding-top: 4px;
38+
justify-content: space-between;
39+
gap: 1px;
40+
background-color: ${vscInputBackground};
41+
align-items: center;
42+
font-size: ${getFontSize() - 2}px;
43+
cursor: ${(props) => (props.isHidden ? "default" : "text")};
44+
opacity: ${(props) => (props.isHidden ? 0 : 1)};
45+
pointer-events: ${(props) => (props.isHidden ? "none" : "auto")};
46+
user-select: none;
47+
48+
& > * {
49+
flex: 0 0 auto;
50+
}
51+
`;
52+
3353
const EnterButton = styled.button<{ isPrimary?: boolean }>`
3454
all: unset;
3555
padding: 2px 4px;
3656
display: flex;
3757
align-items: center;
3858
background-color: ${(props) =>
39-
props.isPrimary ? vscButtonBackground : lightGray + "33"};
59+
!props.disabled && props.isPrimary
60+
? vscButtonBackground
61+
: lightGray + "33"};
4062
border-radius: ${defaultBorderRadius};
41-
color: ${(props) => (props.isPrimary ? vscButtonForeground : vscForeground)};
63+
color: ${(props) =>
64+
!props.disabled && props.isPrimary ? vscButtonForeground : vscForeground};
4265
cursor: pointer;
4366
4467
:disabled {
@@ -75,8 +98,13 @@ function InputToolbar(props: InputToolbarProps) {
7598
const useActiveFile = useAppSelector(selectUseActiveFile);
7699
const isInEditMode = useAppSelector(selectIsInEditMode);
77100
const hasCodeToEdit = useAppSelector(selectHasCodeToEdit);
101+
const toolCallState = useAppSelector(selectCurrentToolCall);
78102
const isEditModeAndNoCodeToEdit = isInEditMode && !hasCodeToEdit;
79-
const isEnterDisabled = props.disabled || isEditModeAndNoCodeToEdit;
103+
104+
const isEnterDisabled =
105+
props.disabled ||
106+
isEditModeAndNoCodeToEdit ||
107+
toolCallState?.status === "generated";
80108
const toolsSupported = defaultModel && modelSupportsTools(defaultModel);
81109

82110
const supportsImages =

gui/src/components/mainInput/tiptap/TipTapEditor.tsx

-4
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,6 @@ function TipTapEditor(props: TipTapEditorProps) {
231231
}}
232232
>
233233
<div className="px-2.5 pb-1 pt-2">
234-
{/* <TopInputToolbar
235-
lumpOpen={props.lumpOpen}
236-
setLumpOpen={props.setLumpOpen}
237-
/> */}
238234
<EditorContent
239235
className={`scroll-container overflow-y-scroll ${props.isMainInput ? "max-h-[70vh]" : ""}`}
240236
spellCheck={false}

gui/src/pages/gui/Chat.tsx

+8-6
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ import {
55
ExclamationTriangleIcon,
66
} from "@heroicons/react/24/outline";
77
import { Editor, JSONContent } from "@tiptap/react";
8-
import { InputModifiers, RangeInFileWithContents, ToolCallState } from "core";
8+
import { InputModifiers, RangeInFileWithContents } from "core";
99
import { streamResponse } from "core/llm/stream";
1010
import { renderChatMessage, stripImages } from "core/util/messageContent";
1111
import { usePostHog } from "posthog-js/react";
1212
import { useCallback, useContext, useEffect, useRef, useState } from "react";
1313
import { ErrorBoundary } from "react-error-boundary";
14-
import { useSelector } from "react-redux";
1514
import styled from "styled-components";
1615
import { Button, lightGray, vscBackground } from "../../components";
1716
import CodeToEditCard from "../../components/CodeToEditCard";
@@ -44,7 +43,6 @@ import {
4443
setDialogMessage,
4544
setShowDialog,
4645
} from "../../redux/slices/uiSlice";
47-
import { RootState } from "../../redux/store";
4846
import { cancelStream } from "../../redux/thunks/cancelStream";
4947
import { exitEditMode } from "../../redux/thunks/exitEditMode";
5048
import { loadLastSession } from "../../redux/thunks/session";
@@ -115,9 +113,7 @@ export function Chat() {
115113
(state) => state.config.config.ui?.showChatScrollbar,
116114
);
117115
const codeToEdit = useAppSelector((state) => state.session.codeToEdit);
118-
const toolCallState = useSelector<RootState, ToolCallState | undefined>(
119-
selectCurrentToolCall,
120-
);
116+
const toolCallState = useAppSelector(selectCurrentToolCall);
121117
const applyStates = useAppSelector(
122118
(state) => state.session.codeBlockApplyStates.states,
123119
);
@@ -162,6 +158,11 @@ export function Chat() {
162158
index?: number,
163159
editorToClearOnSend?: Editor,
164160
) => {
161+
if (toolCallState?.status === "generated") {
162+
return console.error(
163+
"Cannot submit message while awaiting tool confirmation",
164+
);
165+
}
165166
if (defaultModel?.provider === "free-trial") {
166167
const newCount = incrementFreeTrialCount();
167168

@@ -225,6 +226,7 @@ export function Chat() {
225226
streamResponse,
226227
isSingleRangeEditOrInsertion,
227228
codeToEdit,
229+
toolCallState,
228230
],
229231
);
230232

0 commit comments

Comments
 (0)