n8n-nodes-memory 0.0.1 → 0.2.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.
@@ -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 { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Memory implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Memory = void 0;
4
+ class ApiMemoryAdapter {
5
+ constructor(http, apiUrl, sessionId, apiKey) {
6
+ this.http = http;
7
+ this.apiUrl = apiUrl;
8
+ this.sessionId = sessionId;
9
+ this.apiKey = apiKey;
10
+ }
11
+ getHeaders() {
12
+ const headers = {
13
+ 'Content-Type': 'application/json',
14
+ };
15
+ if (this.apiKey) {
16
+ headers['Authorization'] = `Bearer ${this.apiKey}`;
17
+ }
18
+ return headers;
19
+ }
20
+ async getMessages() {
21
+ try {
22
+ const res = await this.http.helpers.httpRequest({
23
+ url: this.apiUrl,
24
+ method: 'GET',
25
+ headers: this.getHeaders(),
26
+ qs: {
27
+ action: 'get',
28
+ sessionId: this.sessionId,
29
+ },
30
+ });
31
+ const messages = res?.messages ?? [];
32
+ return messages.map((m) => ({
33
+ role: m.type === 'human' ? 'user' : m.type === 'ai' ? 'assistant' : m.type,
34
+ content: m.content,
35
+ }));
36
+ }
37
+ catch (error) {
38
+ console.error('Memory API getMessages error:', error);
39
+ return [];
40
+ }
41
+ }
42
+ async addMessages(messages) {
43
+ try {
44
+ for (const msg of messages) {
45
+ const type = msg.role === 'user' ? 'human' : msg.role === 'assistant' ? 'ai' : msg.role;
46
+ await this.http.helpers.httpRequest({
47
+ url: this.apiUrl,
48
+ method: 'POST',
49
+ headers: this.getHeaders(),
50
+ body: {
51
+ action: 'add',
52
+ sessionId: this.sessionId,
53
+ message: {
54
+ type,
55
+ content: msg.content,
56
+ },
57
+ },
58
+ });
59
+ }
60
+ }
61
+ catch (error) {
62
+ console.error('Memory API addMessages error:', error);
63
+ }
64
+ }
65
+ async clear() {
66
+ try {
67
+ await this.http.helpers.httpRequest({
68
+ url: this.apiUrl,
69
+ method: 'POST',
70
+ headers: this.getHeaders(),
71
+ body: {
72
+ action: 'clear',
73
+ sessionId: this.sessionId,
74
+ },
75
+ });
76
+ return true;
77
+ }
78
+ catch (error) {
79
+ console.error('Memory API clear error:', error);
80
+ return false;
81
+ }
82
+ }
83
+ }
84
+ class Memory {
85
+ constructor() {
86
+ this.description = {
87
+ displayName: 'Memory API',
88
+ name: 'memoryApi',
89
+ icon: 'fa:brain',
90
+ group: ['transform'],
91
+ version: 1,
92
+ subtitle: 'External API Memory',
93
+ description: 'Use an external API as chat memory storage',
94
+ defaults: {
95
+ name: 'Memory API',
96
+ },
97
+ codex: {
98
+ categories: ['AI'],
99
+ subcategories: {
100
+ AI: ['Memory'],
101
+ },
102
+ resources: {
103
+ primaryDocumentation: [
104
+ {
105
+ url: 'https://github.com/filipexyz/n8n-nodes-memory',
106
+ },
107
+ ],
108
+ },
109
+ },
110
+ inputs: [],
111
+ outputs: ['ai_memory'],
112
+ outputNames: ['Memory'],
113
+ properties: [
114
+ {
115
+ displayName: 'API URL',
116
+ name: 'apiUrl',
117
+ type: 'string',
118
+ default: '',
119
+ required: true,
120
+ description: 'URL of the memory API (e.g., n8n webhook URL)',
121
+ placeholder: 'https://your-n8n.com/webhook/memory',
122
+ },
123
+ {
124
+ displayName: 'Session ID',
125
+ name: 'sessionId',
126
+ type: 'string',
127
+ default: '={{ $json.sessionId }}',
128
+ required: true,
129
+ description: 'Unique identifier for the conversation session',
130
+ },
131
+ {
132
+ displayName: 'API Key',
133
+ name: 'apiKey',
134
+ type: 'string',
135
+ typeOptions: {
136
+ password: true,
137
+ },
138
+ default: '',
139
+ description: 'Optional API key for authentication',
140
+ },
141
+ ],
142
+ };
143
+ }
144
+ async execute() {
145
+ const apiUrl = this.getNodeParameter('apiUrl', 0);
146
+ const sessionId = this.getNodeParameter('sessionId', 0);
147
+ const apiKey = this.getNodeParameter('apiKey', 0) || undefined;
148
+ const adapter = new ApiMemoryAdapter(this, apiUrl, sessionId, apiKey);
149
+ const item = {
150
+ json: {},
151
+ context: {
152
+ ai: {
153
+ memory: adapter,
154
+ },
155
+ },
156
+ };
157
+ return [[item]];
158
+ }
159
+ }
160
+ exports.Memory = Memory;
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5Lm5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm9kZXMvTWVtb3J5L01lbW9yeS5ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBLE1BQU0sZ0JBQWdCO0lBQ3BCLFlBQ1UsSUFBdUIsRUFDdkIsTUFBYyxFQUNkLFNBQWlCLEVBQ2pCLE1BQWU7UUFIZixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQ3RCLENBQUM7SUFFSSxVQUFVO1FBQ2hCLE1BQU0sT0FBTyxHQUEyQjtZQUN0QyxjQUFjLEVBQUUsa0JBQWtCO1NBQ25DLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2dCQUM5QyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ2hCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUMxQixFQUFFLEVBQUU7b0JBQ0YsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2lCQUMxQjthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ3JDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQW9DLEVBQUUsRUFB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QU0sT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEUsTUFBTSxJQUFJLEdBQXVCO1lBQy9CLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRTtvQkFDRixNQUFNLEVBQUUsT0FBTztpQkFDaEI7YUFDSztTQUNULENBQUM7UUFFRixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQTdFRCx3QkE2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIElFeGVjdXRlRnVuY3Rpb25zLFxuICBJTm9kZUV4ZWN1dGlvbkRhdGEsXG4gIElOb2RlVHlwZSxcbiAgSU5vZGVUeXBlRGVzY3JpcHRpb24sXG59IGZyb20gJ244bi13b3JrZmxvdyc7XG5cbmludGVyZmFjZSBBcGlNZXNzYWdlIHtcbiAgcm9sZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmNsYXNzIEFwaU1lbW9yeUFkYXB0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IElFeGVjdXRlRnVuY3Rpb25zLFxuICAgIHByaXZhdGUgYXBpVXJsOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzZXNzaW9uSWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGFwaUtleT86IHN0cmluZyxcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0SGVhZGVycygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9O1xuICAgIGlmICh0aGlzLmFwaUtleSkge1xuICAgICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJlYXJlciAke3RoaXMuYXBpS2V5fWA7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWVzc2FnZXMoKTogUHJvbWlzZTxBcGlNZXNzYWdlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5odHRwLmhlbHBlcnMuaHR0cFJlcXVlc3Qoe1xuICAgICAgICB1cmw6IHRoaXMuYXBpVXJsLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcbiAgICAgICAgcXM6IHtcbiAgICAgICAgICBhY3Rpb246ICdnZXQnLFxuICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5zZXNzaW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbWVzc2FnZXMgPSByZXM/Lm1lc3NhZ2VzID8/IFtdO1xuICAgICAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobTogeyB0eXBlOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICByb2xlOiBtLnR5cGUgPT09ICdodW1hbicgPyAndXNlcicgOiBtLnR5cGUgPT09ICdhaScgPyAnYXNzaXN0YW50JyA6IG0udHlwZSxcbiAgICAgICAgY29udGVudDogbS5jb250ZW50LFxuICAgICAgfSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdNZW1vcnkgQVBJIGdldE1lc3NhZ2VzIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhZGRNZXNzYWdlcyhtZXNzYWdlczogQXJyYXk8eyByb2xlOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9Pik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlcykge1xuICAgICAgICBjb25zdCB0eXBlID0gbXNnLnJvbGUgPT09ICd1c2VyJyA/ICdodW1hbicgOiBtc2cucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYWknIDogbXNnLnJvbGU7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cC5oZWxwZXJzLmh0dHBSZXF1ZXN0KHtcbiAgICAgICAgICB1cmw6IHRoaXMuYXBpVXJsLFxuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2FkZCcsXG4gICAgICAgICAgICBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbklkLFxuICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICBjb250ZW50OiBtc2cuY29udGVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01lbW9yeSBBUEkgYWRkTWVzc2FnZXMgZXJyb3I6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsZWFyKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmh0dHAuaGVscGVycy5odHRwUmVxdWVzdCh7XG4gICAgICAgIHVybDogdGhpcy5hcGlVcmwsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIGFjdGlvbjogJ2NsZWFyJyxcbiAgICAgICAgICBzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbklkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignTWVtb3J5IEFQSSBjbGVhciBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnkgaW1wbGVtZW50cyBJTm9kZVR5cGUge1xuICBkZXNjcmlwdGlvbjogSU5vZGVUeXBlRGVzY3JpcHRpb24gPSB7XG4gICAgZGlzcGxheU5hbWU6ICdNZW1vcnkgQVBJJyxcbiAgICBuYW1lOiAnbWVtb3J5QXBpJyxcbiAgICBpY29uOiAnZmE6YnJhaW4nLFxuICAgIGdyb3VwOiBbJ3RyYW5zZm9ybSddLFxuICAgIHZlcnNpb246IDEsXG4gICAgc3VidGl0bGU6ICdFeHRlcm5hbCBBUEkgTWVtb3J5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1VzZSBhbiBleHRlcm5hbCBBUEkgYXMgY2hhdCBtZW1vcnkgc3RvcmFnZScsXG4gICAgZGVmYXVsdHM6IHtcbiAgICAgIG5hbWU6ICdNZW1vcnkgQVBJJyxcbiAgICB9LFxuICAgIGNvZGV4OiB7XG4gICAgICBjYXRlZ29yaWVzOiBbJ0FJJ10sXG4gICAgICBzdWJjYXRlZ29yaWVzOiB7XG4gICAgICAgIEFJOiBbJ01lbW9yeSddLFxuICAgICAgfSxcbiAgICAgIHJlc291cmNlczoge1xuICAgICAgICBwcmltYXJ5RG9jdW1lbnRhdGlvbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9maWxpcGV4eXovbjhuLW5vZGVzLW1lbW9yeScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnB1dHM6IFtdLFxuICAgIG91dHB1dHM6IFsnYWlfbWVtb3J5J10sXG4gICAgb3V0cHV0TmFtZXM6IFsnTWVtb3J5J10sXG4gICAgcHJvcGVydGllczogW1xuICAgICAge1xuICAgICAgICBkaXNwbGF5TmFtZTogJ0FQSSBVUkwnLFxuICAgICAgICBuYW1lOiAnYXBpVXJsJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdVUkwgb2YgdGhlIG1lbW9yeSBBUEkgKGUuZy4sIG44biB3ZWJob29rIFVSTCknLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ2h0dHBzOi8veW91ci1uOG4uY29tL3dlYmhvb2svbWVtb3J5JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiAnU2Vzc2lvbiBJRCcsXG4gICAgICAgIG5hbWU6ICdzZXNzaW9uSWQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVmYXVsdDogJz17eyAkanNvbi5zZXNzaW9uSWQgfX0nLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbnZlcnNhdGlvbiBzZXNzaW9uJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiAnQVBJIEtleScsXG4gICAgICAgIG5hbWU6ICdhcGlLZXknLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgdHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICBwYXNzd29yZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb24nLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGFzeW5jIGV4ZWN1dGUodGhpczogSUV4ZWN1dGVGdW5jdGlvbnMpOiBQcm9taXNlPElOb2RlRXhlY3V0aW9uRGF0YVtdW10+IHtcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmdldE5vZGVQYXJhbWV0ZXIoJ2FwaVVybCcsIDApIGFzIHN0cmluZztcbiAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmdldE5vZGVQYXJhbWV0ZXIoJ3Nlc3Npb25JZCcsIDApIGFzIHN0cmluZztcbiAgICBjb25zdCBhcGlLZXkgPSAodGhpcy5nZXROb2RlUGFyYW1ldGVyKCdhcGlLZXknLCAwKSBhcyBzdHJpbmcpIHx8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgQXBpTWVtb3J5QWRhcHRlcih0aGlzLCBhcGlVcmwsIHNlc3Npb25JZCwgYXBpS2V5KTtcblxuICAgIGNvbnN0IGl0ZW06IElOb2RlRXhlY3V0aW9uRGF0YSA9IHtcbiAgICAgIGpzb246IHt9LFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBhaToge1xuICAgICAgICAgIG1lbW9yeTogYWRhcHRlcixcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgYW55LFxuICAgIH07XG5cbiAgICByZXR1cm4gW1tpdGVtXV07XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,8 +1,42 @@
1
1
  {
2
2
  "name": "n8n-nodes-memory",
3
- "version": "0.0.1",
4
- "description": "Custom memory node for n8n AI Agent",
3
+ "version": "0.2.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": "https://github.com/filipexyz/n8n-nodes-memory"
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
+ }
8
42
  }