n8n
Version:
n8n Workflow Automation Tool
59 lines • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProviderPrefix = getProviderPrefix;
exports.hasNativeWebSearchProvider = hasNativeWebSearchProvider;
exports.isNativeWebSearchRequested = isNativeWebSearchRequested;
exports.getNativeWebSearchProviderTools = getNativeWebSearchProviderTools;
const api_types_1 = require("@n8n/api-types");
function getProviderPrefix(modelId) {
const slashIdx = modelId.indexOf('/');
return slashIdx !== -1 ? modelId.slice(0, slashIdx) : '';
}
function isNativeWebSearchProvider(provider) {
return provider in api_types_1.NATIVE_WEB_SEARCH_TOOL_BY_PROVIDER;
}
function hasNativeWebSearchProvider(modelId) {
return isNativeWebSearchProvider(getProviderPrefix(modelId));
}
function isNativeWebSearchRequested(config) {
const webSearch = config.config?.webSearch;
return (webSearch?.provider === undefined ||
webSearch.provider === 'auto' ||
webSearch.provider === 'native');
}
function getNativeWebSearchProviderTools(config, options) {
const providerTools = { ...(config.providerTools ?? {}) };
const providerPrefix = getProviderPrefix(config.model);
const nativeWebSearch = isNativeWebSearchProvider(providerPrefix)
? api_types_1.NATIVE_WEB_SEARCH_DEFAULTS_BY_PROVIDER[providerPrefix]
: undefined;
const explicitDisabled = config.config?.webSearch?.enabled === false;
const isEnabled = !!nativeWebSearch &&
isNativeWebSearchRequested(config) &&
!explicitDisabled &&
(options.defaultEnabled === true || config.config?.webSearch?.enabled === true);
for (const key of api_types_1.NATIVE_WEB_SEARCH_PROVIDER_TOOLS) {
const toolProvider = api_types_1.NATIVE_WEB_SEARCH_PROVIDER_BY_TOOL[key];
if (!isEnabled || toolProvider !== providerPrefix) {
delete providerTools[key];
}
}
if (isEnabled) {
const hasProviderWebSearchTool = Object.entries(api_types_1.NATIVE_WEB_SEARCH_PROVIDER_BY_TOOL).some(([toolName, toolProvider]) => toolProvider === providerPrefix && toolName in providerTools);
if (!hasProviderWebSearchTool) {
providerTools[nativeWebSearch.toolName] = {};
}
if (options.includeDefaultArgs) {
for (const [toolName, toolProvider] of Object.entries(api_types_1.NATIVE_WEB_SEARCH_PROVIDER_BY_TOOL)) {
if (toolProvider === providerPrefix && toolName in providerTools) {
providerTools[toolName] = {
...nativeWebSearch.args,
...providerTools[toolName],
};
}
}
}
}
return providerTools;
}
//# sourceMappingURL=native-web-search-provider-tools.js.map