From 8d2c70689aedb9ab1901e7bbff5246e3cf840478 Mon Sep 17 00:00:00 2001 From: Felarof Date: Wed, 14 Jan 2026 17:30:39 -0800 Subject: [PATCH] feat: fixes to the jtbd agent (#231) * feat: add support for jtbd agent to accept max turns and experiment id as query params * fix: add jtbd agent integration with workflow * fix: change message threshold to 5 --- apps/agent/entrypoints/options/App.tsx | 15 ++++++++++++++- .../options/create-graph/GraphChat.tsx | 12 ++++++++++-- .../options/jtbd-agent/SurveyPage.tsx | 9 +++++++-- .../options/jtbd-agent/useSurveyChat.ts | 17 +++++++++++++---- .../entrypoints/sidepanel/index/ChatError.tsx | 2 +- apps/agent/lib/jtbd-popup/constants.ts | 2 +- apps/agent/lib/jtbd-popup/useJtbdPopup.ts | 18 ++++++++++++------ 7 files changed, 58 insertions(+), 17 deletions(-) diff --git a/apps/agent/entrypoints/options/App.tsx b/apps/agent/entrypoints/options/App.tsx index 7ac65db4..7e646d20 100644 --- a/apps/agent/entrypoints/options/App.tsx +++ b/apps/agent/entrypoints/options/App.tsx @@ -19,8 +19,18 @@ function getInitialRoute(): string { return '/ai' } +// Get survey params from query string +function getSurveyParams(): { maxTurns?: number; experimentId?: string } { + const params = new URLSearchParams(window.location.search) + const maxTurnsStr = params.get('maxTurns') + const experimentId = params.get('experimentId') ?? 'default' + const maxTurns = maxTurnsStr ? Number.parseInt(maxTurnsStr, 10) : 7 + return { maxTurns, experimentId } +} + export const App: FC = () => { const initialRoute = getInitialRoute() + const surveyParams = getSurveyParams() return ( @@ -40,7 +50,10 @@ export const App: FC = () => { /> } /> } /> - } /> + } + /> } /> diff --git a/apps/agent/entrypoints/options/create-graph/GraphChat.tsx b/apps/agent/entrypoints/options/create-graph/GraphChat.tsx index 83bc1aed..0bbe3ea5 100644 --- a/apps/agent/entrypoints/options/create-graph/GraphChat.tsx +++ b/apps/agent/entrypoints/options/create-graph/GraphChat.tsx @@ -40,11 +40,14 @@ export const GraphChat: FC = ({ const { popupVisible, + recordMessageSent, triggerIfEligible, - onTakeSurvey, + onTakeSurvey: onTakeSurveyBase, onDismiss: onDismissJtbdPopup, } = useJtbdPopup() + const onTakeSurvey = () => onTakeSurveyBase(5, 'workflow_survey') + // Trigger JTBD popup when AI finishes responding const previousChatStatus = useRef(status) // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally only trigger on status change @@ -93,6 +96,11 @@ export const GraphChat: FC = ({ })) } + const handleSubmit: FormEventHandler = (e) => { + recordMessageSent() + onSubmit(e) + } + const handleKeyDown = (e: KeyboardEvent) => { if ( e.key === 'Enter' && @@ -128,7 +136,7 @@ export const GraphChat: FC = ({ {chatError && }