n8n-nodes-memory 0.0.1 → 0.1.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/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Memory } from './nodes/Memory/Memory.node';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Memory = void 0;
|
|
4
|
+
var Memory_node_1 = require("./nodes/Memory/Memory.node");
|
|
5
|
+
Object.defineProperty(exports, "Memory", { enumerable: true, get: function () { return Memory_node_1.Memory; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQW9EO0FBQTNDLHFHQUFBLE1BQU0sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE1lbW9yeSB9IGZyb20gJy4vbm9kZXMvTWVtb3J5L01lbW9yeS5ub2RlJztcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseListChatMessageHistory } from '@langchain/core/chat_history';
|
|
2
|
+
import { BaseMessage } from '@langchain/core/messages';
|
|
3
|
+
export interface ApiMemoryHistoryConfig {
|
|
4
|
+
apiUrl: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class ApiMemoryHistory extends BaseListChatMessageHistory {
|
|
9
|
+
lc_namespace: string[];
|
|
10
|
+
private apiUrl;
|
|
11
|
+
private sessionId;
|
|
12
|
+
private apiKey?;
|
|
13
|
+
constructor(config: ApiMemoryHistoryConfig);
|
|
14
|
+
getMessages(): Promise<BaseMessage[]>;
|
|
15
|
+
addMessage(message: BaseMessage): Promise<void>;
|
|
16
|
+
addMessages(messages: BaseMessage[]): Promise<void>;
|
|
17
|
+
clear(): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiMemoryHistory = void 0;
|
|
4
|
+
const chat_history_1 = require("@langchain/core/chat_history");
|
|
5
|
+
const messages_1 = require("@langchain/core/messages");
|
|
6
|
+
class ApiMemoryHistory extends chat_history_1.BaseListChatMessageHistory {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super();
|
|
9
|
+
this.lc_namespace = ['langchain', 'stores', 'message', 'api'];
|
|
10
|
+
this.apiUrl = config.apiUrl;
|
|
11
|
+
this.sessionId = config.sessionId;
|
|
12
|
+
this.apiKey = config.apiKey;
|
|
13
|
+
}
|
|
14
|
+
async getMessages() {
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(this.apiUrl);
|
|
17
|
+
url.searchParams.set('sessionId', this.sessionId);
|
|
18
|
+
url.searchParams.set('action', 'get');
|
|
19
|
+
const headers = {
|
|
20
|
+
'Content-Type': 'application/json',
|
|
21
|
+
};
|
|
22
|
+
if (this.apiKey) {
|
|
23
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
24
|
+
}
|
|
25
|
+
const response = await fetch(url.toString(), {
|
|
26
|
+
method: 'GET',
|
|
27
|
+
headers,
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
console.error(`Memory API error: ${response.status}`);
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
const messages = data.messages || [];
|
|
35
|
+
return messages.map((msg) => {
|
|
36
|
+
switch (msg.type) {
|
|
37
|
+
case 'human':
|
|
38
|
+
return new messages_1.HumanMessage(msg.content);
|
|
39
|
+
case 'ai':
|
|
40
|
+
return new messages_1.AIMessage(msg.content);
|
|
41
|
+
case 'system':
|
|
42
|
+
return new messages_1.SystemMessage(msg.content);
|
|
43
|
+
default:
|
|
44
|
+
return new messages_1.HumanMessage(msg.content);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error('Failed to get messages from API:', error);
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async addMessage(message) {
|
|
54
|
+
try {
|
|
55
|
+
const headers = {
|
|
56
|
+
'Content-Type': 'application/json',
|
|
57
|
+
};
|
|
58
|
+
if (this.apiKey) {
|
|
59
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
60
|
+
}
|
|
61
|
+
let type = 'human';
|
|
62
|
+
if (message._getType() === 'ai') {
|
|
63
|
+
type = 'ai';
|
|
64
|
+
}
|
|
65
|
+
else if (message._getType() === 'system') {
|
|
66
|
+
type = 'system';
|
|
67
|
+
}
|
|
68
|
+
await fetch(this.apiUrl, {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
headers,
|
|
71
|
+
body: JSON.stringify({
|
|
72
|
+
action: 'add',
|
|
73
|
+
sessionId: this.sessionId,
|
|
74
|
+
message: {
|
|
75
|
+
type,
|
|
76
|
+
content: message.content,
|
|
77
|
+
},
|
|
78
|
+
}),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error('Failed to add message to API:', error);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async addMessages(messages) {
|
|
86
|
+
for (const message of messages) {
|
|
87
|
+
await this.addMessage(message);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async clear() {
|
|
91
|
+
try {
|
|
92
|
+
const headers = {
|
|
93
|
+
'Content-Type': 'application/json',
|
|
94
|
+
};
|
|
95
|
+
if (this.apiKey) {
|
|
96
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
97
|
+
}
|
|
98
|
+
await fetch(this.apiUrl, {
|
|
99
|
+
method: 'POST',
|
|
100
|
+
headers,
|
|
101
|
+
body: JSON.stringify({
|
|
102
|
+
action: 'clear',
|
|
103
|
+
sessionId: this.sessionId,
|
|
104
|
+
}),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.error('Failed to clear messages from API:', error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.ApiMemoryHistory = ApiMemoryHistory;
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpTWVtb3J5SGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2Rlcy9NZW1vcnkvQXBpTWVtb3J5SGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFFc0M7QUFDdEMsdURBS2tDO0FBaUJsQyxNQUFhLGdCQUFpQixTQUFRLHlDQUEwQjtJQU85RCxZQUFZLE1BQThCO1FBQ3hDLEtBQUssRUFBRSxDQUFDO1FBUFYsaUJBQVksR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBUXZELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV0QyxNQUFNLE9BQU8sR0FBMkI7Z0JBQ3RDLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkMsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckQsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUs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QkFBa0I7YUFDbkMsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckQsQ0FBQztZQUVELE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU87Z0JBQ1AsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ25CLE1BQU0sRUFBRSxPQUFPO29CQUNmLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztpQkFDMUIsQ0FBQzthQUNILENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdEhELDRDQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VMaXN0Q2hhdE1lc3NhZ2VIaXN0b3J5LFxufSBmcm9tICdAbGFuZ2NoYWluL2NvcmUvY2hhdF9oaXN0b3J5JztcbmltcG9ydCB7XG4gIEJhc2VNZXNzYWdlLFxuICBIdW1hbk1lc3NhZ2UsXG4gIEFJTWVzc2FnZSxcbiAgU3lzdGVtTWVzc2FnZSxcbn0gZnJvbSAnQGxhbmdjaGFpbi9jb3JlL21lc3NhZ2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlNZW1vcnlIaXN0b3J5Q29uZmlnIHtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBhcGlLZXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBcGlNZXNzYWdlIHtcbiAgdHlwZTogJ2h1bWFuJyB8ICdhaScgfCAnc3lzdGVtJztcbiAgY29udGVudDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQXBpUmVzcG9uc2Uge1xuICBtZXNzYWdlcz86IEFwaU1lc3NhZ2VbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaU1lbW9yeUhpc3RvcnkgZXh0ZW5kcyBCYXNlTGlzdENoYXRNZXNzYWdlSGlzdG9yeSB7XG4gIGxjX25hbWVzcGFjZSA9IFsnbGFuZ2NoYWluJywgJ3N0b3JlcycsICdtZXNzYWdlJywgJ2FwaSddO1xuXG4gIHByaXZhdGUgYXBpVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgYXBpS2V5Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQXBpTWVtb3J5SGlzdG9yeUNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcGlVcmwgPSBjb25maWcuYXBpVXJsO1xuICAgIHRoaXMuc2Vzc2lvbklkID0gY29uZmlnLnNlc3Npb25JZDtcbiAgICB0aGlzLmFwaUtleSA9IGNvbmZpZy5hcGlLZXk7XG4gIH1cblxuICBhc3luYyBnZXRNZXNzYWdlcygpOiBQcm9taXNlPEJhc2VNZXNzYWdlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLmFwaVVybCk7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnc2Vzc2lvbklkJywgdGhpcy5zZXNzaW9uSWQpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2FjdGlvbicsICdnZXQnKTtcblxuICAgICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5hcGlLZXkpIHtcbiAgICAgICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJlYXJlciAke3RoaXMuYXBpS2V5fWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLnRvU3RyaW5nKCksIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYE1lbW9yeSBBUEkgZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgQXBpUmVzcG9uc2U7XG4gICAgICBjb25zdCBtZXNzYWdlczogQXBpTWVzc2FnZVtdID0gZGF0YS5tZXNzYWdlcyB8fCBbXTtcblxuICAgICAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobXNnKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdodW1hbic6XG4gICAgICAgICAgICByZXR1cm4gbmV3IEh1bWFuTWVzc2FnZShtc2cuY29udGVudCk7XG4gICAgICAgICAgY2FzZSAnYWknOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBSU1lc3NhZ2UobXNnLmNvbnRlbnQpO1xuICAgICAgICAgIGNhc2UgJ3N5c3RlbSc6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN5c3RlbU1lc3NhZ2UobXNnLmNvbnRlbnQpO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbmV3IEh1bWFuTWVzc2FnZShtc2cuY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2V0IG1lc3NhZ2VzIGZyb20gQVBJOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhZGRNZXNzYWdlKG1lc3NhZ2U6IEJhc2VNZXNzYWdlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuYXBpS2V5KSB7XG4gICAgICAgIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0aGlzLmFwaUtleX1gO1xuICAgICAgfVxuXG4gICAgICBsZXQgdHlwZTogJ2h1bWFuJyB8ICdhaScgfCAnc3lzdGVtJyA9ICdodW1hbic7XG4gICAgICBpZiAobWVzc2FnZS5fZ2V0VHlwZSgpID09PSAnYWknKSB7XG4gICAgICAgIHR5cGUgPSAnYWknO1xuICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLl9nZXRUeXBlKCkgPT09ICdzeXN0ZW0nKSB7XG4gICAgICAgIHR5cGUgPSAnc3lzdGVtJztcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZmV0Y2godGhpcy5hcGlVcmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5zZXNzaW9uSWQsXG4gICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UuY29udGVudCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gYWRkIG1lc3NhZ2UgdG8gQVBJOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhZGRNZXNzYWdlcyhtZXNzYWdlczogQmFzZU1lc3NhZ2VbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykge1xuICAgICAgYXdhaXQgdGhpcy5hZGRNZXNzYWdlKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsZWFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmFwaUtleSkge1xuICAgICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7dGhpcy5hcGlLZXl9YDtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZmV0Y2godGhpcy5hcGlVcmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgICAgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb25JZCxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNsZWFyIG1lc3NhZ2VzIGZyb20gQVBJOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, ISupplyDataFunctions, SupplyData } from 'n8n-workflow';
|
|
2
|
+
export declare class Memory implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Memory = void 0;
|
|
4
|
+
const memory_1 = require("@langchain/classic/memory");
|
|
5
|
+
const ApiMemoryHistory_1 = require("./ApiMemoryHistory");
|
|
6
|
+
class Memory {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'Memory',
|
|
10
|
+
name: 'memory',
|
|
11
|
+
icon: 'fa:brain',
|
|
12
|
+
group: ['transform'],
|
|
13
|
+
version: 1,
|
|
14
|
+
description: 'Custom memory node with external API support',
|
|
15
|
+
defaults: {
|
|
16
|
+
name: 'Memory',
|
|
17
|
+
},
|
|
18
|
+
codex: {
|
|
19
|
+
categories: ['AI'],
|
|
20
|
+
subcategories: {
|
|
21
|
+
AI: ['Memory'],
|
|
22
|
+
},
|
|
23
|
+
resources: {
|
|
24
|
+
primaryDocumentation: [
|
|
25
|
+
{
|
|
26
|
+
url: 'https://github.com/filipexyz/n8n-nodes-memory',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
inputs: [],
|
|
32
|
+
outputs: ['ai_memory'],
|
|
33
|
+
outputNames: ['Memory'],
|
|
34
|
+
properties: [
|
|
35
|
+
{
|
|
36
|
+
displayName: 'API URL',
|
|
37
|
+
name: 'apiUrl',
|
|
38
|
+
type: 'string',
|
|
39
|
+
default: '',
|
|
40
|
+
required: true,
|
|
41
|
+
description: 'URL of the memory API (e.g., n8n webhook URL)',
|
|
42
|
+
placeholder: 'https://your-n8n.com/webhook/memory',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
displayName: 'Session ID',
|
|
46
|
+
name: 'sessionId',
|
|
47
|
+
type: 'string',
|
|
48
|
+
default: '={{ $json.sessionId }}',
|
|
49
|
+
required: true,
|
|
50
|
+
description: 'Unique identifier for the conversation session',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
displayName: 'API Key',
|
|
54
|
+
name: 'apiKey',
|
|
55
|
+
type: 'string',
|
|
56
|
+
typeOptions: {
|
|
57
|
+
password: true,
|
|
58
|
+
},
|
|
59
|
+
default: '',
|
|
60
|
+
description: 'Optional API key for authentication',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
displayName: 'Context Window Length',
|
|
64
|
+
name: 'contextWindowLength',
|
|
65
|
+
type: 'number',
|
|
66
|
+
default: 10,
|
|
67
|
+
description: 'Number of previous messages to include as context',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async supplyData(itemIndex) {
|
|
73
|
+
const apiUrl = this.getNodeParameter('apiUrl', itemIndex);
|
|
74
|
+
const sessionId = this.getNodeParameter('sessionId', itemIndex);
|
|
75
|
+
const apiKey = this.getNodeParameter('apiKey', itemIndex, '');
|
|
76
|
+
const contextWindowLength = this.getNodeParameter('contextWindowLength', itemIndex, 10);
|
|
77
|
+
const chatHistory = new ApiMemoryHistory_1.ApiMemoryHistory({
|
|
78
|
+
apiUrl,
|
|
79
|
+
sessionId,
|
|
80
|
+
apiKey: apiKey || undefined,
|
|
81
|
+
});
|
|
82
|
+
const memory = new memory_1.BufferWindowMemory({
|
|
83
|
+
memoryKey: 'chat_history',
|
|
84
|
+
chatHistory,
|
|
85
|
+
returnMessages: true,
|
|
86
|
+
inputKey: 'input',
|
|
87
|
+
outputKey: 'output',
|
|
88
|
+
k: contextWindowLength,
|
|
89
|
+
});
|
|
90
|
+
return {
|
|
91
|
+
response: memory,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.Memory = Memory;
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5Lm5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm9kZXMvTWVtb3J5L01lbW9yeS5ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHNEQUErRDtBQUMvRCx5REFBc0Q7QUFFdEQsTUFBYSxNQUFNO0lBQW5CO1FBQ0UsZ0JBQVcsR0FBeUI7WUFDbEMsV0FBVyxFQUFFLFFBQVE7WUFDckIsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsVUFBVTtZQUNoQixLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDcEIsT0FBTyxFQUFFLENBQUM7WUFDVixXQUFXLEVBQUUsOENBQThDO1lBQzNELFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsUUFBUTthQUNmO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDbEIsYUFBYSxFQUFFO29CQUNiLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDZjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1Qsb0JBQW9CLEVBQUU7d0JBQ3BCOzRCQUNFLEdBQUcsRUFBRSwrQ0FBK0M7eUJBQ3JEO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxDQUFDLFdBQW9CLENBQUM7WUFDL0IsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxXQUFXLEVBQUUsU0FBUztvQkFDdEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLElBQUk7b0JBQ2QsV0FBVyxFQUFFLCtDQUErQztvQkFDNUQsV0FBVyxFQUFFLHFDQUFxQztpQkFDbkQ7Z0JBQ0Q7b0JBQ0UsV0FBVyxFQUFFLFlBQVk7b0JBQ3pCLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxRQUFRLEVBQUUsSUFBSTtvQkFDZCxXQUFXLEVBQUUsZ0RBQWdEO2lCQUM5RDtnQkFDRDtvQkFDRSxXQUFXLEVBQUUsU0FBUztvQkFDdEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsV0FBVyxFQUFFO3dCQUNYLFFBQVEsRUFBRSxJQUFJO3FCQUNmO29CQUNELE9BQU8sRUFBRSxFQUFFO29CQUNYLFdBQVcsRUFBRSxxQ0FBcUM7aUJBQ25EO2dCQUNEO29CQUNFLFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLElBQUksRUFBRSxxQkFBcUI7b0JBQzNCLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSxFQUFFO29CQUNYLFdBQVcsRUFBRSxtREFBbUQ7aUJBQ2pFO2FBQ0Y7U0FDRixDQUFDO0lBa0NKLENBQUM7SUFoQ0MsS0FBSyxDQUFDLFVBQVUsQ0FFZCxTQUFpQjtRQUVqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBVyxDQUFDO1FBQ3BFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFXLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFXLENBQUM7UUFDeEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQy9DLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsRUFBRSxDQUNPLENBQUM7UUFFWixNQUFNLFdBQVcsR0FBRyxJQUFJLG1DQUFnQixDQUFDO1lBQ3ZDLE1BQU07WUFDTixTQUFTO1lBQ1QsTUFBTSxFQUFFLE1BQU0sSUFBSSxTQUFTO1NBQzVCLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUksMkJBQWtCLENBQUM7WUFDcEMsU0FBUyxFQUFFLGNBQWM7WUFDekIsV0FBVztZQUNYLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFNBQVMsRUFBRSxRQUFRO1lBQ25CLENBQUMsRUFBRSxtQkFBbUI7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLFFBQVEsRUFBRSxNQUFNO1NBQ2pCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqR0Qsd0JBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBJTm9kZVR5cGUsXG4gIElOb2RlVHlwZURlc2NyaXB0aW9uLFxuICBJU3VwcGx5RGF0YUZ1bmN0aW9ucyxcbiAgU3VwcGx5RGF0YSxcbn0gZnJvbSAnbjhuLXdvcmtmbG93JztcbmltcG9ydCB7IEJ1ZmZlcldpbmRvd01lbW9yeSB9IGZyb20gJ0BsYW5nY2hhaW4vY2xhc3NpYy9tZW1vcnknO1xuaW1wb3J0IHsgQXBpTWVtb3J5SGlzdG9yeSB9IGZyb20gJy4vQXBpTWVtb3J5SGlzdG9yeSc7XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnkgaW1wbGVtZW50cyBJTm9kZVR5cGUge1xuICBkZXNjcmlwdGlvbjogSU5vZGVUeXBlRGVzY3JpcHRpb24gPSB7XG4gICAgZGlzcGxheU5hbWU6ICdNZW1vcnknLFxuICAgIG5hbWU6ICdtZW1vcnknLFxuICAgIGljb246ICdmYTpicmFpbicsXG4gICAgZ3JvdXA6IFsndHJhbnNmb3JtJ10sXG4gICAgdmVyc2lvbjogMSxcbiAgICBkZXNjcmlwdGlvbjogJ0N1c3RvbSBtZW1vcnkgbm9kZSB3aXRoIGV4dGVybmFsIEFQSSBzdXBwb3J0JyxcbiAgICBkZWZhdWx0czoge1xuICAgICAgbmFtZTogJ01lbW9yeScsXG4gICAgfSxcbiAgICBjb2RleDoge1xuICAgICAgY2F0ZWdvcmllczogWydBSSddLFxuICAgICAgc3ViY2F0ZWdvcmllczoge1xuICAgICAgICBBSTogWydNZW1vcnknXSxcbiAgICAgIH0sXG4gICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgcHJpbWFyeURvY3VtZW50YXRpb246IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2dpdGh1Yi5jb20vZmlsaXBleHl6L244bi1ub2Rlcy1tZW1vcnknLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW5wdXRzOiBbXSxcbiAgICBvdXRwdXRzOiBbJ2FpX21lbW9yeScgYXMgY29uc3RdLFxuICAgIG91dHB1dE5hbWVzOiBbJ01lbW9yeSddLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgZGlzcGxheU5hbWU6ICdBUEkgVVJMJyxcbiAgICAgICAgbmFtZTogJ2FwaVVybCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVVJMIG9mIHRoZSBtZW1vcnkgQVBJIChlLmcuLCBuOG4gd2ViaG9vayBVUkwpJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdodHRwczovL3lvdXItbjhuLmNvbS93ZWJob29rL21lbW9yeScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkaXNwbGF5TmFtZTogJ1Nlc3Npb24gSUQnLFxuICAgICAgICBuYW1lOiAnc2Vzc2lvbklkJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6ICc9e3sgJGpzb24uc2Vzc2lvbklkIH19JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb24gc2Vzc2lvbicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkaXNwbGF5TmFtZTogJ0FQSSBLZXknLFxuICAgICAgICBuYW1lOiAnYXBpS2V5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHR5cGVPcHRpb25zOiB7XG4gICAgICAgICAgcGFzc3dvcmQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIEFQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiAnQ29udGV4dCBXaW5kb3cgTGVuZ3RoJyxcbiAgICAgICAgbmFtZTogJ2NvbnRleHRXaW5kb3dMZW5ndGgnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdDogMTAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTnVtYmVyIG9mIHByZXZpb3VzIG1lc3NhZ2VzIHRvIGluY2x1ZGUgYXMgY29udGV4dCcsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgYXN5bmMgc3VwcGx5RGF0YShcbiAgICB0aGlzOiBJU3VwcGx5RGF0YUZ1bmN0aW9ucyxcbiAgICBpdGVtSW5kZXg6IG51bWJlclxuICApOiBQcm9taXNlPFN1cHBseURhdGE+IHtcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmdldE5vZGVQYXJhbWV0ZXIoJ2FwaVVybCcsIGl0ZW1JbmRleCkgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IHRoaXMuZ2V0Tm9kZVBhcmFtZXRlcignc2Vzc2lvbklkJywgaXRlbUluZGV4KSBhcyBzdHJpbmc7XG4gICAgY29uc3QgYXBpS2V5ID0gdGhpcy5nZXROb2RlUGFyYW1ldGVyKCdhcGlLZXknLCBpdGVtSW5kZXgsICcnKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgY29udGV4dFdpbmRvd0xlbmd0aCA9IHRoaXMuZ2V0Tm9kZVBhcmFtZXRlcihcbiAgICAgICdjb250ZXh0V2luZG93TGVuZ3RoJyxcbiAgICAgIGl0ZW1JbmRleCxcbiAgICAgIDEwXG4gICAgKSBhcyBudW1iZXI7XG5cbiAgICBjb25zdCBjaGF0SGlzdG9yeSA9IG5ldyBBcGlNZW1vcnlIaXN0b3J5KHtcbiAgICAgIGFwaVVybCxcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIGFwaUtleTogYXBpS2V5IHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1lbW9yeSA9IG5ldyBCdWZmZXJXaW5kb3dNZW1vcnkoe1xuICAgICAgbWVtb3J5S2V5OiAnY2hhdF9oaXN0b3J5JyxcbiAgICAgIGNoYXRIaXN0b3J5LFxuICAgICAgcmV0dXJuTWVzc2FnZXM6IHRydWUsXG4gICAgICBpbnB1dEtleTogJ2lucHV0JyxcbiAgICAgIG91dHB1dEtleTogJ291dHB1dCcsXG4gICAgICBrOiBjb250ZXh0V2luZG93TGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3BvbnNlOiBtZW1vcnksXG4gICAgfTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,8 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-memory",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "Custom memory node for n8n AI Agent",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Custom memory node for n8n AI Agent with external API support",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package",
|
|
7
|
+
"n8n",
|
|
8
|
+
"langchain",
|
|
9
|
+
"memory",
|
|
10
|
+
"ai"
|
|
11
|
+
],
|
|
5
12
|
"license": "MIT",
|
|
6
13
|
"author": "Filipe Labs",
|
|
7
|
-
"repository":
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/filipexyz/n8n-nodes-memory"
|
|
17
|
+
},
|
|
18
|
+
"main": "dist/index.js",
|
|
19
|
+
"types": "dist/index.d.ts",
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"dev": "tsc --watch",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist"
|
|
27
|
+
],
|
|
28
|
+
"n8n": {
|
|
29
|
+
"n8nNodesApiVersion": 1,
|
|
30
|
+
"nodes": [
|
|
31
|
+
"dist/nodes/Memory/Memory.node.js"
|
|
32
|
+
],
|
|
33
|
+
"credentials": []
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/node": "^25.0.3",
|
|
37
|
+
"typescript": "^5.9.3"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"n8n-workflow": "^2.2.1"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@langchain/classic": "^1.0.7",
|
|
44
|
+
"@langchain/core": "^1.1.0",
|
|
45
|
+
"langchain": "^1.1.1"
|
|
46
|
+
}
|
|
8
47
|
}
|