From c3e845e0e250f31426f425e1ce63da12f02c9bbe Mon Sep 17 00:00:00 2001 From: Willie Zutz Date: Sat, 21 Jun 2025 16:15:46 -0600 Subject: [PATCH] fix(formatting) --- src/components/AgentActionDisplay.tsx | 32 ++++++++++++++++++--------- src/lib/agents/analyzerAgent.ts | 24 +++++++++++++++----- src/lib/agents/synthesizerAgent.ts | 6 ++++- src/lib/agents/taskManagerAgent.ts | 24 +++++++++++--------- src/lib/agents/webSearchAgent.ts | 11 +++++---- src/lib/utils/contentUtils.ts | 20 +++++++++-------- 6 files changed, 77 insertions(+), 40 deletions(-) diff --git a/src/components/AgentActionDisplay.tsx b/src/components/AgentActionDisplay.tsx index 280d345..83bfba0 100644 --- a/src/components/AgentActionDisplay.tsx +++ b/src/components/AgentActionDisplay.tsx @@ -185,31 +185,43 @@ const AgentActionDisplay = ({ {event.details.currentTask && (
Current Task: - "{event.details.currentTask}" -
- )} - {event.details.taskIndex !== undefined && event.details.totalTasks !== undefined && ( -
- Progress: - Task {event.details.taskIndex} of {event.details.totalTasks} + + "{event.details.currentTask}" +
)} + {event.details.taskIndex !== undefined && + event.details.totalTasks !== undefined && ( +
+ Progress: + + Task {event.details.taskIndex} of{' '} + {event.details.totalTasks} + +
+ )} {event.details.completedTask && (
Completed: - "{event.details.completedTask}" + + "{event.details.completedTask}" +
)} {event.details.nextTask && (
Next: - "{event.details.nextTask}" + + "{event.details.nextTask}" +
)} {event.details.currentSearchFocus && (
Search Focus: - "{event.details.currentSearchFocus}" + + "{event.details.currentSearchFocus}" +
)} diff --git a/src/lib/agents/analyzerAgent.ts b/src/lib/agents/analyzerAgent.ts index 5e83242..3fad35b 100644 --- a/src/lib/agents/analyzerAgent.ts +++ b/src/lib/agents/analyzerAgent.ts @@ -16,7 +16,10 @@ import { additionalWebSearchPrompt, decideNextActionPrompt, } from '../prompts/analyzer'; -import { removeThinkingBlocks, removeThinkingBlocksFromMessages } from '../utils/contentUtils'; +import { + removeThinkingBlocks, + removeThinkingBlocksFromMessages, +} from '../utils/contentUtils'; export class AnalyzerAgent { private llm: BaseChatModel; @@ -84,7 +87,9 @@ export class AnalyzerAgent { query: state.originalQuery || state.query, // Use original query for analysis context }); - const thinkingBlocksRemovedMessages = removeThinkingBlocksFromMessages(state.messages); + const thinkingBlocksRemovedMessages = removeThinkingBlocksFromMessages( + state.messages, + ); const nextActionResponse = await this.llm.invoke( [...thinkingBlocksRemovedMessages, new HumanMessage(nextActionPrompt)], @@ -118,7 +123,10 @@ export class AnalyzerAgent { }); const stream = await this.llm.stream( - [...removeThinkingBlocksFromMessages(state.messages), new SystemMessage(moreUserInfoPrompt)], + [ + ...removeThinkingBlocksFromMessages(state.messages), + new SystemMessage(moreUserInfoPrompt), + ], { signal: this.signal }, ); @@ -175,7 +183,10 @@ export class AnalyzerAgent { }); const moreInfoResponse = await this.llm.invoke( - [...removeThinkingBlocksFromMessages(state.messages), new HumanMessage(moreInfoPrompt)], + [ + ...removeThinkingBlocksFromMessages(state.messages), + new HumanMessage(moreInfoPrompt), + ], { signal: this.signal }, ); @@ -210,7 +221,10 @@ export class AnalyzerAgent { ], query: moreInfoQuestion, // Use the refined question for TaskManager to analyze searchInstructions: moreInfoQuestion, - searchInstructionHistory: [...(state.searchInstructionHistory || []), moreInfoQuestion], + searchInstructionHistory: [ + ...(state.searchInstructionHistory || []), + moreInfoQuestion, + ], fullAnalysisAttempts: 1, originalQuery: state.originalQuery || state.query, // Preserve the original user query // Reset task list so TaskManager can break down the search requirements again diff --git a/src/lib/agents/synthesizerAgent.ts b/src/lib/agents/synthesizerAgent.ts index b48eceb..431e921 100644 --- a/src/lib/agents/synthesizerAgent.ts +++ b/src/lib/agents/synthesizerAgent.ts @@ -98,7 +98,11 @@ ${doc.metadata?.url.toLowerCase().includes('file') ? '' : '\n' + doc.metada ); const stream = await this.llm.stream( - [...removeThinkingBlocksFromMessages(state.messages), new SystemMessage(synthesisPrompt), new HumanMessage(state.originalQuery || state.query)], + [ + ...removeThinkingBlocksFromMessages(state.messages), + new SystemMessage(synthesisPrompt), + new HumanMessage(state.originalQuery || state.query), + ], { signal: this.signal }, ); diff --git a/src/lib/agents/taskManagerAgent.ts b/src/lib/agents/taskManagerAgent.ts index 125eeb7..098a104 100644 --- a/src/lib/agents/taskManagerAgent.ts +++ b/src/lib/agents/taskManagerAgent.ts @@ -115,25 +115,26 @@ export class TaskManagerAgent { query: state.query, }); - const taskBreakdownResult = await this.llm.invoke( - [prompt], - { signal: this.signal }, - ); + const taskBreakdownResult = await this.llm.invoke([prompt], { + signal: this.signal, + }); // Parse the response to extract tasks const responseContent = taskBreakdownResult.content as string; const taskLines = responseContent .split('\n') - .filter(line => line.trim().startsWith('TASK:')) - .map(line => line.replace('TASK:', '').trim()) - .filter(task => task.length > 0); + .filter((line) => line.trim().startsWith('TASK:')) + .map((line) => line.replace('TASK:', '').trim()) + .filter((task) => task.length > 0); if (taskLines.length === 0) { // Fallback: if no tasks found, use the original query taskLines.push(state.query); } - console.log(`Task breakdown completed: ${taskLines.length} tasks identified`); + console.log( + `Task breakdown completed: ${taskLines.length} tasks identified`, + ); taskLines.forEach((task, index) => { console.log(`Task ${index + 1}: ${task}`); }); @@ -152,9 +153,10 @@ export class TaskManagerAgent { }, }); - const responseMessage = taskLines.length === 1 - ? 'Question is already focused and ready for processing' - : `Question broken down into ${taskLines.length} focused tasks for parallel processing`; + const responseMessage = + taskLines.length === 1 + ? 'Question is already focused and ready for processing' + : `Question broken down into ${taskLines.length} focused tasks for parallel processing`; return new Command({ goto: 'web_search', // Next step would typically be web search for each task diff --git a/src/lib/agents/webSearchAgent.ts b/src/lib/agents/webSearchAgent.ts index cc66dc3..f562da5 100644 --- a/src/lib/agents/webSearchAgent.ts +++ b/src/lib/agents/webSearchAgent.ts @@ -44,11 +44,14 @@ export class WebSearchAgent { setTemperature(this.llm, 0); // Set temperature to 0 for deterministic output // Determine current task to process - const currentTask = state.tasks && state.tasks.length > 0 - ? state.tasks[state.currentTaskIndex || 0] - : state.query; + const currentTask = + state.tasks && state.tasks.length > 0 + ? state.tasks[state.currentTaskIndex || 0] + : state.query; - console.log(`Processing task ${(state.currentTaskIndex || 0) + 1} of ${state.tasks?.length || 1}: "${currentTask}"`); + console.log( + `Processing task ${(state.currentTaskIndex || 0) + 1} of ${state.tasks?.length || 1}: "${currentTask}"`, + ); // Emit preparing web search event this.emitter.emit('agent_action', { diff --git a/src/lib/utils/contentUtils.ts b/src/lib/utils/contentUtils.ts index 480f38c..4117004 100644 --- a/src/lib/utils/contentUtils.ts +++ b/src/lib/utils/contentUtils.ts @@ -1,8 +1,8 @@ -import { - BaseMessage, - AIMessage, - HumanMessage, - SystemMessage +import { + BaseMessage, + AIMessage, + HumanMessage, + SystemMessage, } from '@langchain/core/messages'; /** @@ -21,15 +21,17 @@ export const removeThinkingBlocks = (text: string): string => { * @param messages Array of BaseMessage objects * @returns New array with thinking blocks removed from each message's content */ -export const removeThinkingBlocksFromMessages = (messages: BaseMessage[]): BaseMessage[] => { - return messages.map(message => { +export const removeThinkingBlocksFromMessages = ( + messages: BaseMessage[], +): BaseMessage[] => { + return messages.map((message) => { // Only process string content, leave complex content as-is if (typeof message.content !== 'string') { return message; } const cleanedContent = removeThinkingBlocks(message.content); - + // Create new instance of the same message type with cleaned content if (message instanceof AIMessage) { return new AIMessage(cleanedContent); @@ -43,4 +45,4 @@ export const removeThinkingBlocksFromMessages = (messages: BaseMessage[]): BaseM return message; } }); -}; \ No newline at end of file +};