UNPKG

@websolutespa/payload-plugin-bowl-llm

Version:

LLM plugin for Bowl PayloadCms plugin

240 lines (239 loc) 8.34 kB
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