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
+};