n8n-nodes-simple 2.2.1 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nodes/shared/config/parameters.d.ts +1 -1
- package/dist/nodes/shared/config/properties/toolParameters.d.ts +2 -0
- package/dist/nodes/shared/config/properties/toolParameters.js +101 -0
- package/dist/nodes/shared/config/properties/toolParameters.js.map +1 -0
- package/dist/nodes/shared/core/execution/executor.js +6 -6
- package/dist/nodes/shared/core/execution/executor.js.map +1 -1
- package/dist/nodes/shared/core/execution/outputData.d.ts +5 -0
- package/dist/nodes/shared/core/execution/outputData.js +108 -0
- package/dist/nodes/shared/core/execution/outputData.js.map +1 -0
- package/dist/nodes/shared/core/memory/supplier.d.ts +2 -0
- package/dist/nodes/shared/core/memory/supplier.js +53 -0
- package/dist/nodes/shared/core/memory/supplier.js.map +1 -0
- package/dist/nodes/shared/core/messages/processor.js +10 -4
- package/dist/nodes/shared/core/messages/processor.js.map +1 -1
- package/dist/nodes/shared/core/output/processor.d.ts +5 -0
- package/dist/nodes/shared/core/output/processor.js +108 -0
- package/dist/nodes/shared/core/output/processor.js.map +1 -0
- package/dist/nodes/shared/core/request/body.d.ts +2 -0
- package/dist/nodes/shared/core/request/body.js +43 -0
- package/dist/nodes/shared/core/request/body.js.map +1 -0
- package/dist/nodes/shared/core/request/builder.d.ts +2 -0
- package/dist/nodes/shared/core/request/builder.js +43 -0
- package/dist/nodes/shared/core/request/builder.js.map +1 -0
- package/dist/nodes/shared/core/request/structuredOutput.d.ts +3 -0
- package/dist/nodes/shared/core/request/structuredOutput.js +26 -0
- package/dist/nodes/shared/core/request/structuredOutput.js.map +1 -0
- package/dist/nodes/shared/core/request/visualEditor.d.ts +32 -0
- package/dist/nodes/shared/core/request/visualEditor.js +70 -0
- package/dist/nodes/shared/core/request/visualEditor.js.map +1 -0
- package/dist/nodes/shared/core/response/config.d.ts +3 -0
- package/dist/nodes/shared/core/response/config.js +26 -0
- package/dist/nodes/shared/core/response/config.js.map +1 -0
- package/dist/nodes/shared/core/schema/visualEditor.d.ts +32 -0
- package/dist/nodes/shared/core/schema/visualEditor.js +70 -0
- package/dist/nodes/shared/core/schema/visualEditor.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
|
|
2
|
-
import { VisualEditorProperties } from '../
|
|
2
|
+
import { VisualEditorProperties } from '../core/request/visualEditor';
|
|
3
3
|
import { Message } from '../core/messages/types';
|
|
4
4
|
export type ExtractedParameters = {
|
|
5
5
|
model: string;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toolParametersProperties = void 0;
|
|
4
|
+
exports.toolParametersProperties = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Tool Parameters',
|
|
7
|
+
name: 'toolParameters',
|
|
8
|
+
type: 'fixedCollection',
|
|
9
|
+
typeOptions: {
|
|
10
|
+
multipleValues: true,
|
|
11
|
+
sortable: false,
|
|
12
|
+
},
|
|
13
|
+
displayOptions: {
|
|
14
|
+
show: {
|
|
15
|
+
agentType: ['subAgent'],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
description: 'Define parameters that the AI can request when using this tool. Use $fromAI() expressions for dynamic values.',
|
|
19
|
+
default: {},
|
|
20
|
+
options: [
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Parameters',
|
|
23
|
+
name: 'parameters',
|
|
24
|
+
values: [
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Parameter Name',
|
|
27
|
+
name: 'name',
|
|
28
|
+
type: 'string',
|
|
29
|
+
default: '',
|
|
30
|
+
placeholder: 'email',
|
|
31
|
+
description: 'Name of the parameter (e.g., email, name, count)',
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Description',
|
|
36
|
+
name: 'description',
|
|
37
|
+
type: 'string',
|
|
38
|
+
default: '',
|
|
39
|
+
placeholder: 'User email address',
|
|
40
|
+
description: 'Description of what this parameter represents',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
displayName: 'Type',
|
|
44
|
+
name: 'type',
|
|
45
|
+
type: 'options',
|
|
46
|
+
options: [
|
|
47
|
+
{
|
|
48
|
+
name: 'String',
|
|
49
|
+
value: 'string',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Number',
|
|
53
|
+
value: 'number',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'Boolean',
|
|
57
|
+
value: 'boolean',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'JSON',
|
|
61
|
+
value: 'json',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
default: 'string',
|
|
65
|
+
description: 'Data type for this parameter',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Required',
|
|
69
|
+
name: 'required',
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
default: true,
|
|
72
|
+
description: 'Whether this parameter is required',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
displayName: 'Default Value',
|
|
76
|
+
name: 'defaultValue',
|
|
77
|
+
type: 'string',
|
|
78
|
+
default: '',
|
|
79
|
+
placeholder: 'jane.doe@example.com',
|
|
80
|
+
description: 'Default value for this parameter (optional)',
|
|
81
|
+
displayOptions: {
|
|
82
|
+
show: {
|
|
83
|
+
required: [false],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
displayName: 'Value',
|
|
89
|
+
name: 'value',
|
|
90
|
+
type: 'string',
|
|
91
|
+
default: '',
|
|
92
|
+
placeholder: '{{ $fromAI("email", "User email address", "string") }}',
|
|
93
|
+
description: 'Value for this parameter. Use $fromAI() for AI-determined values.',
|
|
94
|
+
required: true,
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
//# sourceMappingURL=toolParameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolParameters.js","sourceRoot":"","sources":["../../../../../nodes/shared/config/properties/toolParameters.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAsB;IAC1D;QACC,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE;YACZ,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,KAAK;SACf;QACD,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,SAAS,EAAE,CAAC,UAAU,CAAC;aACvB;SACD;QACD,WAAW,EAAE,+GAA+G;QAC5H,OAAO,EAAE,EAAE;QACX,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE;oBACP;wBACC,WAAW,EAAE,gBAAgB;wBAC7B,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,EAAE;wBACX,WAAW,EAAE,OAAO;wBACpB,WAAW,EAAE,kDAAkD;wBAC/D,QAAQ,EAAE,IAAI;qBACd;oBACD;wBACC,WAAW,EAAE,aAAa;wBAC1B,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,EAAE;wBACX,WAAW,EAAE,oBAAoB;wBACjC,WAAW,EAAE,+CAA+C;qBAC5D;oBACD;wBACC,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,QAAQ;6BACf;4BACD;gCACC,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,QAAQ;6BACf;4BACD;gCACC,IAAI,EAAE,SAAS;gCACf,KAAK,EAAE,SAAS;6BAChB;4BACD;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,MAAM;6BACb;yBACD;wBACD,OAAO,EAAE,QAAQ;wBACjB,WAAW,EAAE,8BAA8B;qBAC3C;oBACD;wBACC,WAAW,EAAE,UAAU;wBACvB,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,oCAAoC;qBACjD;oBACD;wBACC,WAAW,EAAE,eAAe;wBAC5B,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,EAAE;wBACX,WAAW,EAAE,sBAAsB;wBACnC,WAAW,EAAE,6CAA6C;wBAC1D,cAAc,EAAE;4BACf,IAAI,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAK,CAAC;6BACjB;yBACL;qBACG;oBACD;wBACC,WAAW,EAAE,OAAO;wBACpB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,EAAE;wBACX,WAAW,EAAE,wDAAwD;wBACrE,WAAW,EAAE,mEAAmE;wBAChF,QAAQ,EAAE,IAAI;qBACd;iBACD;aACD;SACD;KACD;CACD,CAAC"}
|
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.hasEmptyContent = hasEmptyContent;
|
|
4
4
|
exports.executeWithFallback = executeWithFallback;
|
|
5
5
|
exports.executeSingleModel = executeSingleModel;
|
|
6
|
-
const
|
|
6
|
+
const structuredOutput_1 = require("../request/structuredOutput");
|
|
7
7
|
const setup_1 = require("../tools/setup");
|
|
8
|
-
const
|
|
8
|
+
const body_1 = require("../request/body");
|
|
9
9
|
const executor_1 = require("../tools/executor");
|
|
10
|
-
const
|
|
10
|
+
const outputData_1 = require("./outputData");
|
|
11
11
|
const io_1 = require("../memory/io");
|
|
12
12
|
function hasEmptyContent(response) {
|
|
13
13
|
var _a, _b, _c;
|
|
@@ -45,13 +45,13 @@ async function executeWithFallback(executeFunctions, params, memory, messages, i
|
|
|
45
45
|
}
|
|
46
46
|
async function executeSingleModel(executeFunctions, params, memory, messages, index, parentMessageContentStr, parentMessageContentObj, modelToUse) {
|
|
47
47
|
var _a, _b;
|
|
48
|
-
let response_format = (0,
|
|
48
|
+
let response_format = (0, structuredOutput_1.configureResponseFormat)(params.responseFormat, params.outputJsonSchemaDefinition, params.structuredOutputName, params.structuredOutputDescription, params.structuredOutputProperties, params.structuredOutputIsArray, params.structuredOutputArrayName, params.structuredOutputArrayDescription);
|
|
49
49
|
const { tools, invokableTools, tool_choice, structuredOutputTool, updatedResponseFormat } = await (0, setup_1.setupTools)(executeFunctions, params.structuredOutputToolsMode, response_format);
|
|
50
50
|
response_format = updatedResponseFormat;
|
|
51
|
-
const body = (0,
|
|
51
|
+
const body = (0, body_1.prepareRequestBody)(modelToUse, messages, tools, tool_choice, response_format, params.options, params.customParameters);
|
|
52
52
|
const originalMessagesLength = messages.length;
|
|
53
53
|
const { response, output } = await (0, executor_1.processToolCalls)(executeFunctions, body, messages, invokableTools, structuredOutputTool, params.maxToolsIterations, params.abortSignal);
|
|
54
|
-
const outputData = await (0,
|
|
54
|
+
const outputData = await (0, outputData_1.prepareOutputData)(response, output, messages, originalMessagesLength, params.addToOutput, params.agentType, executeFunctions, index, body, modelToUse, parentMessageContentStr);
|
|
55
55
|
if (memory && ((_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message)) {
|
|
56
56
|
const outputStringified = typeof output === 'string' ? output : JSON.stringify(output);
|
|
57
57
|
await (0, io_1.saveToMemory)(memory, messages, response, outputStringified, params.saveToolCallsInChatMemory, originalMessagesLength);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":";;AAcA,0CAGC;AAKD,kDA6EC;AAKD,gDAmFC;AAvLD,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
|
|
2
|
+
import type { ChatCompletion } from '../../api/types';
|
|
3
|
+
export declare function prepareOutputData(response: ChatCompletion, output: any, messages: IDataObject[], originalMessagesLength: number, addToOutput: string[], agentType: string, executeFunctions: IExecuteFunctions, index: number, body: IDataObject, model: string, parentMessageContentStr: string): Promise<INodeExecutionData[]>;
|
|
4
|
+
export declare function addModelOverview(executeFunctions: IExecuteFunctions, model: string, outputData: INodeExecutionData[]): Promise<void>;
|
|
5
|
+
export declare function reorderOutputFields(outputData: INodeExecutionData[]): void;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareOutputData = prepareOutputData;
|
|
4
|
+
exports.addModelOverview = addModelOverview;
|
|
5
|
+
exports.reorderOutputFields = reorderOutputFields;
|
|
6
|
+
const messageExtractor_1 = require("../tools/messageExtractor");
|
|
7
|
+
async function prepareOutputData(response, output, messages, originalMessagesLength, addToOutput, agentType, executeFunctions, index, body, model, parentMessageContentStr) {
|
|
8
|
+
const outputData = [];
|
|
9
|
+
if (agentType == 'subAgent' && parentMessageContentStr !== '') {
|
|
10
|
+
outputData.push({
|
|
11
|
+
json: { response: response },
|
|
12
|
+
pairedItem: { item: 0 },
|
|
13
|
+
});
|
|
14
|
+
return outputData;
|
|
15
|
+
}
|
|
16
|
+
if (body.response_format) {
|
|
17
|
+
response.choices = response.choices.map((choice) => {
|
|
18
|
+
try {
|
|
19
|
+
choice.message.content = JSON.parse(choice.message.content);
|
|
20
|
+
}
|
|
21
|
+
catch (error) { }
|
|
22
|
+
return choice;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
output = output ? output : response.choices[0].message.content;
|
|
26
|
+
var outputStringified = typeof output === 'string' ? output : JSON.stringify(output);
|
|
27
|
+
outputData.push({ json: { output: output }, pairedItem: { item: index } });
|
|
28
|
+
if (addToOutput.includes('fullResponse') || agentType === 'subAgent') {
|
|
29
|
+
outputData.forEach((item) => {
|
|
30
|
+
item.json.response = response;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const newMessages = messages.slice(originalMessagesLength);
|
|
34
|
+
if (addToOutput.includes('tool_calls')) {
|
|
35
|
+
outputData.forEach((item) => {
|
|
36
|
+
item.json.tool_calls = (0, messageExtractor_1.extractToolMessages)(newMessages);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (addToOutput.includes('chatHistory')) {
|
|
40
|
+
const includeToolCallsInChatHistory = executeFunctions.getNodeParameter('includeToolCallsInChatHistory', index, true);
|
|
41
|
+
const includeSystemMessagesInChatHistory = executeFunctions.getNodeParameter('includeSystemMessagesInChatHistory', index, true);
|
|
42
|
+
let chatHistoryMessages = structuredClone(messages);
|
|
43
|
+
if (!includeToolCallsInChatHistory) {
|
|
44
|
+
chatHistoryMessages = chatHistoryMessages
|
|
45
|
+
.filter((msg) => msg.content !== null && msg.role !== 'tool')
|
|
46
|
+
.map(({ role, content }) => ({ role, content }));
|
|
47
|
+
}
|
|
48
|
+
if (!includeSystemMessagesInChatHistory) {
|
|
49
|
+
chatHistoryMessages = chatHistoryMessages.filter((msg) => msg.role !== 'system');
|
|
50
|
+
}
|
|
51
|
+
const finalMessage = response === null || response === void 0 ? void 0 : response.choices[0].message;
|
|
52
|
+
if (finalMessage) {
|
|
53
|
+
let rootMessage = {
|
|
54
|
+
role: finalMessage.role,
|
|
55
|
+
content: outputStringified,
|
|
56
|
+
};
|
|
57
|
+
chatHistoryMessages.push(rootMessage);
|
|
58
|
+
}
|
|
59
|
+
for (const msg of chatHistoryMessages) {
|
|
60
|
+
if (msg.role === 'assistant') {
|
|
61
|
+
delete msg.reasoning_details;
|
|
62
|
+
delete msg.reasoning;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
outputData.forEach((item) => {
|
|
66
|
+
item.json.chat_history = chatHistoryMessages;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (addToOutput.includes('request')) {
|
|
70
|
+
outputData.forEach((item) => {
|
|
71
|
+
item.json.request = body;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (addToOutput.includes('modelOverview') && model.includes('/')) {
|
|
75
|
+
await addModelOverview(executeFunctions, model, outputData);
|
|
76
|
+
}
|
|
77
|
+
reorderOutputFields(outputData);
|
|
78
|
+
return outputData;
|
|
79
|
+
}
|
|
80
|
+
async function addModelOverview(executeFunctions, model, outputData) {
|
|
81
|
+
const requestOptions = {
|
|
82
|
+
method: 'GET',
|
|
83
|
+
url: `https://openrouter.ai/api/v1/models/${model}/endpoints`,
|
|
84
|
+
};
|
|
85
|
+
for (const item of outputData) {
|
|
86
|
+
try {
|
|
87
|
+
const modelOverviewResponse = await executeFunctions.helpers.httpRequest(requestOptions);
|
|
88
|
+
item.json.model_overview = modelOverviewResponse;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('Error fetching model endpoints:', error);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function reorderOutputFields(outputData) {
|
|
96
|
+
outputData.forEach((item) => {
|
|
97
|
+
const reordered = {
|
|
98
|
+
output: item.json.output,
|
|
99
|
+
request: item.json.request,
|
|
100
|
+
tool_calls: item.json.tool_calls,
|
|
101
|
+
response: item.json.response,
|
|
102
|
+
chat_history: item.json.chat_history,
|
|
103
|
+
model_overview: item.json.model_overview,
|
|
104
|
+
};
|
|
105
|
+
item.json = Object.fromEntries(Object.entries(reordered).filter(([_, value]) => value !== undefined));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=outputData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputData.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/outputData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.supplyMemoryData = supplyMemoryData;
|
|
4
|
+
async function getMemoryFromSupplyInput(supplyFunctions) {
|
|
5
|
+
let memoryInput;
|
|
6
|
+
try {
|
|
7
|
+
memoryInput = (await supplyFunctions.getInputConnectionData('ai_memory', 0, undefined));
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
memoryInput = undefined;
|
|
11
|
+
}
|
|
12
|
+
return Array.isArray(memoryInput) ? memoryInput[0] : memoryInput;
|
|
13
|
+
}
|
|
14
|
+
async function supplyMemoryData(itemIndex) {
|
|
15
|
+
try {
|
|
16
|
+
const memory = await getMemoryFromSupplyInput(this);
|
|
17
|
+
if (!memory || !memory.chatHistory) {
|
|
18
|
+
return {
|
|
19
|
+
response: [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const messages = await memory.chatHistory.getMessages();
|
|
23
|
+
if (messages.length === 0) {
|
|
24
|
+
return {
|
|
25
|
+
response: [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const formattedMessages = messages.map((message, index) => {
|
|
29
|
+
const messageData = {
|
|
30
|
+
id: index,
|
|
31
|
+
role: message._getType() === 'human' ? 'user' : 'assistant',
|
|
32
|
+
content: message.content,
|
|
33
|
+
};
|
|
34
|
+
if (message.additional_kwargs && Object.keys(message.additional_kwargs).length > 0) {
|
|
35
|
+
messageData.additional_kwargs = message.additional_kwargs;
|
|
36
|
+
}
|
|
37
|
+
if (message.tool_calls && Array.isArray(message.tool_calls)) {
|
|
38
|
+
messageData.tool_calls = message.tool_calls;
|
|
39
|
+
}
|
|
40
|
+
return messageData;
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
response: formattedMessages,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('Error supplying memory data:', error);
|
|
48
|
+
return {
|
|
49
|
+
response: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=supplier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supplier.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/memory/supplier.ts"],"names":[],"mappings":";;AA2BA,4CAqDC;AA1ED,KAAK,UAAU,wBAAwB,CACtC,eAAqC;IAErC,IAAI,WAA0D,CAAC;IAC/D,IAAI,CAAC;QACJ,WAAW,GAAG,CAAC,MAAM,eAAe,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,CAG1E,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEhB,WAAW,GAAG,SAAS,CAAC;IACzB,CAAC;IAGD,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAClE,CAAC;AAKM,KAAK,UAAU,gBAAgB,CAErC,SAAiB;IAEjB,IAAI,CAAC;QAEJ,MAAM,MAAM,GAA+B,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAEhF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO;gBACN,QAAQ,EAAE,EAAE;aACZ,CAAC;QACH,CAAC;QAGD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACN,QAAQ,EAAE,EAAE;aACZ,CAAC;QACH,CAAC;QAGD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACzD,MAAM,WAAW,GAAQ;gBACxB,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;gBAC3D,OAAO,EAAE,OAAO,CAAC,OAAO;aACxB,CAAC;YAGF,IAAI,OAAO,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpF,WAAW,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAC3D,CAAC;YAGD,IAAK,OAAe,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAE,OAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/E,WAAW,CAAC,UAAU,GAAI,OAAe,CAAC,UAAU,CAAC;YACtD,CAAC;YAED,OAAO,WAAW,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,OAAO;YACN,QAAQ,EAAE,iBAAiB;SAC3B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO;YACN,QAAQ,EAAE,EAAE;SACZ,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -5,10 +5,16 @@ const chatHistory_1 = require("./chatHistory");
|
|
|
5
5
|
async function processMessages(rawMessagesToSend, memory, parentMessageContentStr, parentMessageContentObj, loadToolCallsFromChatMemory = true) {
|
|
6
6
|
let messages = (await (0, chatHistory_1.unpackChatHistoryAndMemory)(rawMessagesToSend, memory, loadToolCallsFromChatMemory));
|
|
7
7
|
messages = messages
|
|
8
|
-
.map((item) =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
.map((item) => {
|
|
9
|
+
const processedItem = {
|
|
10
|
+
...item,
|
|
11
|
+
content: typeof item.content === 'string' ? item.content.trim() : item.content,
|
|
12
|
+
};
|
|
13
|
+
if (processedItem.tool_calls && Array.isArray(processedItem.tool_calls) && processedItem.tool_calls.length === 0) {
|
|
14
|
+
delete processedItem.tool_calls;
|
|
15
|
+
}
|
|
16
|
+
return processedItem;
|
|
17
|
+
})
|
|
12
18
|
.filter((item) => item.content !== '' ||
|
|
13
19
|
(item.role === 'assistant' && item.tool_calls) ||
|
|
14
20
|
item.role === 'tool');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/processor.ts"],"names":[],"mappings":";;AAQA,
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/processor.ts"],"names":[],"mappings":";;AAQA,0CA+CC;AApDD,+CAA2D;AAKpD,KAAK,UAAU,eAAe,CACpC,iBAA4B,EAC5B,MAAkC,EAClC,uBAA+B,EAC/B,uBAA+B,EAC/B,8BAAuC,IAAI;IAG3C,IAAI,QAAQ,GAAG,CAAC,MAAM,IAAA,wCAA0B,EAC/C,iBAAiB,EACjB,MAAM,EACN,2BAA2B,CAC3B,CAAkB,CAAC;IAGpB,QAAQ,GAAG,QAAQ;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,aAAa,GAAG;YACrB,GAAG,IAAI;YACP,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;SAC9E,CAAC;QAGF,IAAK,aAAqB,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAE,aAAqB,CAAC,UAAU,CAAC,IAAK,aAAqB,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7I,OAAQ,aAAqB,CAAC,UAAU,CAAC;QAC1C,CAAC;QAED,OAAO,aAAa,CAAC;IACtB,CAAC,CAAC;SACD,MAAM,CACN,CAAC,IAAI,EAAE,EAAE,CACR,IAAI,CAAC,OAAO,KAAK,EAAE;QACnB,CAAE,IAAY,CAAC,IAAI,KAAK,WAAW,IAAK,IAAY,CAAC,UAAU,CAAC;QAC/D,IAAY,CAAC,IAAI,KAAK,MAAM,CAC9B,CAAC;IAGH,IAAI,uBAAuB,KAAK,EAAE,EAAE,CAAC;QAEpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAG9D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
|
|
2
|
+
import type { ChatCompletion } from '../../api/types';
|
|
3
|
+
export declare function prepareOutputData(response: ChatCompletion, output: any, messages: IDataObject[], originalMessagesLength: number, addToOutput: string[], agentType: string, executeFunctions: IExecuteFunctions, index: number, body: IDataObject, model: string, parentMessageContentStr: string): Promise<INodeExecutionData[]>;
|
|
4
|
+
export declare function addModelOverview(executeFunctions: IExecuteFunctions, model: string, outputData: INodeExecutionData[]): Promise<void>;
|
|
5
|
+
export declare function reorderOutputFields(outputData: INodeExecutionData[]): void;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareOutputData = prepareOutputData;
|
|
4
|
+
exports.addModelOverview = addModelOverview;
|
|
5
|
+
exports.reorderOutputFields = reorderOutputFields;
|
|
6
|
+
const messageExtractor_1 = require("../tools/messageExtractor");
|
|
7
|
+
async function prepareOutputData(response, output, messages, originalMessagesLength, addToOutput, agentType, executeFunctions, index, body, model, parentMessageContentStr) {
|
|
8
|
+
const outputData = [];
|
|
9
|
+
if (agentType == 'subAgent' && parentMessageContentStr !== '') {
|
|
10
|
+
outputData.push({
|
|
11
|
+
json: { response: response },
|
|
12
|
+
pairedItem: { item: 0 },
|
|
13
|
+
});
|
|
14
|
+
return outputData;
|
|
15
|
+
}
|
|
16
|
+
if (body.response_format) {
|
|
17
|
+
response.choices = response.choices.map((choice) => {
|
|
18
|
+
try {
|
|
19
|
+
choice.message.content = JSON.parse(choice.message.content);
|
|
20
|
+
}
|
|
21
|
+
catch (error) { }
|
|
22
|
+
return choice;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
output = output ? output : response.choices[0].message.content;
|
|
26
|
+
var outputStringified = typeof output === 'string' ? output : JSON.stringify(output);
|
|
27
|
+
outputData.push({ json: { output: output }, pairedItem: { item: index } });
|
|
28
|
+
if (addToOutput.includes('fullResponse') || agentType === 'subAgent') {
|
|
29
|
+
outputData.forEach((item) => {
|
|
30
|
+
item.json.response = response;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const newMessages = messages.slice(originalMessagesLength);
|
|
34
|
+
if (addToOutput.includes('tool_calls')) {
|
|
35
|
+
outputData.forEach((item) => {
|
|
36
|
+
item.json.tool_calls = (0, messageExtractor_1.extractToolMessages)(newMessages);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (addToOutput.includes('chatHistory')) {
|
|
40
|
+
const includeToolCallsInChatHistory = executeFunctions.getNodeParameter('includeToolCallsInChatHistory', index, true);
|
|
41
|
+
const includeSystemMessagesInChatHistory = executeFunctions.getNodeParameter('includeSystemMessagesInChatHistory', index, true);
|
|
42
|
+
let chatHistoryMessages = structuredClone(messages);
|
|
43
|
+
if (!includeToolCallsInChatHistory) {
|
|
44
|
+
chatHistoryMessages = chatHistoryMessages
|
|
45
|
+
.filter((msg) => msg.content !== null && msg.role !== 'tool')
|
|
46
|
+
.map(({ role, content }) => ({ role, content }));
|
|
47
|
+
}
|
|
48
|
+
if (!includeSystemMessagesInChatHistory) {
|
|
49
|
+
chatHistoryMessages = chatHistoryMessages.filter((msg) => msg.role !== 'system');
|
|
50
|
+
}
|
|
51
|
+
const finalMessage = response === null || response === void 0 ? void 0 : response.choices[0].message;
|
|
52
|
+
if (finalMessage) {
|
|
53
|
+
let rootMessage = {
|
|
54
|
+
role: finalMessage.role,
|
|
55
|
+
content: outputStringified,
|
|
56
|
+
};
|
|
57
|
+
chatHistoryMessages.push(rootMessage);
|
|
58
|
+
}
|
|
59
|
+
for (const msg of chatHistoryMessages) {
|
|
60
|
+
if (msg.role === 'assistant') {
|
|
61
|
+
delete msg.reasoning_details;
|
|
62
|
+
delete msg.reasoning;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
outputData.forEach((item) => {
|
|
66
|
+
item.json.chat_history = chatHistoryMessages;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (addToOutput.includes('request')) {
|
|
70
|
+
outputData.forEach((item) => {
|
|
71
|
+
item.json.request = body;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (addToOutput.includes('modelOverview') && model.includes('/')) {
|
|
75
|
+
await addModelOverview(executeFunctions, model, outputData);
|
|
76
|
+
}
|
|
77
|
+
reorderOutputFields(outputData);
|
|
78
|
+
return outputData;
|
|
79
|
+
}
|
|
80
|
+
async function addModelOverview(executeFunctions, model, outputData) {
|
|
81
|
+
const requestOptions = {
|
|
82
|
+
method: 'GET',
|
|
83
|
+
url: `https://openrouter.ai/api/v1/models/${model}/endpoints`,
|
|
84
|
+
};
|
|
85
|
+
for (const item of outputData) {
|
|
86
|
+
try {
|
|
87
|
+
const modelOverviewResponse = await executeFunctions.helpers.httpRequest(requestOptions);
|
|
88
|
+
item.json.model_overview = modelOverviewResponse;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('Error fetching model endpoints:', error);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function reorderOutputFields(outputData) {
|
|
96
|
+
outputData.forEach((item) => {
|
|
97
|
+
const reordered = {
|
|
98
|
+
output: item.json.output,
|
|
99
|
+
request: item.json.request,
|
|
100
|
+
tool_calls: item.json.tool_calls,
|
|
101
|
+
response: item.json.response,
|
|
102
|
+
chat_history: item.json.chat_history,
|
|
103
|
+
model_overview: item.json.model_overview,
|
|
104
|
+
};
|
|
105
|
+
item.json = Object.fromEntries(Object.entries(reordered).filter(([_, value]) => value !== undefined));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/output/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { IDataObject } from 'n8n-workflow';
|
|
2
|
+
export declare function prepareRequestBody(model: string, messages: IDataObject[], tools: any[], tool_choice: string | undefined, response_format: IDataObject | undefined, options: IDataObject, customParameters: string | IDataObject): IDataObject;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.prepareRequestBody = prepareRequestBody;
|
|
7
|
+
const omit_1 = __importDefault(require("lodash/omit"));
|
|
8
|
+
const types_1 = require("../messages/types");
|
|
9
|
+
function prepareRequestBody(model, messages, tools, tool_choice, response_format, options, customParameters) {
|
|
10
|
+
let customParamsObj = {};
|
|
11
|
+
if (customParameters) {
|
|
12
|
+
if (typeof customParameters === 'string' && customParameters.trim()) {
|
|
13
|
+
try {
|
|
14
|
+
customParamsObj = JSON.parse(customParameters);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
throw new Error('Invalid JSON in customParameters');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else if (typeof customParameters !== 'string') {
|
|
21
|
+
customParamsObj = customParameters;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const cleanOptions = (0, omit_1.default)(options, [
|
|
25
|
+
'customParameters',
|
|
26
|
+
'fallbackModelId',
|
|
27
|
+
'maxToolsIterations',
|
|
28
|
+
]);
|
|
29
|
+
const body = {
|
|
30
|
+
model,
|
|
31
|
+
messages,
|
|
32
|
+
...(tools.length > 0 ? { tools } : {}),
|
|
33
|
+
tool_choice,
|
|
34
|
+
response_format,
|
|
35
|
+
...cleanOptions,
|
|
36
|
+
...customParamsObj,
|
|
37
|
+
};
|
|
38
|
+
if (!Array.isArray(messages) || !messages.every(types_1.isValidMessage)) {
|
|
39
|
+
throw new Error("Invalid or missing 'messages' in the request body.");
|
|
40
|
+
}
|
|
41
|
+
return body;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/body.ts"],"names":[],"mappings":";;;;;AAOA,gDA6CC;AAnDD,uDAAgC;AAChC,6CAAmD;AAKnD,SAAgB,kBAAkB,CACjC,KAAa,EACb,QAAuB,EACvB,KAAY,EACZ,WAA+B,EAC/B,eAAwC,EACxC,OAAoB,EACpB,gBAAsC;IAEtC,IAAI,eAAe,GAAgB,EAAE,CAAC;IACtC,IAAI,gBAAgB,EAAE,CAAC;QACtB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YACrE,IAAI,CAAC;gBACJ,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACjD,eAAe,GAAG,gBAAgB,CAAC;QACpC,CAAC;IACF,CAAC;IAGD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,EAAE;QACnC,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;KACpB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAgB;QACzB,KAAK;QACL,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,WAAW;QACX,eAAe;QACf,GAAG,YAAY;QACf,GAAG,eAAe;KAClB,CAAC;IAGF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAc,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { IDataObject } from 'n8n-workflow';
|
|
2
|
+
export declare function prepareRequestBody(model: string, messages: IDataObject[], tools: any[], tool_choice: string | undefined, response_format: IDataObject | undefined, options: IDataObject, customParameters: string | IDataObject): IDataObject;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.prepareRequestBody = prepareRequestBody;
|
|
7
|
+
const omit_1 = __importDefault(require("lodash/omit"));
|
|
8
|
+
const types_1 = require("../messages/types");
|
|
9
|
+
function prepareRequestBody(model, messages, tools, tool_choice, response_format, options, customParameters) {
|
|
10
|
+
let customParamsObj = {};
|
|
11
|
+
if (customParameters) {
|
|
12
|
+
if (typeof customParameters === 'string' && customParameters.trim()) {
|
|
13
|
+
try {
|
|
14
|
+
customParamsObj = JSON.parse(customParameters);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
throw new Error('Invalid JSON in customParameters');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else if (typeof customParameters !== 'string') {
|
|
21
|
+
customParamsObj = customParameters;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const cleanOptions = (0, omit_1.default)(options, [
|
|
25
|
+
'customParameters',
|
|
26
|
+
'fallbackModelId',
|
|
27
|
+
'maxToolsIterations',
|
|
28
|
+
]);
|
|
29
|
+
const body = {
|
|
30
|
+
model,
|
|
31
|
+
messages,
|
|
32
|
+
...(tools.length > 0 ? { tools } : {}),
|
|
33
|
+
tool_choice,
|
|
34
|
+
response_format,
|
|
35
|
+
...cleanOptions,
|
|
36
|
+
...customParamsObj,
|
|
37
|
+
};
|
|
38
|
+
if (!Array.isArray(messages) || !messages.every(types_1.isValidMessage)) {
|
|
39
|
+
throw new Error("Invalid or missing 'messages' in the request body.");
|
|
40
|
+
}
|
|
41
|
+
return body;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/builder.ts"],"names":[],"mappings":";;;;;AAOA,gDA6CC;AAnDD,uDAAgC;AAChC,6CAAmD;AAKnD,SAAgB,kBAAkB,CACjC,KAAa,EACb,QAAuB,EACvB,KAAY,EACZ,WAA+B,EAC/B,eAAwC,EACxC,OAAoB,EACpB,gBAAsC;IAEtC,IAAI,eAAe,GAAgB,EAAE,CAAC;IACtC,IAAI,gBAAgB,EAAE,CAAC;QACtB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YACrE,IAAI,CAAC;gBACJ,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACjD,eAAe,GAAG,gBAAgB,CAAC;QACpC,CAAC;IACF,CAAC;IAGD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,EAAE;QACnC,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;KACpB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAgB;QACzB,KAAK;QACL,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,WAAW;QACX,eAAe;QACf,GAAG,YAAY;QACf,GAAG,eAAe;KAClB,CAAC;IAGF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAc,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { IDataObject } from 'n8n-workflow';
|
|
2
|
+
import { VisualEditorProperties } from './visualEditor';
|
|
3
|
+
export declare function configureResponseFormat(responseFormat: string, outputJsonSchemaDefinition: string, structuredOutputName: string, structuredOutputDescription: string, structuredOutputProperties: VisualEditorProperties[], structuredOutputIsArray: boolean, structuredOutputArrayName: string, structuredOutputArrayDescription: string): IDataObject | undefined;
|