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.
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,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
|
|
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":
|
|
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
|
}
|