n8n-nodes-simple 2.2.15 → 2.3.0
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/api/openAiApiRequest.js +1 -10
- package/dist/nodes/shared/api/openAiApiRequest.js.map +1 -1
- package/dist/nodes/shared/config/properties/output.js +1 -1
- package/dist/nodes/shared/config/properties/output.js.map +1 -1
- package/dist/nodes/shared/core/execution/executor.d.ts +3 -3
- package/dist/nodes/shared/core/execution/executor.js +10 -13
- package/dist/nodes/shared/core/execution/executor.js.map +1 -1
- package/dist/nodes/shared/core/execution/messageOperation.js +3 -3
- package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -1
- package/dist/nodes/shared/core/execution/outputData.d.ts +1 -1
- package/dist/nodes/shared/core/execution/outputData.js +5 -7
- package/dist/nodes/shared/core/execution/outputData.js.map +1 -1
- package/dist/nodes/shared/core/memory/index.d.ts +0 -1
- package/dist/nodes/shared/core/memory/index.js +0 -1
- package/dist/nodes/shared/core/memory/index.js.map +1 -1
- package/dist/nodes/shared/core/memory/io.d.ts +4 -5
- package/dist/nodes/shared/core/memory/io.js +48 -81
- package/dist/nodes/shared/core/memory/io.js.map +1 -1
- package/dist/nodes/shared/core/messages/chatHistory.d.ts +2 -1
- package/dist/nodes/shared/core/messages/chatHistory.js +24 -45
- package/dist/nodes/shared/core/messages/chatHistory.js.map +1 -1
- package/dist/nodes/shared/core/messages/converter.d.ts +0 -2
- package/dist/nodes/shared/core/messages/converter.js +6 -67
- package/dist/nodes/shared/core/messages/converter.js.map +1 -1
- package/dist/nodes/shared/core/messages/processor.d.ts +2 -2
- package/dist/nodes/shared/core/messages/processor.js +6 -53
- package/dist/nodes/shared/core/messages/processor.js.map +1 -1
- package/dist/nodes/shared/core/request/body.js +0 -23
- package/dist/nodes/shared/core/request/body.js.map +1 -1
- package/dist/nodes/shared/core/tools/executor.d.ts +1 -1
- package/dist/nodes/shared/core/tools/executor.js +11 -42
- package/dist/nodes/shared/core/tools/executor.js.map +1 -1
- package/dist/nodes/shared/core/tools/messageExtractor.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.convertMessages = convertMessages;
|
|
4
|
-
exports.expandToolCallsInMessages = expandToolCallsInMessages;
|
|
5
|
-
exports.sanitizeMessage = sanitizeMessage;
|
|
6
|
-
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
4
|
function convertMessages(messages, loadToolCalls = true) {
|
|
8
5
|
const result = [];
|
|
9
6
|
for (const message of messages) {
|
|
10
7
|
const role = message.constructor.name === 'AIMessage' ? 'assistant' : 'user';
|
|
11
|
-
const content = typeof message.content === 'string' ? message.content
|
|
8
|
+
const content = typeof message.content === 'string' ? message.content
|
|
9
|
+
: typeof message.content === null ? ''
|
|
10
|
+
: JSON.stringify(message.content);
|
|
12
11
|
const toolCalls = message.tool_calls;
|
|
13
|
-
if (
|
|
14
|
-
|
|
15
|
-
Array.isArray(toolCalls)
|
|
16
|
-
toolCalls.length > 0 &&
|
|
17
|
-
loadToolCalls) {
|
|
12
|
+
if (loadToolCalls &&
|
|
13
|
+
role === 'assistant' &&
|
|
14
|
+
Array.isArray(toolCalls)) {
|
|
18
15
|
result.push(...toolCalls);
|
|
19
16
|
result.push({
|
|
20
17
|
role: 'assistant',
|
|
@@ -30,62 +27,4 @@ function convertMessages(messages, loadToolCalls = true) {
|
|
|
30
27
|
}
|
|
31
28
|
return result;
|
|
32
29
|
}
|
|
33
|
-
function expandToolCallsInMessages(messages, loadToolCalls = true) {
|
|
34
|
-
var _a;
|
|
35
|
-
const result = [];
|
|
36
|
-
for (const message of messages) {
|
|
37
|
-
if (message.role !== 'assistant' || !((_a = message.tool_calls) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
38
|
-
const messageCopy = { ...message };
|
|
39
|
-
if (messageCopy.tool_calls)
|
|
40
|
-
delete messageCopy.tool_calls;
|
|
41
|
-
result.push(messageCopy);
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
if (!loadToolCalls) {
|
|
45
|
-
result.push({
|
|
46
|
-
role: 'assistant',
|
|
47
|
-
content: message.content,
|
|
48
|
-
});
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
result.push(...message.tool_calls);
|
|
52
|
-
result.push({
|
|
53
|
-
role: 'assistant',
|
|
54
|
-
content: message.content,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
function sanitizeMessage(message) {
|
|
60
|
-
const hasToolCalls = message.tool_calls && Array.isArray(message.tool_calls);
|
|
61
|
-
const isEmptyToolCalls = hasToolCalls && message.tool_calls.length === 0;
|
|
62
|
-
n8n_workflow_1.LoggerProxy.debug('Sanitizing message', {
|
|
63
|
-
messageRole: message.role,
|
|
64
|
-
hasToolCalls,
|
|
65
|
-
toolCallsLength: hasToolCalls ? message.tool_calls.length : 'N/A',
|
|
66
|
-
isEmptyToolCalls,
|
|
67
|
-
messageId: message.id || 'no-id'
|
|
68
|
-
});
|
|
69
|
-
const sanitized = { ...message };
|
|
70
|
-
if (sanitized.tool_calls && Array.isArray(sanitized.tool_calls)) {
|
|
71
|
-
sanitized.tool_calls = [...sanitized.tool_calls];
|
|
72
|
-
if (sanitized.tool_calls.length === 0) {
|
|
73
|
-
n8n_workflow_1.LoggerProxy.debug('Removing empty tool_calls array during sanitization', {
|
|
74
|
-
messageRole: sanitized.role,
|
|
75
|
-
originalToolCallsLength: message.tool_calls.length,
|
|
76
|
-
messageId: message.id || 'no-id'
|
|
77
|
-
});
|
|
78
|
-
delete sanitized.tool_calls;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
const sanitizedHasToolCalls = sanitized.tool_calls && Array.isArray(sanitized.tool_calls);
|
|
82
|
-
n8n_workflow_1.LoggerProxy.debug('Message sanitization complete', {
|
|
83
|
-
messageRole: sanitized.role,
|
|
84
|
-
originalHadToolCalls: hasToolCalls,
|
|
85
|
-
sanitizedHasToolCalls,
|
|
86
|
-
removedEmptyToolCalls: hasToolCalls && !sanitizedHasToolCalls,
|
|
87
|
-
messageId: message.id || 'no-id'
|
|
88
|
-
});
|
|
89
|
-
return sanitized;
|
|
90
|
-
}
|
|
91
30
|
//# sourceMappingURL=converter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/converter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/converter.ts"],"names":[],"mappings":";;AAeA,0CAkCC;AAlCD,SAAgB,eAAe,CAAC,QAAuB,EAAE,gBAAyB,IAAI;IACrF,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YACpE,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;gBACtC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAGnC,MAAM,SAAS,GAAI,OAAe,CAAC,UAAU,CAAC;QAC9C,IACC,aAAa;YACb,IAAI,KAAK,WAAW;YACpB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EACvB,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;YAG1B,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,OAAO;aAChB,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YAEP,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,OAAO;aAChB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IDataObject } from 'n8n-workflow';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BufferWindowMemory } from 'langchain/memory';
|
|
3
3
|
import { Message } from './types';
|
|
4
|
-
export declare function processMessages(rawMessagesToSend: Message[],
|
|
4
|
+
export declare function processMessages(rawMessagesToSend: Message[], parentMessageContentStr: string, parentMessageContentObj: object, loadToolCallsFromChatMemory?: boolean, memory?: BufferWindowMemory): Promise<IDataObject[]>;
|
|
@@ -1,61 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.processMessages = processMessages;
|
|
4
|
-
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
4
|
const chatHistory_1 = require("./chatHistory");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
loadToolCallsFromChatMemory,
|
|
13
|
-
});
|
|
14
|
-
let messages = (await (0, chatHistory_1.unpackChatHistoryAndMemory)(rawMessagesToSend, memory, loadToolCallsFromChatMemory));
|
|
15
|
-
n8n_workflow_1.LoggerProxy.debug('Message processor: After unpacking chat history and memory', {
|
|
16
|
-
messageCount: messages.length,
|
|
17
|
-
messagesWithToolCalls: messages.filter(m => m.tool_calls).length,
|
|
18
|
-
messagesWithEmptyToolCalls: messages.filter(m => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
19
|
-
});
|
|
20
|
-
messages = messages
|
|
21
|
-
.map((item) => ({
|
|
22
|
-
...item,
|
|
23
|
-
content: typeof item.content === 'string' ? item.content.trim() : item.content,
|
|
24
|
-
}))
|
|
25
|
-
.filter((item) => {
|
|
26
|
-
var _a;
|
|
27
|
-
return item.content !== '' ||
|
|
28
|
-
(item.role === 'assistant' && ((_a = item.tool_calls) === null || _a === void 0 ? void 0 : _a.length) > 0) ||
|
|
29
|
-
item.role === 'tool';
|
|
30
|
-
});
|
|
31
|
-
n8n_workflow_1.LoggerProxy.debug('Message processor: After filtering and trimming', {
|
|
32
|
-
messageCount: messages.length,
|
|
33
|
-
messagesWithToolCalls: messages.filter(m => m.tool_calls).length,
|
|
34
|
-
messagesWithEmptyToolCalls: messages.filter(m => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
35
|
-
});
|
|
36
|
-
if (parentMessageContentStr !== '') {
|
|
37
|
-
messages.push({ role: 'user', content: parentMessageContentStr });
|
|
5
|
+
async function processMessages(rawMessagesToSend, parentMessageContentStr, parentMessageContentObj, loadToolCallsFromChatMemory = true, memory) {
|
|
6
|
+
let messages = (await (0, chatHistory_1.unpackChatHistoryAndMemory)(rawMessagesToSend, loadToolCallsFromChatMemory, memory));
|
|
7
|
+
const parentMessageContent = parentMessageContentStr ||
|
|
8
|
+
(Object.keys(parentMessageContentObj).length > 0 ? JSON.stringify(parentMessageContentObj) : null);
|
|
9
|
+
if (parentMessageContent) {
|
|
10
|
+
messages.push({ role: 'user', content: parentMessageContent });
|
|
38
11
|
}
|
|
39
|
-
else if (Object.keys(parentMessageContentObj).length !== 0) {
|
|
40
|
-
messages.push({ role: 'user', content: JSON.stringify(parentMessageContentObj) });
|
|
41
|
-
}
|
|
42
|
-
n8n_workflow_1.LoggerProxy.debug('Message processor: Before final sanitization', {
|
|
43
|
-
messageCount: messages.length,
|
|
44
|
-
messagesWithToolCalls: messages.filter(m => m.tool_calls).length,
|
|
45
|
-
messagesWithEmptyToolCalls: messages.filter(m => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
46
|
-
});
|
|
47
|
-
messages = messages.map(converter_1.sanitizeMessage);
|
|
48
|
-
n8n_workflow_1.LoggerProxy.debug('Message processor: After final sanitization - FINAL OUTPUT', {
|
|
49
|
-
messageCount: messages.length,
|
|
50
|
-
messagesWithToolCalls: messages.filter(m => m.tool_calls).length,
|
|
51
|
-
messagesWithEmptyToolCalls: messages.filter(m => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
52
|
-
messageStructures: messages.map((m, i) => ({
|
|
53
|
-
index: i,
|
|
54
|
-
role: m.role,
|
|
55
|
-
hasToolCalls: !!m.tool_calls,
|
|
56
|
-
toolCallsLength: Array.isArray(m.tool_calls) ? m.tool_calls.length : 'N/A'
|
|
57
|
-
}))
|
|
58
|
-
});
|
|
59
12
|
return messages;
|
|
60
13
|
}
|
|
61
14
|
//# sourceMappingURL=processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/processor.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/processor.ts"],"names":[],"mappings":";;AAQA,0CAuCC;AA5CD,+CAA2D;AAKpD,KAAK,UAAU,eAAe,CACpC,iBAA4B,EAC5B,uBAA+B,EAC/B,uBAA+B,EAC/B,8BAAuC,IAAI,EAC3C,MAA2B;IAG3B,IAAI,QAAQ,GAAG,CAAC,MAAM,IAAA,wCAA0B,EAC/C,iBAAiB,EACjB,2BAA2B,EAC3B,MAAM,CACN,CAAkB,CAAC;IAmBpB,MAAM,oBAAoB,GAAG,uBAAuB;QACnD,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpG,IAAI,oBAAoB,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -4,10 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.prepareRequestBody = prepareRequestBody;
|
|
7
|
-
const n8n_workflow_1 = require("n8n-workflow");
|
|
8
7
|
const omit_1 = __importDefault(require("lodash/omit"));
|
|
9
8
|
const types_1 = require("../messages/types");
|
|
10
|
-
const converter_1 = require("../messages/converter");
|
|
11
9
|
function prepareRequestBody(model, messages, tools, tool_choice, response_format, options, customParameters) {
|
|
12
10
|
let customParamsObj = {};
|
|
13
11
|
if (customParameters) {
|
|
@@ -40,27 +38,6 @@ function prepareRequestBody(model, messages, tools, tool_choice, response_format
|
|
|
40
38
|
if (!Array.isArray(messages) || !messages.every(types_1.isValidMessage)) {
|
|
41
39
|
throw new Error("Invalid or missing 'messages' in the request body.");
|
|
42
40
|
}
|
|
43
|
-
n8n_workflow_1.LoggerProxy.debug('Request body preparation: Before sanitization', {
|
|
44
|
-
messageCount: messages.length,
|
|
45
|
-
messagesWithToolCalls: messages.filter(m => m.tool_calls).length,
|
|
46
|
-
messagesWithEmptyToolCalls: messages.filter(m => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
47
|
-
model,
|
|
48
|
-
toolsCount: tools.length
|
|
49
|
-
});
|
|
50
|
-
body.messages = messages.map(converter_1.sanitizeMessage);
|
|
51
|
-
n8n_workflow_1.LoggerProxy.debug('Request body preparation: After sanitization - FINAL REQUEST BODY', {
|
|
52
|
-
messageCount: body.messages.length,
|
|
53
|
-
messagesWithToolCalls: body.messages.filter((m) => m.tool_calls).length,
|
|
54
|
-
messagesWithEmptyToolCalls: body.messages.filter((m) => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
55
|
-
model,
|
|
56
|
-
toolsCount: tools.length,
|
|
57
|
-
messageStructures: body.messages.map((m, i) => ({
|
|
58
|
-
index: i,
|
|
59
|
-
role: m.role,
|
|
60
|
-
hasToolCalls: !!m.tool_calls,
|
|
61
|
-
toolCallsLength: Array.isArray(m.tool_calls) ? m.tool_calls.length : 'N/A'
|
|
62
|
-
}))
|
|
63
|
-
});
|
|
64
41
|
return body;
|
|
65
42
|
}
|
|
66
43
|
//# sourceMappingURL=body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/body.ts"],"names":[],"mappings":";;;;;
|
|
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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
|
|
2
2
|
import type { ChatCompletion } from '../../api/types';
|
|
3
|
-
export declare function processToolCalls(executeFunctions: IExecuteFunctions, body: IDataObject, messages: IDataObject[], invokableTools: any[],
|
|
3
|
+
export declare function processToolCalls(executeFunctions: IExecuteFunctions, body: IDataObject, messages: IDataObject[], invokableTools: any[], maxToolsIterations: number, responseFormat: string, structuredOutputTool?: IDataObject, abortSignal?: AbortSignal): Promise<{
|
|
4
4
|
response: ChatCompletion;
|
|
5
5
|
output: any;
|
|
6
6
|
}>;
|
|
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.processToolCalls = processToolCalls;
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
const openAiApiRequest_1 = require("../../api/openAiApiRequest");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var _a, _b, _c, _d, _e, _f;
|
|
6
|
+
async function processToolCalls(executeFunctions, body, messages, invokableTools, maxToolsIterations, responseFormat, structuredOutputTool, abortSignal) {
|
|
7
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
9
8
|
const processedToolCallIds = new Set();
|
|
10
9
|
let response = (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', `/chat/completions`, {
|
|
11
10
|
body,
|
|
@@ -27,34 +26,21 @@ async function processToolCalls(executeFunctions, body, messages, invokableTools
|
|
|
27
26
|
if (shouldMakeFinalCall) {
|
|
28
27
|
let finalBody;
|
|
29
28
|
if (structuredOutputTool && !output) {
|
|
30
|
-
const sanitizedMessages = messages.map(converter_1.sanitizeMessage);
|
|
31
|
-
n8n_workflow_1.LoggerProxy.debug('Tool executor: Preparing final call with structured output tool', {
|
|
32
|
-
messageCount: sanitizedMessages.length,
|
|
33
|
-
messagesWithToolCalls: sanitizedMessages.filter((m) => m.tool_calls).length,
|
|
34
|
-
messagesWithEmptyToolCalls: sanitizedMessages.filter((m) => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
35
|
-
});
|
|
36
29
|
finalBody = {
|
|
37
30
|
...body,
|
|
38
|
-
messages:
|
|
31
|
+
messages: messages,
|
|
39
32
|
tools: [structuredOutputTool],
|
|
40
33
|
tool_choice: 'required',
|
|
41
34
|
};
|
|
42
35
|
}
|
|
43
36
|
else {
|
|
44
|
-
const sanitizedMessages = messages.map(converter_1.sanitizeMessage);
|
|
45
|
-
n8n_workflow_1.LoggerProxy.debug('Tool executor: Preparing final call with no tools', {
|
|
46
|
-
messageCount: sanitizedMessages.length,
|
|
47
|
-
messagesWithToolCalls: sanitizedMessages.filter((m) => m.tool_calls).length,
|
|
48
|
-
messagesWithEmptyToolCalls: sanitizedMessages.filter((m) => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
49
|
-
});
|
|
50
37
|
finalBody = {
|
|
51
38
|
...body,
|
|
52
|
-
messages:
|
|
39
|
+
messages: messages,
|
|
53
40
|
tools: [],
|
|
54
41
|
tool_choice: undefined,
|
|
55
42
|
};
|
|
56
43
|
}
|
|
57
|
-
n8n_workflow_1.LoggerProxy.debug('Tool executor: Making final API call');
|
|
58
44
|
response = (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', `/chat/completions`, {
|
|
59
45
|
body: finalBody,
|
|
60
46
|
}));
|
|
@@ -112,21 +98,7 @@ async function processToolCalls(executeFunctions, body, messages, invokableTools
|
|
|
112
98
|
break;
|
|
113
99
|
}
|
|
114
100
|
if (toolCalls.indexOf(toolCall) === 0) {
|
|
115
|
-
|
|
116
|
-
const messageToAdd = {
|
|
117
|
-
role: 'assistant',
|
|
118
|
-
content: assistantMessage.content,
|
|
119
|
-
...(assistantMessage.tool_calls && Array.isArray(assistantMessage.tool_calls) && assistantMessage.tool_calls.length > 0 && { tool_calls: assistantMessage.tool_calls }),
|
|
120
|
-
};
|
|
121
|
-
n8n_workflow_1.LoggerProxy.debug('Tool executor: Adding assistant message to chat history', {
|
|
122
|
-
originalHasToolCalls: !!assistantMessage.tool_calls,
|
|
123
|
-
originalToolCallsLength: Array.isArray(assistantMessage.tool_calls) ? assistantMessage.tool_calls.length : 'N/A',
|
|
124
|
-
finalHasToolCalls: !!messageToAdd.tool_calls,
|
|
125
|
-
finalToolCallsLength: Array.isArray(messageToAdd.tool_calls) ? messageToAdd.tool_calls.length : 'N/A',
|
|
126
|
-
toolCallIndex: toolCalls.indexOf(toolCall),
|
|
127
|
-
currentIteration
|
|
128
|
-
});
|
|
129
|
-
messages.push(messageToAdd);
|
|
101
|
+
messages.push(response.choices[0].message);
|
|
130
102
|
}
|
|
131
103
|
messages.push({
|
|
132
104
|
tool_call_id: toolCallId,
|
|
@@ -137,24 +109,21 @@ async function processToolCalls(executeFunctions, body, messages, invokableTools
|
|
|
137
109
|
if (output) {
|
|
138
110
|
break;
|
|
139
111
|
}
|
|
140
|
-
const sanitizedMessages = messages.map(converter_1.sanitizeMessage);
|
|
141
|
-
n8n_workflow_1.LoggerProxy.debug('Tool executor: Preparing next iteration call', {
|
|
142
|
-
iteration: currentIteration,
|
|
143
|
-
messageCount: sanitizedMessages.length,
|
|
144
|
-
messagesWithToolCalls: sanitizedMessages.filter((m) => m.tool_calls).length,
|
|
145
|
-
messagesWithEmptyToolCalls: sanitizedMessages.filter((m) => m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0).length,
|
|
146
|
-
});
|
|
147
112
|
const nextIterationBody = {
|
|
148
113
|
...body,
|
|
149
|
-
messages:
|
|
114
|
+
messages: messages,
|
|
150
115
|
};
|
|
151
|
-
n8n_workflow_1.LoggerProxy.debug('Tool executor: Making next iteration API call', { iteration: currentIteration });
|
|
152
116
|
response = (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', `/chat/completions`, {
|
|
153
117
|
body: nextIterationBody,
|
|
154
118
|
}));
|
|
155
119
|
toolCalls = response.choices[0].message.tool_calls;
|
|
156
120
|
currentIteration += 1;
|
|
157
121
|
}
|
|
122
|
+
if (!output) {
|
|
123
|
+
output = responseFormat === "plainText"
|
|
124
|
+
? (_g = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _g === void 0 ? void 0 : _g.message.content
|
|
125
|
+
: JSON.parse((_h = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _h === void 0 ? void 0 : _h.message.content);
|
|
126
|
+
}
|
|
158
127
|
return { response, output };
|
|
159
128
|
}
|
|
160
129
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/executor.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageExtractor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/messageExtractor.ts"],"names":[],"mappings":";;AAOA,
|
|
1
|
+
{"version":3,"file":"messageExtractor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/messageExtractor.ts"],"names":[],"mappings":";;AAOA,kDAkCC;AAlCD,SAAgB,mBAAmB,CAClC,uBAAkC;IAGlC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACjG,MAAM,qBAAqB,GAAsD,EAAE,CAAC;IAEpF,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzF,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACxC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAGxD,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/D,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;gBAC7B,CAAC;gBAED,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CACnD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,EAAE,CACjD,CAAC;gBAEF,IAAI,WAAW,EAAE,CAAC;oBACjB,qBAAqB,CAAC,IAAI,CAAC;wBAC1B,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,SAAS;wBAChB,MAAM,EAAE,WAAW,CAAC,OAAQ;qBAC5B,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC9B,CAAC"}
|