Skip to content

Commit a6a814f

Browse files
authored
Merge pull request #85 from PathOnAI/search-algorithm-cleanup
fix the bug to terminate the correct browserbase session when click end button
2 parents 3167877 + 9beaa87 commit a6a814f

File tree

4 files changed

+56
-14
lines changed

4 files changed

+56
-14
lines changed

visual-tree-search-app/components/MessageLogPanel.tsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ interface Message {
3838
interface MessageLogPanelProps {
3939
messages: Message[];
4040
messagesEndRef?: React.RefObject<HTMLDivElement | null>;
41+
onSessionIdChange?: (sessionId: string) => void;
4142
}
4243

4344
interface ParsedMessage {
@@ -62,20 +63,35 @@ interface ParsedMessage {
6263
server_info?: {
6364
hostname?: string;
6465
};
66+
session_id?: string;
6567
}
6668

6769
interface PathStep {
6870
natural_language_description: string;
6971
action: string;
7072
}
7173

72-
const MessageLogPanel: React.FC<MessageLogPanelProps> = ({ messages, messagesEndRef }) => {
74+
const MessageLogPanel: React.FC<MessageLogPanelProps> = ({ messages, messagesEndRef, onSessionIdChange }) => {
7375
useEffect(() => {
7476
if (messagesEndRef?.current) {
7577
messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
7678
}
7779
}, [messages, messagesEndRef]);
7880

81+
useEffect(() => {
82+
if (!messages.length || !onSessionIdChange) return;
83+
84+
const latestMessage = messages[messages.length - 1];
85+
try {
86+
const data = JSON.parse(latestMessage.content);
87+
if (data.type === 'browser_setup' && data.status === 'success' && data.session_id) {
88+
onSessionIdChange(data.session_id);
89+
}
90+
} catch {
91+
// Not JSON or doesn't contain session info, ignore
92+
}
93+
}, [messages, onSessionIdChange]);
94+
7995
const getCardStyle = (type: string) => {
8096
switch (type) {
8197
// System Status Messages
@@ -536,7 +552,7 @@ const MessageLogPanel: React.FC<MessageLogPanelProps> = ({ messages, messagesEnd
536552
</div>
537553
</div>
538554
</div>
539-
</div>
555+
</div>
540556
);
541557
})}
542558
{messagesEndRef && <div ref={messagesEndRef} />}

visual-tree-search-app/components/MessageLogPanelLATS.tsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ interface Message {
4343
interface MessageLogPanelProps {
4444
messages: Message[];
4545
messagesEndRef?: React.RefObject<HTMLDivElement | null>;
46+
onSessionIdChange?: (sessionId: string) => void;
4647
}
4748

4849
interface ParsedMessage {
@@ -75,20 +76,35 @@ interface ParsedMessage {
7576
step?: number;
7677
step_name?: string;
7778
iteration?: number;
79+
session_id?: string;
7880
}
7981

8082
interface PathStep {
8183
natural_language_description: string;
8284
action: string;
8385
}
8486

85-
const MessageLogPanelLATS: React.FC<MessageLogPanelProps> = ({ messages, messagesEndRef }) => {
87+
const MessageLogPanelLATS: React.FC<MessageLogPanelProps> = ({ messages, messagesEndRef, onSessionIdChange }) => {
8688
useEffect(() => {
8789
if (messagesEndRef?.current) {
8890
messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
8991
}
9092
}, [messages, messagesEndRef]);
9193

94+
useEffect(() => {
95+
if (!messages.length || !onSessionIdChange) return;
96+
97+
const latestMessage = messages[messages.length - 1];
98+
try {
99+
const data = JSON.parse(latestMessage.content);
100+
if (data.type === 'browser_setup' && data.status === 'success' && data.session_id) {
101+
onSessionIdChange(data.session_id);
102+
}
103+
} catch {
104+
// Not JSON or doesn't contain session info, ignore
105+
}
106+
}, [messages, onSessionIdChange]);
107+
92108
const getCardStyle = (type: string) => {
93109
switch (type) {
94110
// System Status Messages
@@ -408,7 +424,8 @@ const MessageLogPanelLATS: React.FC<MessageLogPanelProps> = ({ messages, message
408424

409425
const parseMessage = (content: string): ParsedMessage => {
410426
try {
411-
return JSON.parse(content);
427+
const data = JSON.parse(content);
428+
return data;
412429
} catch {
413430
return { content };
414431
}

visual-tree-search-app/pages/LATSAgent.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,7 @@ const LATSAgent = () => {
8989
wsRef.current.onopen = () => {
9090
logMessage('Connected to LATS WebSocket server');
9191
setConnected(true);
92-
93-
// const request = {
94-
// type: "start_search",
95-
// agent_type: "LATSAgent",
96-
// starting_url: searchParams.startingUrl,
97-
// goal: searchParams.goal,
98-
// max_depth: searchParams.maxDepth,
99-
// num_simulations: searchParams.num_simulations
100-
// };
101-
92+
10293
const request = {
10394
type: "start_search",
10495
agent_type: "LATSAgent",
@@ -214,9 +205,18 @@ const LATSAgent = () => {
214205
<LATSVisual messages={messages} />
215206
</div>
216207

208+
{/* In LATSAgent.tsx */}
217209
<MessageLogPanelLATS
218210
messages={messages}
219211
messagesEndRef={messagesEndRef}
212+
onSessionIdChange={(newSessionId) => {
213+
// Handle session ID change
214+
if (sessionId && sessionId !== newSessionId) {
215+
// Terminate old session if needed
216+
// ...terminate code...
217+
}
218+
setSessionId(newSessionId);
219+
}}
220220
/>
221221
</div>
222222
</div>

visual-tree-search-app/pages/SimpleSearchAgent.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,18 @@ const SimpleSearchAgent = () => {
201201
<SimpleSearchVisual messages={messages} />
202202
</div>
203203

204+
{/* In LATSAgent.tsx */}
204205
<MessageLogPanel
205206
messages={messages}
206207
messagesEndRef={messagesEndRef}
208+
onSessionIdChange={(newSessionId) => {
209+
// Handle session ID change
210+
if (sessionId && sessionId !== newSessionId) {
211+
// Terminate old session if needed
212+
// ...terminate code...
213+
}
214+
setSessionId(newSessionId);
215+
}}
207216
/>
208217
</div>
209218
</div>

0 commit comments

Comments
 (0)