@ai.ntellect/core 0.7.13 → 0.8.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/graph/controller.d.ts +3 -3
- package/dist/graph/controller.d.ts.map +1 -1
- package/dist/graph/controller.js +14 -5
- package/dist/graph/controller.js.map +1 -1
- package/dist/graph/event-manager.d.ts +9 -1
- package/dist/graph/event-manager.d.ts.map +1 -1
- package/dist/graph/event-manager.js +115 -37
- package/dist/graph/event-manager.js.map +1 -1
- package/dist/graph/index.d.ts +21 -2
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +60 -11
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/node.d.ts +0 -24
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +2 -71
- package/dist/graph/node.js.map +1 -1
- package/dist/graph/observer.d.ts +6 -87
- package/dist/graph/observer.d.ts.map +1 -1
- package/dist/graph/observer.js +3 -116
- package/dist/graph/observer.js.map +1 -1
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -6
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.ts +10 -1
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js.map +1 -1
- package/dist/modules/agent/agent.d.ts +35 -0
- package/dist/modules/agent/agent.d.ts.map +1 -0
- package/dist/modules/agent/agent.js +106 -0
- package/dist/modules/agent/agent.js.map +1 -0
- package/dist/modules/agent/base/executor.d.ts +51 -0
- package/dist/modules/agent/base/executor.d.ts.map +1 -0
- package/dist/modules/agent/base/executor.js +66 -0
- package/dist/modules/agent/base/executor.js.map +1 -0
- package/dist/modules/agent/base/index.d.ts +30 -0
- package/dist/modules/agent/base/index.d.ts.map +1 -0
- package/dist/modules/agent/base/index.js +100 -0
- package/dist/modules/agent/base/index.js.map +1 -0
- package/dist/modules/agent/generic-assistant.d.ts +20 -0
- package/dist/modules/agent/generic-assistant.d.ts.map +1 -0
- package/dist/modules/agent/generic-assistant.js +89 -0
- package/dist/modules/agent/generic-assistant.js.map +1 -0
- package/dist/modules/agent/generic-executor.d.ts +57 -0
- package/dist/modules/agent/generic-executor.d.ts.map +1 -0
- package/dist/modules/agent/generic-executor.js +200 -0
- package/dist/modules/agent/generic-executor.js.map +1 -0
- package/dist/modules/agent/llm-factory.d.ts +19 -0
- package/dist/modules/agent/llm-factory.d.ts.map +1 -0
- package/dist/modules/agent/llm-factory.js +56 -0
- package/dist/modules/agent/llm-factory.js.map +1 -0
- package/dist/modules/agent/prompt-builder.d.ts +35 -0
- package/dist/modules/agent/prompt-builder.d.ts.map +1 -0
- package/dist/modules/agent/prompt-builder.js +76 -0
- package/dist/modules/agent/prompt-builder.js.map +1 -0
- package/dist/modules/memory/adapters/in-memory/index.d.ts.map +1 -1
- package/dist/modules/memory/adapters/in-memory/index.js +4 -3
- package/dist/modules/memory/adapters/in-memory/index.js.map +1 -1
- package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +1 -1
- package/dist/modules/memory/adapters/meilisearch/index.js +7 -4
- package/dist/modules/memory/adapters/meilisearch/index.js.map +1 -1
- package/dist/modules/memory/adapters/redis/index.d.ts.map +1 -1
- package/dist/modules/memory/adapters/redis/index.js +2 -1
- package/dist/modules/memory/adapters/redis/index.js.map +1 -1
- package/dist/modules/nlp/engine.d.ts +126 -0
- package/dist/modules/nlp/engine.d.ts.map +1 -0
- package/dist/modules/nlp/engine.js +300 -0
- package/dist/modules/nlp/engine.js.map +1 -0
- package/dist/modules/nlp/index.d.ts +27 -0
- package/dist/modules/nlp/index.d.ts.map +1 -0
- package/dist/modules/nlp/index.js +56 -0
- package/dist/modules/nlp/index.js.map +1 -0
- package/dist/types/agent.d.ts +233 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +29 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +81 -18
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/generate-action-schema.d.ts.map +1 -1
- package/graph/controller.ts +21 -10
- package/graph/event-manager.ts +135 -42
- package/graph/index.ts +58 -5
- package/graph/node.ts +2 -104
- package/graph/observer.ts +9 -215
- package/index.ts +2 -7
- package/interfaces/index.ts +12 -0
- package/modules/agent/agent.ts +108 -0
- package/modules/agent/base/executor.ts +100 -0
- package/modules/agent/base/index.ts +99 -0
- package/modules/agent/generic-assistant.ts +90 -0
- package/modules/agent/generic-executor.ts +259 -0
- package/modules/agent/llm-factory.ts +47 -0
- package/modules/agent/prompt-builder.ts +78 -0
- package/modules/memory/adapters/in-memory/index.ts +4 -3
- package/modules/memory/adapters/meilisearch/index.ts +7 -4
- package/modules/memory/adapters/redis/index.ts +2 -1
- package/modules/nlp/engine.ts +325 -0
- package/modules/nlp/index.ts +45 -0
- package/package.json +5 -2
- package/test/graph/controller.test.ts +18 -14
- package/test/graph/index.test.ts +10 -8
- package/test/graph/node.test.ts +18 -14
- package/types/agent.ts +174 -0
- package/types/index.ts +84 -18
@@ -0,0 +1,126 @@
|
|
1
|
+
import { ActionHandler, NLPConfig } from "../../types";
|
2
|
+
/**
|
3
|
+
* NLP Engine for processing natural language commands
|
4
|
+
* @example
|
5
|
+
* const engine = await NLPEngine.create({
|
6
|
+
* corpus: require('./corpus.json'),
|
7
|
+
* responses: require('./responses.json'),
|
8
|
+
* entities: require('./entities.json')
|
9
|
+
* });
|
10
|
+
*
|
11
|
+
* engine.addAction('transferTokens', async (data) => {
|
12
|
+
* // Handle transfer logic
|
13
|
+
* });
|
14
|
+
*
|
15
|
+
* const response = await engine.process('transfer 5 ETH');
|
16
|
+
*/
|
17
|
+
export declare class NLPEngine {
|
18
|
+
private manager;
|
19
|
+
private responses;
|
20
|
+
private intentHandlers;
|
21
|
+
constructor();
|
22
|
+
/**
|
23
|
+
* Creates and initializes a new NLP Engine
|
24
|
+
*/
|
25
|
+
static create(config: NLPConfig): Promise<NLPEngine>;
|
26
|
+
/**
|
27
|
+
* Initializes the NLP engine with configuration
|
28
|
+
*/
|
29
|
+
private init;
|
30
|
+
/**
|
31
|
+
* Registers entities for Named Entity Recognition (NER)
|
32
|
+
* @private
|
33
|
+
* @param {Record<string, any>} entities - Entity definitions
|
34
|
+
*/
|
35
|
+
private registerEntities;
|
36
|
+
/**
|
37
|
+
* Adds an action handler for a specific intent
|
38
|
+
* @param {string} name - Intent name
|
39
|
+
* @param {ActionHandler} handler - Action handler function
|
40
|
+
*/
|
41
|
+
addAction(name: string, handler: ActionHandler): void;
|
42
|
+
/**
|
43
|
+
* Creates and loads a pre-trained NLP Engine
|
44
|
+
*/
|
45
|
+
static loadFromModel(modelPath: string, responses?: Record<string, any>): Promise<NLPEngine>;
|
46
|
+
/**
|
47
|
+
* Loads a pre-trained model and configures default actions
|
48
|
+
*/
|
49
|
+
private loadModel;
|
50
|
+
/**
|
51
|
+
* Setup default actions to handle responses
|
52
|
+
*/
|
53
|
+
private setupDefaultActions;
|
54
|
+
/**
|
55
|
+
* Execute a single action
|
56
|
+
*/
|
57
|
+
private executeAction;
|
58
|
+
/**
|
59
|
+
* Processes natural language input text
|
60
|
+
* @param {string} input - Input text to process
|
61
|
+
* @returns {Promise<any>} Processing result with intent, entities and response
|
62
|
+
*/
|
63
|
+
process(input: string): Promise<any>;
|
64
|
+
/**
|
65
|
+
* Trains the NLP model with current corpus
|
66
|
+
* @returns {Promise<void>}
|
67
|
+
*/
|
68
|
+
train(): Promise<void>;
|
69
|
+
/**
|
70
|
+
* Exports the trained model
|
71
|
+
* @param {boolean} [minified=true] - Whether to minify the exported model
|
72
|
+
* @returns {string} Exported model as string
|
73
|
+
*/
|
74
|
+
export(minified?: boolean): string;
|
75
|
+
/**
|
76
|
+
* Imports a previously trained model
|
77
|
+
* @param {string} data - Model data to import
|
78
|
+
*/
|
79
|
+
import(data: string): void;
|
80
|
+
/**
|
81
|
+
* Saves the current model to a file
|
82
|
+
* @param {string} [path='./model.json'] - Path to save the model
|
83
|
+
* @returns {Promise<void>}
|
84
|
+
*/
|
85
|
+
saveModel(path?: string): Promise<void>;
|
86
|
+
/**
|
87
|
+
* Formats response using template and context
|
88
|
+
*/
|
89
|
+
private formatResponse;
|
90
|
+
/**
|
91
|
+
* Gets entity value from NLP result
|
92
|
+
* @param {any} data - NLP processing result
|
93
|
+
* @param {string} entityName - Name of the entity to extract
|
94
|
+
* @returns {string|undefined} Entity value if found
|
95
|
+
*/
|
96
|
+
getEntity(data: any, entityName: string): string | undefined;
|
97
|
+
/**
|
98
|
+
* Gets entity option from NLP result
|
99
|
+
* @param {any} data - NLP processing result
|
100
|
+
* @param {string} entityName - Name of the entity to extract
|
101
|
+
* @returns {string|undefined} Entity option if found
|
102
|
+
*/
|
103
|
+
getEntityOption(data: any, entityName: string): string | undefined;
|
104
|
+
/**
|
105
|
+
* Gets recipient entity from NLP result
|
106
|
+
* @param {any} data - NLP processing result
|
107
|
+
* @returns {string|undefined} Recipient value if found
|
108
|
+
*/
|
109
|
+
getRecipient(data: any): string | undefined;
|
110
|
+
/**
|
111
|
+
* Gets current responses configuration
|
112
|
+
* @returns {Record<string, any>} Current responses
|
113
|
+
*/
|
114
|
+
getResponses(): Record<string, any>;
|
115
|
+
/**
|
116
|
+
* Gets current corpus configuration
|
117
|
+
* @returns {any} Current corpus
|
118
|
+
*/
|
119
|
+
getCorpus(): any;
|
120
|
+
/**
|
121
|
+
* Gets current entities configuration
|
122
|
+
* @returns {any} Current entities configuration
|
123
|
+
*/
|
124
|
+
getEntities(): any;
|
125
|
+
}
|
126
|
+
//# sourceMappingURL=engine.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../modules/nlp/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIvD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAqC;;IAM3D;;OAEG;WACU,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1D;;OAEG;YACW,IAAI;IAiClB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIrD;;OAEG;WACU,aAAa,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,OAAO,CAAC,SAAS,CAAC;IAOrB;;OAEG;YACW,SAAS;IAkBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;YACW,aAAa;IAS3B;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM;IAmB3B;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;OAIG;IACI,MAAM,CAAC,QAAQ,UAAO,GAAG,MAAM;IAItC;;;OAGG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;OAIG;IACU,SAAS,CAAC,IAAI,SAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK5D;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKlE;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAK3C;;;OAGG;IACI,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAI1C;;;OAGG;IACI,SAAS,IAAI,GAAG;IAIvB;;;OAGG;IACI,WAAW,IAAI,GAAG;CAG1B"}
|
@@ -0,0 +1,300 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.NLPEngine = void 0;
|
13
|
+
const { dockStart } = require("@nlpjs/basic");
|
14
|
+
/**
|
15
|
+
* NLP Engine for processing natural language commands
|
16
|
+
* @example
|
17
|
+
* const engine = await NLPEngine.create({
|
18
|
+
* corpus: require('./corpus.json'),
|
19
|
+
* responses: require('./responses.json'),
|
20
|
+
* entities: require('./entities.json')
|
21
|
+
* });
|
22
|
+
*
|
23
|
+
* engine.addAction('transferTokens', async (data) => {
|
24
|
+
* // Handle transfer logic
|
25
|
+
* });
|
26
|
+
*
|
27
|
+
* const response = await engine.process('transfer 5 ETH');
|
28
|
+
*/
|
29
|
+
class NLPEngine {
|
30
|
+
constructor() {
|
31
|
+
this.intentHandlers = {};
|
32
|
+
this.responses = {};
|
33
|
+
}
|
34
|
+
/**
|
35
|
+
* Creates and initializes a new NLP Engine
|
36
|
+
*/
|
37
|
+
static create(config) {
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
39
|
+
const engine = new NLPEngine();
|
40
|
+
yield engine.init(config);
|
41
|
+
return engine;
|
42
|
+
});
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* Initializes the NLP engine with configuration
|
46
|
+
*/
|
47
|
+
init(_a) {
|
48
|
+
return __awaiter(this, arguments, void 0, function* ({ corpus, responses, entities, language = "en", threshold = 0.5, }) {
|
49
|
+
const dock = yield dockStart({
|
50
|
+
settings: {
|
51
|
+
nlp: {
|
52
|
+
forceNER: true,
|
53
|
+
languages: [language],
|
54
|
+
corpora: corpus ? [corpus] : undefined,
|
55
|
+
},
|
56
|
+
ner: { threshold },
|
57
|
+
},
|
58
|
+
use: ["Basic", "LangEn"],
|
59
|
+
});
|
60
|
+
this.manager = dock.get("nlp");
|
61
|
+
this.responses = responses || {};
|
62
|
+
if (corpus) {
|
63
|
+
yield this.manager.addCorpus(corpus);
|
64
|
+
}
|
65
|
+
if (entities) {
|
66
|
+
this.registerEntities(entities);
|
67
|
+
}
|
68
|
+
yield this.manager.train();
|
69
|
+
});
|
70
|
+
}
|
71
|
+
/**
|
72
|
+
* Registers entities for Named Entity Recognition (NER)
|
73
|
+
* @private
|
74
|
+
* @param {Record<string, any>} entities - Entity definitions
|
75
|
+
*/
|
76
|
+
registerEntities(entities) {
|
77
|
+
Object.entries(entities).forEach(([name, data]) => {
|
78
|
+
if (data.options) {
|
79
|
+
Object.entries(data.options).forEach(([option, texts]) => {
|
80
|
+
this.manager.addNerRuleOptionTexts("en", name, option, texts);
|
81
|
+
});
|
82
|
+
}
|
83
|
+
else if (data.regex) {
|
84
|
+
this.manager.addNerRegexRule("en", name, data.regex);
|
85
|
+
}
|
86
|
+
else if (data.trim) {
|
87
|
+
data.trim.forEach((trimRule) => {
|
88
|
+
if (trimRule.position === "afterLast") {
|
89
|
+
trimRule.words.forEach((word) => {
|
90
|
+
this.manager.addNerAfterLastCondition("en", name, word);
|
91
|
+
});
|
92
|
+
}
|
93
|
+
else if (trimRule.position === "betweenLast") {
|
94
|
+
this.manager.addNerBetweenLastCondition("en", name, trimRule.leftWords, trimRule.rightWords);
|
95
|
+
}
|
96
|
+
});
|
97
|
+
}
|
98
|
+
});
|
99
|
+
}
|
100
|
+
/**
|
101
|
+
* Adds an action handler for a specific intent
|
102
|
+
* @param {string} name - Intent name
|
103
|
+
* @param {ActionHandler} handler - Action handler function
|
104
|
+
*/
|
105
|
+
addAction(name, handler) {
|
106
|
+
this.intentHandlers[name] = handler;
|
107
|
+
}
|
108
|
+
/**
|
109
|
+
* Creates and loads a pre-trained NLP Engine
|
110
|
+
*/
|
111
|
+
static loadFromModel(modelPath, responses) {
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
113
|
+
const engine = new NLPEngine();
|
114
|
+
engine.responses = responses || {};
|
115
|
+
yield engine.loadModel(modelPath);
|
116
|
+
return engine;
|
117
|
+
});
|
118
|
+
}
|
119
|
+
/**
|
120
|
+
* Loads a pre-trained model and configures default actions
|
121
|
+
*/
|
122
|
+
loadModel(modelPath) {
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
124
|
+
const dock = yield dockStart({
|
125
|
+
settings: {
|
126
|
+
nlp: {
|
127
|
+
forceNER: true,
|
128
|
+
languages: ["en"],
|
129
|
+
},
|
130
|
+
},
|
131
|
+
use: ["Basic", "LangEn"],
|
132
|
+
});
|
133
|
+
this.manager = dock.get("nlp");
|
134
|
+
yield this.manager.load(modelPath);
|
135
|
+
// Configure default actions handler
|
136
|
+
this.setupDefaultActions();
|
137
|
+
});
|
138
|
+
}
|
139
|
+
/**
|
140
|
+
* Setup default actions to handle responses
|
141
|
+
*/
|
142
|
+
setupDefaultActions() {
|
143
|
+
this.manager.onIntent = (data) => __awaiter(this, void 0, void 0, function* () {
|
144
|
+
var _a;
|
145
|
+
// Execute registered action if exists
|
146
|
+
if (((_a = data.actions) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
147
|
+
for (const actionData of data.actions) {
|
148
|
+
const result = yield this.executeAction(actionData, data);
|
149
|
+
if (result) {
|
150
|
+
data.actionResult = result;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
// Format response if answer exists
|
155
|
+
if (data.answer && this.responses[data.answer]) {
|
156
|
+
data.jsonResponse = this.formatResponse(this.responses[data.answer], data.actionResult || {});
|
157
|
+
}
|
158
|
+
return data;
|
159
|
+
});
|
160
|
+
}
|
161
|
+
/**
|
162
|
+
* Execute a single action
|
163
|
+
*/
|
164
|
+
executeAction(actionData, context) {
|
165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
166
|
+
const { action, parameters } = actionData;
|
167
|
+
const handler = this.manager.actions[action];
|
168
|
+
if (handler) {
|
169
|
+
return handler(context);
|
170
|
+
}
|
171
|
+
return null;
|
172
|
+
});
|
173
|
+
}
|
174
|
+
/**
|
175
|
+
* Processes natural language input text
|
176
|
+
* @param {string} input - Input text to process
|
177
|
+
* @returns {Promise<any>} Processing result with intent, entities and response
|
178
|
+
*/
|
179
|
+
process(input) {
|
180
|
+
return __awaiter(this, void 0, void 0, function* () {
|
181
|
+
const result = yield this.manager.process("en", input);
|
182
|
+
console.log("NLP Engine Result:", result);
|
183
|
+
// Si une action est définie, exécuter le handler
|
184
|
+
if (result.intent) {
|
185
|
+
const handler = this.intentHandlers[result.intent.split(".")[1]];
|
186
|
+
if (handler) {
|
187
|
+
const handlerResult = yield handler(result);
|
188
|
+
return Object.assign(Object.assign({}, result), handlerResult);
|
189
|
+
}
|
190
|
+
}
|
191
|
+
return result;
|
192
|
+
});
|
193
|
+
}
|
194
|
+
/**
|
195
|
+
* Trains the NLP model with current corpus
|
196
|
+
* @returns {Promise<void>}
|
197
|
+
*/
|
198
|
+
train() {
|
199
|
+
return __awaiter(this, void 0, void 0, function* () {
|
200
|
+
yield this.manager.train();
|
201
|
+
});
|
202
|
+
}
|
203
|
+
/**
|
204
|
+
* Exports the trained model
|
205
|
+
* @param {boolean} [minified=true] - Whether to minify the exported model
|
206
|
+
* @returns {string} Exported model as string
|
207
|
+
*/
|
208
|
+
export(minified = true) {
|
209
|
+
return this.manager.export(minified);
|
210
|
+
}
|
211
|
+
/**
|
212
|
+
* Imports a previously trained model
|
213
|
+
* @param {string} data - Model data to import
|
214
|
+
*/
|
215
|
+
import(data) {
|
216
|
+
this.manager.import(data);
|
217
|
+
}
|
218
|
+
/**
|
219
|
+
* Saves the current model to a file
|
220
|
+
* @param {string} [path='./model.json'] - Path to save the model
|
221
|
+
* @returns {Promise<void>}
|
222
|
+
*/
|
223
|
+
saveModel() {
|
224
|
+
return __awaiter(this, arguments, void 0, function* (path = "./model.json") {
|
225
|
+
this.manager.save();
|
226
|
+
this.manager.save("./model.json");
|
227
|
+
});
|
228
|
+
}
|
229
|
+
/**
|
230
|
+
* Formats response using template and context
|
231
|
+
*/
|
232
|
+
formatResponse(template, context) {
|
233
|
+
const response = JSON.parse(JSON.stringify(template));
|
234
|
+
// Format data fields
|
235
|
+
if (response.data) {
|
236
|
+
Object.keys(response.data).forEach((key) => {
|
237
|
+
if (context[key] !== undefined) {
|
238
|
+
response.data[key] = context[key];
|
239
|
+
}
|
240
|
+
});
|
241
|
+
}
|
242
|
+
return response;
|
243
|
+
}
|
244
|
+
/**
|
245
|
+
* Gets entity value from NLP result
|
246
|
+
* @param {any} data - NLP processing result
|
247
|
+
* @param {string} entityName - Name of the entity to extract
|
248
|
+
* @returns {string|undefined} Entity value if found
|
249
|
+
*/
|
250
|
+
getEntity(data, entityName) {
|
251
|
+
var _a;
|
252
|
+
const entity = (_a = data.entities) === null || _a === void 0 ? void 0 : _a.find((e) => e.entity === entityName);
|
253
|
+
return entity ? entity.utteranceText : undefined;
|
254
|
+
}
|
255
|
+
/**
|
256
|
+
* Gets entity option from NLP result
|
257
|
+
* @param {any} data - NLP processing result
|
258
|
+
* @param {string} entityName - Name of the entity to extract
|
259
|
+
* @returns {string|undefined} Entity option if found
|
260
|
+
*/
|
261
|
+
getEntityOption(data, entityName) {
|
262
|
+
var _a;
|
263
|
+
const entity = (_a = data.entities) === null || _a === void 0 ? void 0 : _a.find((e) => e.entity === entityName);
|
264
|
+
return entity ? entity.option : undefined;
|
265
|
+
}
|
266
|
+
/**
|
267
|
+
* Gets recipient entity from NLP result
|
268
|
+
* @param {any} data - NLP processing result
|
269
|
+
* @returns {string|undefined} Recipient value if found
|
270
|
+
*/
|
271
|
+
getRecipient(data) {
|
272
|
+
var _a;
|
273
|
+
const toEntity = (_a = data.entities) === null || _a === void 0 ? void 0 : _a.find((e) => e.entity === "to");
|
274
|
+
return toEntity ? toEntity.utteranceText : undefined;
|
275
|
+
}
|
276
|
+
/**
|
277
|
+
* Gets current responses configuration
|
278
|
+
* @returns {Record<string, any>} Current responses
|
279
|
+
*/
|
280
|
+
getResponses() {
|
281
|
+
return this.responses;
|
282
|
+
}
|
283
|
+
/**
|
284
|
+
* Gets current corpus configuration
|
285
|
+
* @returns {any} Current corpus
|
286
|
+
*/
|
287
|
+
getCorpus() {
|
288
|
+
return this.manager.corpora;
|
289
|
+
}
|
290
|
+
/**
|
291
|
+
* Gets current entities configuration
|
292
|
+
* @returns {any} Current entities configuration
|
293
|
+
*/
|
294
|
+
getEntities() {
|
295
|
+
var _a;
|
296
|
+
return ((_a = this.manager.nerManager) === null || _a === void 0 ? void 0 : _a.rules) || {};
|
297
|
+
}
|
298
|
+
}
|
299
|
+
exports.NLPEngine = NLPEngine;
|
300
|
+
//# sourceMappingURL=engine.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../modules/nlp/engine.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { NLPNodeConfig } from "@/interfaces";
|
2
|
+
import { ZodSchema } from "zod";
|
3
|
+
/**
|
4
|
+
* NLPNode class handles natural language processing operations with type-safe schema validation
|
5
|
+
* @template T - Zod schema type for validation
|
6
|
+
*/
|
7
|
+
export declare class NLPNode<T extends ZodSchema> {
|
8
|
+
private config;
|
9
|
+
private engine;
|
10
|
+
/**
|
11
|
+
* Creates an instance of NLPNode
|
12
|
+
* @param {NLPNodeConfig<T>} config - Configuration object for the NLP node
|
13
|
+
*/
|
14
|
+
constructor(config: NLPNodeConfig<T>);
|
15
|
+
/**
|
16
|
+
* Initializes the NLP engine and sets up intent handlers
|
17
|
+
* @returns {Promise<void>}
|
18
|
+
*/
|
19
|
+
initialize(): Promise<void>;
|
20
|
+
/**
|
21
|
+
* Processes the input text through the NLP engine
|
22
|
+
* @param {string} input - Text to be processed
|
23
|
+
* @returns {Promise<any>} - Processing result from the engine
|
24
|
+
*/
|
25
|
+
process(input: string): Promise<any>;
|
26
|
+
}
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../modules/nlp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGhC;;;GAGG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,SAAS;IAO1B,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,MAAM,CAAa;IAE3B;;;OAGG;gBACiB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5C;;;OAGG;IACG,UAAU;IAYhB;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM;CAM5B"}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.NLPNode = void 0;
|
13
|
+
const engine_1 = require("./engine");
|
14
|
+
/**
|
15
|
+
* NLPNode class handles natural language processing operations with type-safe schema validation
|
16
|
+
* @template T - Zod schema type for validation
|
17
|
+
*/
|
18
|
+
class NLPNode {
|
19
|
+
/**
|
20
|
+
* Creates an instance of NLPNode
|
21
|
+
* @param {NLPNodeConfig<T>} config - Configuration object for the NLP node
|
22
|
+
*/
|
23
|
+
constructor(config) {
|
24
|
+
this.config = config;
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Initializes the NLP engine and sets up intent handlers
|
28
|
+
* @returns {Promise<void>}
|
29
|
+
*/
|
30
|
+
initialize() {
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
32
|
+
this.engine = yield engine_1.NLPEngine.create(this.config.nlpConfig);
|
33
|
+
console.log("Loaded engine");
|
34
|
+
if (this.config.intentHandlers) {
|
35
|
+
Object.entries(this.config.intentHandlers).forEach(([intent, handler]) => {
|
36
|
+
this.engine.addAction(intent, handler);
|
37
|
+
});
|
38
|
+
}
|
39
|
+
});
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* Processes the input text through the NLP engine
|
43
|
+
* @param {string} input - Text to be processed
|
44
|
+
* @returns {Promise<any>} - Processing result from the engine
|
45
|
+
*/
|
46
|
+
process(input) {
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
48
|
+
console.log("NLP Node processing:", input);
|
49
|
+
const result = yield this.engine.process(input);
|
50
|
+
console.log("NLP Node result:", result);
|
51
|
+
return result;
|
52
|
+
});
|
53
|
+
}
|
54
|
+
}
|
55
|
+
exports.NLPNode = NLPNode;
|
56
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../modules/nlp/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qCAAqC;AAErC;;;GAGG;AACH,MAAa,OAAO;IAGlB;;;OAGG;IACH,YAAoB,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IAAG,CAAC;IAEhD;;;OAGG;IACG,UAAU;;YACd,IAAI,CAAC,MAAM,GAAG,MAAM,kBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAChD,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE;oBACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACzC,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;IAED;;;;OAIG;IACG,OAAO,CAAC,KAAa;;YACzB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AApCD,0BAoCC"}
|