UNPKG

@kaia-team/n8n-nodes-kaia

Version:
296 lines 9.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.vecDbsApiProperties = void 0; exports.handleVecDbsApi = handleVecDbsApi; const n8n_workflow_1 = require("n8n-workflow"); const utils_1 = require("../utils"); /** * Vec DBs API Properties * Properties specific to the vecDbs API resource (vector databases) */ exports.vecDbsApiProperties = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['vecDbs'], }, }, options: [ { name: 'Attached Models', value: 'attachedModels', action: 'Get attached models', }, { name: 'Cleanup Databases', value: 'verifyEmpty', action: 'Find empty databases and delete them in the background', }, { name: 'Create', value: 'create', action: 'Create a vector database', }, { name: 'Delete', value: 'delete', action: 'Delete a vector database', }, { name: 'List', value: 'list', action: 'List vector databases', }, { name: 'Load Attachments', value: 'loadAttachments', action: 'Load attachments', }, { name: 'Query', value: 'query', action: 'Query vector database', }, { name: 'Read', value: 'read', action: 'Read a vector database', }, { name: 'Shard Index', value: 'shardIndex', action: 'Get shard index', }, { name: 'Update', value: 'update', action: 'Update a vector database', }, ], default: 'list', }, { displayName: 'Vec DB ID', name: 'vecDbId', type: 'string', default: '', displayOptions: { show: { resource: ['vecDbs'], operation: ['read', 'update', 'delete', 'shardIndex', 'attachedModels', 'query'], }, }, description: 'The ID of the vector database', required: true, }, { displayName: 'Name', name: 'name', type: 'string', default: '', displayOptions: { show: { resource: ['vecDbs'], operation: ['create', 'update'], }, }, description: 'Name of the vector database', }, { displayName: 'Query', name: 'query', type: 'string', typeOptions: { rows: 3 }, default: '', displayOptions: { show: { resource: ['vecDbs'], operation: ['query'], }, }, description: 'Query for the vector database', }, { displayName: 'Limit', name: 'limit', type: 'number', typeOptions: { minValue: 1, }, default: 50, displayOptions: { show: { resource: ['vecDbs'], operation: ['query'], }, }, description: 'Max number of results to return', }, { displayName: 'Page', name: 'page', type: 'number', typeOptions: { minValue: 1, }, default: 1, displayOptions: { show: { resource: ['vecDbs'], operation: ['shardIndex'], }, }, description: 'Page number for pagination', }, { displayName: 'Per Page', name: 'perPage', type: 'number', typeOptions: { minValue: 1, }, default: 100, displayOptions: { show: { resource: ['vecDbs'], operation: ['shardIndex'], }, }, description: 'Number of items per page', }, ]; /** * Vec DBs API Handler * Handles requests to the vecDbs API (vector databases) */ async function handleVecDbsApi(executeFunctions, itemIndex, adminUrl, adminToken) { const operation = executeFunctions.getNodeParameter('operation', itemIndex); const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {}); const headers = (0, utils_1.createHeaders)(adminToken, additionalFields); if (operation === 'list') { const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/vec_dbs.json`, headers, }); return executeFunctions.helpers.returnJsonArray(response); } else if (operation === 'read') { let vecDbId = executeFunctions.getNodeParameter('vecDbId', itemIndex); vecDbId = (0, utils_1.extractIdFromUrlOrId)(vecDbId, 'vec_dbs'); const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/vec_dbs/${vecDbId}.json`, headers, }); return response; } else if (operation === 'create' || operation === 'update') { const payload = { vec_db: {} }; const addIfSet = (key, param, defaultVal = '') => { const val = executeFunctions.getNodeParameter(param, itemIndex, defaultVal); if (val !== defaultVal && (typeof val !== 'string' || val.trim() !== '')) { payload.vec_db[key] = val; } }; addIfSet('name', 'name'); addIfSet('query', 'query'); addIfSet('limit', 'limit', 10); const method = operation === 'create' ? 'post' : 'patch'; let url; if (operation === 'create') { url = `${adminUrl}/vec_dbs.json`; } else { let vecDbId = executeFunctions.getNodeParameter('vecDbId', itemIndex); vecDbId = (0, utils_1.extractIdFromUrlOrId)(vecDbId, 'vec_dbs'); url = `${adminUrl}/vec_dbs/${vecDbId}.json`; } const response = await executeFunctions.helpers.httpRequest({ method: method.toUpperCase(), url, body: payload, headers, }); return response; } else if (operation === 'delete') { let vecDbId = executeFunctions.getNodeParameter('vecDbId', itemIndex); vecDbId = (0, utils_1.extractIdFromUrlOrId)(vecDbId, 'vec_dbs'); const response = await executeFunctions.helpers.httpRequest({ method: 'DELETE', url: `${adminUrl}/vec_dbs/${vecDbId}.json`, headers, }); return { success: true, deletedId: vecDbId }; } else if (operation === 'shardIndex') { let vecDbId = executeFunctions.getNodeParameter('vecDbId', itemIndex); vecDbId = (0, utils_1.extractIdFromUrlOrId)(vecDbId, 'vec_dbs'); const qs = {}; const page = executeFunctions.getNodeParameter('page', itemIndex, 1); if (page) qs.page = page; const perPage = executeFunctions.getNodeParameter('perPage', itemIndex, 100); if (perPage) qs.per_page = perPage; const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/vec_dbs/${vecDbId}/shard_index.json`, headers, qs, }); return executeFunctions.helpers.returnJsonArray(response); } else if (operation === 'loadAttachments') { const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: `${adminUrl}/vec_dbs/load_attachments.json`, headers, }); return executeFunctions.helpers.returnJsonArray(response); } else if (operation === 'verifyEmpty') { const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: `${adminUrl}/vec_dbs/verify_empty.json`, headers, }); return response; } else if (operation === 'attachedModels') { let vecDbId = executeFunctions.getNodeParameter('vecDbId', itemIndex); vecDbId = (0, utils_1.extractIdFromUrlOrId)(vecDbId, 'vec_dbs'); const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/vec_dbs/${vecDbId}/attached_models.json`, headers, }); return response; } else if (operation === 'query') { let vecDbId = executeFunctions.getNodeParameter('vecDbId', itemIndex); vecDbId = (0, utils_1.extractIdFromUrlOrId)(vecDbId, 'vec_dbs'); const query = executeFunctions.getNodeParameter('query', itemIndex); const limit = executeFunctions.getNodeParameter('limit', itemIndex); const payload = { query: { query, limit, }, }; const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: `${adminUrl}/vec_dbs/${vecDbId}/query.json`, body: payload, headers, }); return response; } throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown vector databases operation: ${operation}`); } //# sourceMappingURL=vecDbsApi.js.map