@kaia-team/n8n-nodes-kaia
Version:
n8n nodes for Kaia LLM integration
168 lines • 5.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.widgetApiProperties = void 0;
exports.handleWidgetApi = handleWidgetApi;
const n8n_workflow_1 = require("n8n-workflow");
const utils_1 = require("../utils");
/**
* Widget API Properties
* Properties specific to the widget API resource
*/
exports.widgetApiProperties = [
{
displayName: 'Widget Operation',
name: 'widgetOperation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['widget'],
},
},
options: [
{
name: 'Get Chat History',
value: 'getChatHistory',
description: 'Get chat history for a user',
},
{
name: 'Send Message',
value: 'sendMessage',
description: 'Send a message to the headless widget',
},
],
default: 'sendMessage',
},
{
displayName: 'Webhook URL',
name: 'webhookUrl',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['widget'],
},
},
description: 'The webhook URL for the widget operation',
required: true,
},
{
displayName: 'User ID',
name: 'userId',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['widget'],
},
},
description: 'The user ID for the widget operation',
required: true,
},
{
displayName: 'Message',
name: 'message',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['widget'],
widgetOperation: ['sendMessage'],
},
},
description: 'The message to send',
required: true,
},
{
displayName: 'Files',
name: 'files',
type: 'fixedCollection',
typeOptions: {
multipleValues: true,
},
displayOptions: {
show: {
resource: ['widget'],
widgetOperation: ['sendMessage'],
},
},
placeholder: 'Add File',
default: {},
options: [
{
name: 'fileParameters',
displayName: 'Files',
values: [
{
displayName: 'File Name',
name: 'fileName',
type: 'string',
default: '',
description: 'Name of the file',
},
{
displayName: 'Binary File',
name: 'binaryData',
type: 'boolean',
default: true,
description: 'Whether the file content should be taken from binary field',
},
{
displayName: 'Binary Property',
name: 'binaryPropertyName',
type: 'string',
default: 'data',
displayOptions: {
show: {
binaryData: [true],
},
},
description: 'Name of the binary property containing the file data',
},
],
},
],
},
];
/**
* Widget API Handler
* Handles requests to the widget API
*/
async function handleWidgetApi(executeFunctions, itemIndex, adminUrl, adminToken, clientId) {
const operation = executeFunctions.getNodeParameter('widgetOperation', itemIndex);
const webhookUrl = executeFunctions.getNodeParameter('webhookUrl', itemIndex);
const userId = executeFunctions.getNodeParameter('userId', itemIndex);
const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {});
if (operation === 'sendMessage') {
const message = executeFunctions.getNodeParameter('message', itemIndex);
const files = executeFunctions.getNodeParameter('files', itemIndex, {});
const payload = {
user: userId,
message,
};
if (files.fileParameters) {
payload.files = files.fileParameters.map((file) => ({
name: file.fileName,
content: file.fileContent,
}));
}
const headers = (0, utils_1.createHeaders)(adminToken, additionalFields);
const response = await executeFunctions.helpers.httpRequest({
method: 'POST',
url: webhookUrl,
body: payload,
headers,
});
return response;
}
else if (operation === 'getChatHistory') {
// This would require a different endpoint or approach
// For now, we'll return a placeholder
return {
message: 'Chat history retrieval not yet implemented',
userId,
};
}
throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown widget operation: ${operation}`);
}
//# sourceMappingURL=widgetApi.js.map