Recipe variables (#5365)
Co-authored-by: Douwe Osinga <douwe@squareup.com> Co-authored-by: Zane Staggs <zane@squareup.com>
This commit is contained in:
@@ -23,6 +23,7 @@ import { useCostTracking } from '../hooks/useCostTracking';
|
||||
import RecipeActivities from './recipes/RecipeActivities';
|
||||
import { useToolCount } from './alerts/useToolCount';
|
||||
import { getThinkingMessage } from '../types/message';
|
||||
import ParameterInputModal from './ParameterInputModal';
|
||||
|
||||
interface BaseChatProps {
|
||||
setChat: (chat: ChatType) => void;
|
||||
@@ -49,7 +50,7 @@ function BaseChatContent({
|
||||
|
||||
const disableAnimation = location.state?.disableAnimation || false;
|
||||
const [hasStartedUsingRecipe, setHasStartedUsingRecipe] = React.useState(false);
|
||||
const [hasAcceptedRecipe, setHasAcceptedRecipe] = useState<boolean>();
|
||||
const [hasNotAcceptedRecipe, setHasNotAcceptedRecipe] = useState<boolean>();
|
||||
const [hasRecipeSecurityWarnings, setHasRecipeSecurityWarnings] = useState(false);
|
||||
|
||||
const isMobile = useIsMobile();
|
||||
@@ -63,12 +64,19 @@ function BaseChatContent({
|
||||
|
||||
const onStreamFinish = useCallback(() => {}, []);
|
||||
|
||||
const { session, messages, chatState, handleSubmit, stopStreaming, sessionLoadError } =
|
||||
useChatStream({
|
||||
sessionId,
|
||||
onStreamFinish,
|
||||
initialMessage,
|
||||
});
|
||||
const {
|
||||
session,
|
||||
messages,
|
||||
chatState,
|
||||
handleSubmit,
|
||||
stopStreaming,
|
||||
sessionLoadError,
|
||||
setRecipeUserParams,
|
||||
} = useChatStream({
|
||||
sessionId,
|
||||
onStreamFinish,
|
||||
initialMessage,
|
||||
});
|
||||
|
||||
const handleFormSubmit = (e: React.FormEvent) => {
|
||||
const customEvent = e as unknown as CustomEvent;
|
||||
@@ -95,7 +103,7 @@ function BaseChatContent({
|
||||
|
||||
(async () => {
|
||||
const accepted = await window.electron.hasAcceptedRecipeBefore(recipe);
|
||||
setHasAcceptedRecipe(accepted);
|
||||
setHasNotAcceptedRecipe(!accepted);
|
||||
|
||||
if (!accepted) {
|
||||
const scanResult = await scanRecipe(recipe);
|
||||
@@ -107,7 +115,7 @@ function BaseChatContent({
|
||||
const handleRecipeAccept = async (accept: boolean) => {
|
||||
if (recipe && accept) {
|
||||
await window.electron.recordRecipeHash(recipe);
|
||||
setHasAcceptedRecipe(true);
|
||||
setHasNotAcceptedRecipe(false);
|
||||
} else {
|
||||
setView('chat');
|
||||
}
|
||||
@@ -283,7 +291,7 @@ function BaseChatContent({
|
||||
sessionCosts={sessionCosts}
|
||||
setIsGoosehintsModalOpen={setIsGoosehintsModalOpen}
|
||||
recipe={recipe}
|
||||
recipeAccepted={hasAcceptedRecipe}
|
||||
recipeAccepted={!hasNotAcceptedRecipe}
|
||||
initialPrompt={initialPrompt}
|
||||
toolCount={toolCount || 0}
|
||||
autoSubmit={false}
|
||||
@@ -294,7 +302,7 @@ function BaseChatContent({
|
||||
|
||||
{recipe && (
|
||||
<RecipeWarningModal
|
||||
isOpen={!hasAcceptedRecipe}
|
||||
isOpen={!!hasNotAcceptedRecipe}
|
||||
onConfirm={() => handleRecipeAccept(true)}
|
||||
onCancel={() => handleRecipeAccept(false)}
|
||||
recipeDetails={{
|
||||
@@ -306,14 +314,13 @@ function BaseChatContent({
|
||||
/>
|
||||
)}
|
||||
|
||||
{/*/!* Recipe Parameter Modal *!/*/}
|
||||
{/*{isParameterModalOpen && filteredParameters.length > 0 && (*/}
|
||||
{/* <ParameterInputModal*/}
|
||||
{/* parameters={filteredParameters}*/}
|
||||
{/* onSubmit={handleParameterSubmit}*/}
|
||||
{/* onClose={() => setIsParameterModalOpen(false)}*/}
|
||||
{/* />*/}
|
||||
{/*)}*/}
|
||||
{recipe?.parameters && recipe.parameters.length > 0 && !session?.user_recipe_values && (
|
||||
<ParameterInputModal
|
||||
parameters={recipe.parameters}
|
||||
onSubmit={setRecipeUserParams}
|
||||
onClose={() => setView('chat')}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/*/!* Create Recipe from Session Modal *!/*/}
|
||||
{/*<CreateRecipeFromSessionModal*/}
|
||||
|
||||
Reference in New Issue
Block a user