UNPKG

n8n-nodes-ragdoll-ai

Version:

n8n node to integrate with Ragdoll AI Knowledge Management API

986 lines 38.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RagdollAi = void 0; class RagdollAi { constructor() { this.description = { displayName: 'Ragdoll AI', name: 'ragdollAi', icon: 'file:ragdoll-ai.svg', group: ['output'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Ragdoll AI API', defaults: { name: 'Ragdoll AI', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'ragdollApi', required: true, }, ], requestDefaults: { baseURL: '={{$credentials.url}}', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, }, properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Knowledge Base', value: 'knowledgeBase', }, { name: 'Data Source', value: 'dataSource', }, { name: 'Document', value: 'document', }, ], default: 'knowledgeBase', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['knowledgeBase'], }, }, options: [ { name: 'Chat', value: 'chat', action: 'Chat with a knowledge base', description: 'Chat with a knowledge base', routing: { request: { method: 'POST', url: '/v1/knowledge-bases/{{$parameter.knowledgeBaseId}}/chat', }, }, }, { name: 'Create', value: 'create', action: 'Create a knowledge base', description: 'Creates a new knowledge base', routing: { request: { method: 'POST', url: '/v1/knowledge-bases/', }, }, }, { name: 'Delete', value: 'delete', action: 'Delete a knowledge base', description: 'Delete a knowledge base by ID', routing: { request: { method: 'DELETE', url: '/v1/knowledge-bases/{{$parameter.knowledgeBaseId}}', }, }, }, { name: 'Get', value: 'get', action: 'Get a knowledge base', description: 'Get a knowledge base by ID', routing: { request: { method: 'GET', url: '/v1/knowledge-bases/{{$parameter.knowledgeBaseId}}', }, }, }, { name: 'Get Many', value: 'getMany', action: 'Get many knowledge bases', description: 'Get many knowledge bases', routing: { request: { method: 'GET', url: '/v1/knowledge-bases/', }, }, }, { name: 'Query', value: 'query', action: 'Query a knowledge base', description: 'Query a knowledge base', routing: { request: { method: 'POST', url: '/v1/knowledge-bases/{{$parameter.knowledgeBaseId}}/query', }, }, }, { name: 'Update', value: 'update', action: 'Update a knowledge base', description: 'Update a knowledge base', routing: { request: { method: 'PUT', url: '/v1/knowledge-bases/{{$parameter.knowledgeBaseId}}', }, }, }, ], default: 'create', }, { displayName: 'Name', name: 'name', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['create'], }, }, description: 'Name of the knowledge base', routing: { send: { type: 'body', property: 'name', }, }, }, { displayName: 'Type', name: 'type', type: 'options', options: [ { name: 'Light RAG', value: 'lightrag', }, { name: 'Vector', value: 'vector', }, ], default: 'lightrag', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['create'], }, }, description: 'Type of the knowledge base', routing: { send: { type: 'body', property: 'type', }, }, }, { displayName: 'Knowledge Base ID', name: 'knowledgeBaseId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['get', 'delete'], }, }, description: 'ID of the knowledge base', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['dataSource'], }, }, options: [ { name: 'Create', value: 'create', description: 'Create a data source', action: 'Create a data source', routing: { request: { method: 'POST', url: '/v1/data-sources/', }, }, }, { name: 'Delete', value: 'delete', description: 'Delete a data source', action: 'Delete a data source', routing: { request: { method: 'DELETE', url: '/v1/data-sources/{{$parameter.dataSourceId}}', }, }, }, { name: 'Get', value: 'get', description: 'Get a data source', action: 'Get a data source', routing: { request: { method: 'GET', url: '/v1/data-sources/{{$parameter.dataSourceId}}', }, }, }, { name: 'Get Many', value: 'getAll', description: 'Get many data sources', action: 'Get many data sources', routing: { request: { method: 'GET', url: '/v1/data-sources/', }, }, }, { name: 'Start Indexing', value: 'startIndexing', description: 'Start indexing a data source', action: 'Start indexing a data source', routing: { request: { method: 'POST', url: '/v1/data-sources/{{$parameter.dataSourceId}}/indexing', }, }, }, ], default: 'create', }, { displayName: 'Knowledge Base ID', name: 'knowledgeBaseId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], }, }, description: 'ID of the knowledge base to add data source to', routing: { send: { type: 'body', property: 'knowledgeBaseId', }, }, }, { displayName: 'Name', name: 'name', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], }, }, description: 'Name of the data source', routing: { send: { type: 'body', property: 'name', }, }, }, { displayName: 'Type', name: 'type', type: 'options', options: [ { name: 'Web', value: 'web', }, { name: 'Notion', value: 'notion', }, { name: 'Google Drive', value: 'googleDrive', }, ], default: 'web', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], }, }, description: 'Type of the data source', routing: { send: { type: 'body', property: 'type', }, }, }, { displayName: 'URL', name: 'url', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], type: ['web'], }, }, description: 'URL of the web page to index', routing: { send: { type: 'body', property: 'params.url', }, }, }, { displayName: 'Max Depth', name: 'maxDepth', type: 'number', typeOptions: { minValue: 0, maxValue: 3, }, default: 1, displayOptions: { show: { resource: ['dataSource'], operation: ['create'], type: ['web'], }, }, description: 'Maximum depth to crawl', routing: { send: { type: 'body', property: 'params.maxDepth', }, }, }, { displayName: 'Notion ID', name: 'notionId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], type: ['notion'], }, }, description: 'ID of the Notion page or database', routing: { send: { type: 'body', property: 'params.id', }, }, }, { displayName: 'Notion Token', name: 'notionToken', type: 'string', typeOptions: { password: true, }, required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], type: ['notion'], }, }, description: 'Integration token for Notion', routing: { send: { type: 'body', property: 'params.token', }, }, }, { displayName: 'Google Drive ID', name: 'driveId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], type: ['googleDrive'], }, }, description: 'ID of the Google Drive folder or document', routing: { send: { type: 'body', property: 'params.id', }, }, }, { displayName: 'Google Drive Credentials JSON', name: 'driveCredentialsJson', type: 'string', typeOptions: { password: true, }, required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['create'], type: ['googleDrive'], }, }, description: 'JSON credentials for Google Drive', routing: { send: { type: 'body', property: 'params.credentialsJson', }, }, }, { displayName: 'Data Source ID', name: 'dataSourceId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['dataSource'], operation: ['get', 'delete', 'startIndexing'], }, }, description: 'ID of the data source', }, { displayName: 'Chunk Size', name: 'chunkSize', type: 'number', default: 1000, displayOptions: { show: { resource: ['dataSource'], operation: ['startIndexing'], }, }, description: 'Size of text chunks to create', routing: { send: { type: 'body', property: 'config.textChunking.chunkSize', value: '={{ $value }}', }, }, }, { displayName: 'Chunk Overlap', name: 'chunkOverlap', type: 'number', default: 200, displayOptions: { show: { resource: ['dataSource'], operation: ['startIndexing'], }, }, description: 'Overlap between text chunks', routing: { send: { type: 'body', property: 'config.textChunking.chunkOverlap', value: '={{ $value }}', }, }, }, { displayName: 'Chunking Type', name: 'chunkingType', type: 'hidden', default: 'fixedSize', displayOptions: { show: { resource: ['dataSource'], operation: ['startIndexing'], }, }, routing: { send: { type: 'body', property: 'config.textChunking.type', value: 'fixedSize', }, }, }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['document'], }, }, options: [ { name: 'Create', value: 'create', action: 'Create a document', description: 'Create a new document', routing: { request: { method: 'POST', url: '/v1/documents/', }, }, }, { name: 'Get', value: 'get', action: 'Get a document', description: 'Get a document by ID', routing: { request: { method: 'GET', url: '/v1/documents/{{$parameter.documentId}}', }, }, }, { name: 'Get Many', value: 'getMany', action: 'Get many documents', description: 'Get many documents', routing: { request: { method: 'GET', url: '/v1/documents/', }, }, }, { name: 'Delete', value: 'delete', action: 'Delete a document', description: 'Delete a document', routing: { request: { method: 'DELETE', url: '/v1/documents/{{$parameter.documentId}}', }, }, }, ], default: 'create', }, { displayName: 'Knowledge Base ID', name: 'knowledgeBaseId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['update', 'query', 'chat'], }, }, description: 'ID of the knowledge base to update', }, { displayName: 'Name', name: 'name', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['update'], }, }, description: 'New name for the knowledge base', routing: { send: { type: 'body', property: 'name', }, }, }, { displayName: 'Query', name: 'query', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['query'], }, }, description: 'Query to search in the knowledge base', routing: { send: { type: 'body', property: 'query', }, }, }, { displayName: 'Number of Results', name: 'topK', type: 'number', default: 3, displayOptions: { show: { resource: ['knowledgeBase'], operation: ['query'], }, }, description: 'Number of results to return', routing: { send: { type: 'body', property: 'topK', }, }, }, { displayName: 'Message', name: 'message', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['chat'], }, }, description: 'Message to send to the chat', routing: { send: { type: 'body', property: 'message', }, }, }, { displayName: 'Chat History', name: 'chatHistory', type: 'fixedCollection', typeOptions: { multipleValues: true, }, default: {}, displayOptions: { show: { resource: ['knowledgeBase'], operation: ['chat'], }, }, options: [ { name: 'historyValues', displayName: 'History', values: [ { displayName: 'Role', name: 'role', type: 'options', options: [ { name: 'User', value: 'user', }, { name: 'Assistant', value: 'assistant', }, { name: 'System', value: 'system', }, ], default: 'user', }, { displayName: 'Content', name: 'content', type: 'string', default: '', }, ], }, ], description: 'Chat history for context', routing: { send: { type: 'body', property: 'chatHistory', value: '={{ $parameter.chatHistory.historyValues }}', }, }, }, { displayName: 'Top K', name: 'topK', type: 'number', default: 3, displayOptions: { show: { resource: ['knowledgeBase'], operation: ['chat'], }, }, description: 'Number of documents to retrieve for context', routing: { send: { type: 'body', property: 'topK', }, }, }, { displayName: 'System Prompt', name: 'systemPrompt', type: 'string', typeOptions: { rows: 4, }, default: '', displayOptions: { show: { resource: ['knowledgeBase'], operation: ['chat'], }, }, description: 'System prompt for the chat', routing: { send: { type: 'body', property: 'systemPrompt', }, }, }, { displayName: 'Knowledge Base ID', name: 'knowledgeBaseId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['document'], operation: ['create'], }, }, description: 'ID of the knowledge base to add document to', routing: { send: { type: 'body', property: 'knowledgeBaseId', }, }, }, { displayName: 'Content', name: 'content', type: 'string', typeOptions: { rows: 4, }, required: true, default: '', displayOptions: { show: { resource: ['document'], operation: ['create'], }, }, description: 'Content of the document', routing: { send: { type: 'body', property: 'content', }, }, }, { displayName: 'Metadata', name: 'metadata', type: 'json', default: '{}', displayOptions: { show: { resource: ['document'], operation: ['create'], }, }, description: 'Metadata for the document', routing: { send: { type: 'body', property: 'metadata', }, }, }, { displayName: 'Chunking Config', name: 'chunkingConfig', type: 'collection', default: {}, displayOptions: { show: { resource: ['document'], operation: ['create'], }, }, options: [ { displayName: 'Chunk Size', name: 'chunkSize', type: 'number', default: 1000, description: 'Size of text chunks to create', }, { displayName: 'Chunk Overlap', name: 'chunkOverlap', type: 'number', default: 200, description: 'Overlap between text chunks', }, { displayName: 'Type', name: 'type', type: 'options', options: [ { name: 'Fixed Size', value: 'fixedSize', }, { name: 'Paragraph', value: 'paragraph', }, ], default: 'fixedSize', description: 'Type of chunking to use', }, ], description: 'Configuration for chunking the document', routing: { send: { type: 'body', property: 'chunkingConfig', value: '={{ $parameter.chunkingConfig.chunkSize ? { type: $parameter.chunkingConfig.type || "fixedSize", chunkSize: $parameter.chunkingConfig.chunkSize, chunkOverlap: $parameter.chunkingConfig.chunkOverlap || 200 } : undefined }}', }, }, }, { displayName: 'Document ID', name: 'documentId', type: 'string', required: true, default: '', displayOptions: { show: { resource: ['document'], operation: ['get', 'delete'], }, }, description: 'ID of the document', }, { displayName: 'Filters', name: 'filters', type: 'collection', default: {}, displayOptions: { show: { resource: ['document'], operation: ['getMany'], }, }, options: [ { displayName: 'Knowledge Base ID', name: 'knowledgeBaseId', type: 'string', default: '', description: 'Filter documents by knowledge base ID', routing: { request: { qs: { knowledgeBaseId: '={{ $value }}', }, }, }, }, ], description: 'Filters for listing documents', }, ], }; } } exports.RagdollAi = RagdollAi; //# sourceMappingURL=RagdollAi.node.js.map