@websolutespa/payload-plugin-bowl-llm
Version:
LLM plugin for Bowl PayloadCms plugin
240 lines (239 loc) • 8.34 kB
JavaScript
import { deepMerge } from '@websolutespa/payload-utils';
import { llmAppsHandler } from './api/app.handler';
import { appToolsHandler } from './api/appTools.handler';
import { bulkKbUploadHandler } from './api/bulkKbUpload.handler';
import { endpointPostProcessorsHandler } from './api/endpointPostProcessors.handler';
import { feedbackHandler } from './api/feedback.handler';
import { fineTuningHandler } from './api/fineTuning.handler';
import { historyAddHandler, historyHandler, historyRemoveHandler } from './api/history.handler';
import { infoHandler } from './api/info.handler';
import { invokeHandler } from './api/invoke.handler';
import { kbEndpointHandler, kbPollEndpointHandler } from './api/knowledgeBase.handler';
import { llmKbWebhookHandler } from './api/llmKbWebhook.handler';
import { llmModelsHandler } from './api/llmModels.handler';
import { llmProvidersHandler } from './api/llmProviders.handler';
import { llmToolsHandler } from './api/llmTools.handler';
import { mcpHandler } from './api/mcp.server';
import { messageHandler } from './api/message.handler';
import { previewEndpointHandler } from './api/preview.handler';
import { rulesEndpointHandler } from './api/rules.handler';
import { summaryHandler } from './api/summary.handler';
import { vectorDbTypesHandler } from './api/vectorDb.handler';
import { LlmApp } from './collections/LlmApp';
import { LlmFineTuning } from './collections/LlmFineTuning';
import { LlmHistory } from './collections/LlmHistory';
import { LlmKbFile } from './collections/LlmKbFile';
import { LlmPrompt } from './collections/LlmPrompt';
import { LlmRule } from './collections/LlmRule';
import { LlmThread } from './collections/LlmThread';
import { LlmTool } from './collections/LlmTool';
import { LlmUserUpload } from './collections/LlmUserUpload';
import { LlmVectorDb } from './collections/LlmVectorDb';
import { options } from './options';
export const llm = (sourceOptions = {})=>(sourceConfig, bowlOptions)=>{
if (sourceOptions.enabled === false) {
return sourceConfig;
}
if (sourceOptions.group) {
options.group = Object.assign(options.group, sourceOptions.group);
}
if (sourceOptions.slug) {
options.slug = Object.assign(options.slug, sourceOptions.slug);
}
if (sourceConfig.i18n && sourceConfig.i18n.translations) {
options.translations = deepMerge(options.translations, sourceConfig.i18n.translations);
}
// add 'llm_editor' role to the list of roles
bowlOptions.roles = {
...bowlOptions.roles,
...options.roles
};
bowlOptions.rolesUser?.push(options.roles.LlmEditor);
bowlOptions.rolesUser?.push(options.roles.LlmContributor);
const collections = [
LlmApp,
LlmTool,
LlmKbFile,
LlmPrompt,
LlmRule,
LlmFineTuning,
LlmThread,
LlmHistory,
LlmUserUpload,
LlmVectorDb
];
const globals = [];
const views = {
LlmTest: {
path: '/llm-test',
exact: true,
Component: '@websolutespa/payload-plugin-bowl-llm/rsc#LlmTest'
},
LlmLinks: {
path: '/llm-links',
exact: true,
Component: '@websolutespa/payload-plugin-bowl-llm/rsc#LlmLinks'
}
};
const endpoints = [
{
path: '/llm/info',
method: 'post',
handler: infoHandler
},
{
path: '/llm/message',
method: 'post',
handler: messageHandler
},
{
path: '/llm/feedback',
method: 'post',
handler: feedbackHandler
},
{
path: '/llm/history',
method: 'post',
handler: historyHandler
},
{
path: '/llm/historyAdd',
method: 'post',
handler: historyAddHandler
},
{
path: '/llm/historyRemove',
method: 'post',
handler: historyRemoveHandler
},
{
path: '/llm/invoke',
method: 'post',
handler: invokeHandler
},
{
path: '/llm/summary',
method: 'post',
handler: summaryHandler
},
{
path: '/llm/fine-tuning',
method: 'post',
handler: fineTuningHandler
},
{
path: '/llm/apps',
method: 'get',
handler: llmAppsHandler
},
{
path: '/llm/vector-db/types',
method: 'post',
handler: vectorDbTypesHandler
},
{
path: '/llm/providers',
method: 'post',
handler: llmProvidersHandler
},
{
path: '/llm/:provider/models',
method: 'post',
handler: llmModelsHandler
},
{
path: '/llm/tools',
method: 'get',
handler: llmToolsHandler
},
{
path: '/llm/kb/webhook',
method: 'post',
handler: llmKbWebhookHandler
},
{
path: '/llm/endpoint-post-processors',
method: 'get',
handler: endpointPostProcessorsHandler
},
{
path: '/llm/rules',
method: 'post',
handler: rulesEndpointHandler
},
{
path: '/llm/kb',
method: 'post',
handler: kbEndpointHandler
},
{
path: '/llm/kb/bulk-upload',
method: 'post',
handler: bulkKbUploadHandler
},
{
path: '/llm/kb/:traceId/poll',
method: 'get',
handler: kbPollEndpointHandler
},
{
path: '/llm/mcp',
method: 'post',
handler: mcpHandler
},
{
path: '/llm/:appKey/:locale',
method: 'get',
handler: previewEndpointHandler
},
{
path: '/llm/appTools',
method: 'get',
handler: appToolsHandler
}
];
const targetConfig = {
...sourceConfig,
admin: {
...sourceConfig.admin,
components: {
...sourceConfig.admin?.components,
afterNavLinks: [
...sourceConfig.admin?.components?.afterNavLinks || [],
'@websolutespa/payload-plugin-bowl-llm/client#AfterNavLinks'
],
views: {
...sourceConfig.admin?.components?.views || {},
...views
}
}
},
i18n: {
...sourceConfig.i18n,
translations: options.translations
},
collections: [
...sourceConfig.collections || [],
...collections
],
globals: [
...sourceConfig.globals || [],
...globals
],
endpoints: [
...sourceConfig.endpoints || [],
...endpoints
],
custom: {
llm: options
},
onInit: async (payload)=>{
if (typeof sourceConfig.onInit === 'function') {
await sourceConfig.onInit(payload);
}
console.log('@websolutespa/payload-plugin-bowl-llm.onInit');
}
};
return targetConfig;
};
//# sourceMappingURL=llm.js.map