@kaia-team/n8n-nodes-kaia
Version:
n8n nodes for Kaia LLM integration
296 lines • 9.76 kB
JavaScript
;
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