Recipe variables (#5365)

Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Zane Staggs <zane@squareup.com>
This commit is contained in:
Douwe Osinga
2025-10-28 09:28:47 -04:00
committed by GitHub
parent 1156cbcf9d
commit fb95068e4a
2 changed files with 74 additions and 20 deletions
+26 -19
View File
@@ -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*/}