feat(actions-registry): add sources, update web search to become active on web

This commit is contained in:
ItzCrazyKns
2025-12-15 23:49:11 +05:30
parent 9b2c229e9c
commit 249889f55a
4 changed files with 8 additions and 0 deletions

View File

@@ -5,6 +5,7 @@ import {
ClassifierOutput, ClassifierOutput,
ResearchAction, ResearchAction,
SearchAgentConfig, SearchAgentConfig,
SearchSources,
} from '../../types'; } from '../../types';
class ActionRegistry { class ActionRegistry {
@@ -22,6 +23,7 @@ class ActionRegistry {
classification: ClassifierOutput; classification: ClassifierOutput;
fileIds: string[]; fileIds: string[];
mode: SearchAgentConfig['mode']; mode: SearchAgentConfig['mode'];
sources: SearchSources[];
}): ResearchAction[] { }): ResearchAction[] {
return Array.from( return Array.from(
this.actions.values().filter((action) => action.enabled(config)), this.actions.values().filter((action) => action.enabled(config)),
@@ -32,6 +34,7 @@ class ActionRegistry {
classification: ClassifierOutput; classification: ClassifierOutput;
fileIds: string[]; fileIds: string[];
mode: SearchAgentConfig['mode']; mode: SearchAgentConfig['mode'];
sources: SearchSources[];
}): Tool[] { }): Tool[] {
const availableActions = this.getAvailableActions(config); const availableActions = this.getAvailableActions(config);
@@ -46,6 +49,7 @@ class ActionRegistry {
classification: ClassifierOutput; classification: ClassifierOutput;
fileIds: string[]; fileIds: string[];
mode: SearchAgentConfig['mode']; mode: SearchAgentConfig['mode'];
sources: SearchSources[];
}): string { }): string {
const availableActions = this.getAvailableActions(config); const availableActions = this.getAvailableActions(config);

View File

@@ -82,6 +82,7 @@ const webSearchAction: ResearchAction<typeof actionSchema> = {
return prompt; return prompt;
}, },
enabled: (config) => enabled: (config) =>
config.sources.includes('web') &&
config.classification.classification.skipSearch === false, config.classification.classification.skipSearch === false,
execute: async (input, additionalConfig) => { execute: async (input, additionalConfig) => {
input.queries = input.queries.slice(0, 3); input.queries = input.queries.slice(0, 3);

View File

@@ -23,6 +23,7 @@ class Researcher {
classification: input.classification, classification: input.classification,
fileIds: input.config.fileIds, fileIds: input.config.fileIds,
mode: input.config.mode, mode: input.config.mode,
sources: input.config.sources,
}); });
const availableActionsDescription = const availableActionsDescription =
@@ -30,6 +31,7 @@ class Researcher {
classification: input.classification, classification: input.classification,
fileIds: input.config.fileIds, fileIds: input.config.fileIds,
mode: input.config.mode, mode: input.config.mode,
sources: input.config.sources,
}); });
const researchBlockId = crypto.randomUUID(); const researchBlockId = crypto.randomUUID();

View File

@@ -107,6 +107,7 @@ export interface ResearchAction<
classification: ClassifierOutput; classification: ClassifierOutput;
fileIds: string[]; fileIds: string[];
mode: SearchAgentConfig['mode']; mode: SearchAgentConfig['mode'];
sources: SearchSources[];
}) => boolean; }) => boolean;
execute: ( execute: (
params: z.infer<TSchema>, params: z.infer<TSchema>,