@hexabot-ai/api 3.2.1-alpha.0 → 3.2.2-alpha.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/README.md +1 -1
- package/dist/config/i18n/en/global_settings.json +7 -0
- package/dist/config/i18n/fr/global_settings.json +7 -0
- package/dist/helper/helper.controller.js +2 -3
- package/dist/helper/helper.controller.js.map +1 -1
- package/dist/helper/helper.service.d.ts +0 -1
- package/dist/helper/helper.service.js +2 -10
- package/dist/helper/helper.service.js.map +1 -1
- package/dist/helper/index.d.ts +0 -1
- package/dist/helper/index.js +0 -1
- package/dist/helper/index.js.map +1 -1
- package/dist/helper/types.d.ts +0 -26
- package/dist/helper/types.js +1 -14
- package/dist/helper/types.js.map +1 -1
- package/dist/license/services/license.service.js +2 -2
- package/dist/license/services/license.service.js.map +1 -1
- package/dist/setting/default.settings.d.ts +5 -20
- package/dist/setting/default.settings.js +10 -63
- package/dist/setting/default.settings.js.map +1 -1
- package/dist/static/assets/{cssMode-CMCoflUW.js → cssMode-Cl7JZDYi.js} +1 -1
- package/dist/static/assets/{freemarker2-xrKobLW0.js → freemarker2-Ddcsv82z.js} +1 -1
- package/dist/static/assets/{handlebars-B001x0dl.js → handlebars-BggcQSEE.js} +1 -1
- package/dist/static/assets/{html-HBIKRg6X.js → html-FN76dqvq.js} +1 -1
- package/dist/static/assets/{htmlMode-D_O4-Va4.js → htmlMode-BWRIcbsi.js} +1 -1
- package/dist/static/assets/{index-3E05C6mQ.css → index-DKozh3Um.css} +1 -1
- package/dist/static/assets/{index-Ca-L_Bhg.js → index-DOga3_TI.js} +1998 -1998
- package/dist/static/assets/{javascript-BtGFPGHv.js → javascript-1EusMo1M.js} +1 -1
- package/dist/static/assets/{jsonMode-Cgpaamyt.js → jsonMode-WNbHOGWa.js} +1 -1
- package/dist/static/assets/{liquid-NlTZnkhA.js → liquid-D45yUZ7g.js} +1 -1
- package/dist/static/assets/{lspLanguageFeatures-CxA7MNHw.js → lspLanguageFeatures-uwS-CJEU.js} +1 -1
- package/dist/static/assets/{mdx-CO_P9sLj.js → mdx-PpOJ5pZ0.js} +1 -1
- package/dist/static/assets/{python-p9cJ1T8V.js → python-B3PwxkAn.js} +1 -1
- package/dist/static/assets/{razor-b6daQ7Gs.js → razor-D0t-tcQz.js} +1 -1
- package/dist/static/assets/{tsMode-qFS4LhFG.js → tsMode-DEMWhFCv.js} +1 -1
- package/dist/static/assets/{typescript-CVF7hkOS.js → typescript-DUe9LVDn.js} +1 -1
- package/dist/static/assets/{xml-3_BTeML3.js → xml-Dqap22Hx.js} +1 -1
- package/dist/static/assets/{yaml-CdBNONt5.js → yaml-Suu2-EtH.js} +1 -1
- package/dist/static/index.html +2 -2
- package/dist/static/locales/en/translation.json +16 -334
- package/dist/static/locales/fr/translation.json +16 -332
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/test/fixtures/setting.js +1 -1
- package/dist/utils/test/fixtures/setting.js.map +1 -1
- package/dist/utils/test/providers/setting-service.provider.d.ts +0 -1
- package/dist/utils/test/providers/setting-service.provider.js +4 -15
- package/dist/utils/test/providers/setting-service.provider.js.map +1 -1
- package/dist/websocket/services/socket-event-dispatcher.service.js +6 -3
- package/dist/websocket/services/socket-event-dispatcher.service.js.map +1 -1
- package/package.json +4 -4
- package/src/config/i18n/en/global_settings.json +7 -0
- package/src/config/i18n/fr/global_settings.json +7 -0
- package/src/helper/helper.controller.ts +3 -4
- package/src/helper/helper.service.ts +3 -23
- package/src/helper/index.ts +0 -2
- package/src/helper/types.ts +0 -57
- package/src/license/services/license.service.spec.ts +13 -13
- package/src/license/services/license.service.ts +3 -3
- package/src/setting/default.settings.ts +10 -63
- package/src/utils/test/fixtures/setting.ts +1 -1
- package/src/utils/test/providers/setting-service.provider.ts +4 -19
- package/src/websocket/services/socket-event-dispatcher.service.ts +7 -5
- package/dist/config/i18n/en/chatbot_settings.json +0 -17
- package/dist/config/i18n/fr/chatbot_settings.json +0 -17
- package/dist/helper/lib/base-llm-helper.d.ts +0 -10
- package/dist/helper/lib/base-llm-helper.js +0 -16
- package/dist/helper/lib/base-llm-helper.js.map +0 -1
- package/src/config/i18n/en/chatbot_settings.json +0 -17
- package/src/config/i18n/fr/chatbot_settings.json +0 -17
- package/src/helper/lib/base-llm-helper.ts +0 -74
|
@@ -6,7 +6,7 @@ const safeRandom_1 = require("../../helpers/safeRandom");
|
|
|
6
6
|
const UNUSED_HELPER_GROUP = String((0, safeRandom_1.getRandom)());
|
|
7
7
|
exports.settingFixtures = [
|
|
8
8
|
{
|
|
9
|
-
group: '
|
|
9
|
+
group: 'global_settings',
|
|
10
10
|
label: 'default_storage_helper',
|
|
11
11
|
value: 'local-storage',
|
|
12
12
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setting.js","sourceRoot":"","sources":["../../../../src/utils/test/fixtures/setting.ts"],"names":[],"mappings":";;;AASA,6EAAqE;AACrE,yDAAuD;AAEvD,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAA,sBAAS,GAAE,CAAC,CAAC;AAEnC,QAAA,eAAe,GAAuB;IACjD;QACE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"setting.js","sourceRoot":"","sources":["../../../../src/utils/test/fixtures/setting.ts"],"names":[],"mappings":";;;AASA,6EAAqE;AACrE,yDAAuD;AAEvD,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAA,sBAAS,GAAE,CAAC,CAAC;AAEnC,QAAA,eAAe,GAAuB;IACjD;QACE,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,eAAe;KACvB;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,yBAAyB;QAChC,KAAK,EAAE,mBAAmB;KAC3B;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,mBAAmB;KAC3B;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,sBAAsB;KAC9B;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,0BAA0B;KAClC;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,mBAAmB;KAC3B;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,EAAE;KACV;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,aAAa;KACrB;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,SAAS;KACjB;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,IAAI;KACZ;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,GAAG,IAAA,sBAAS,GAAE,EAAE;QACvB,KAAK,EAAE,EAAE;KACV;IACD;QACE,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,eAAe;KACvB;CACF,CAAC;AAEK,MAAM,6BAA6B,GAAG,KAAK,EAAE,UAAsB,EAAE,EAAE;IAC5E,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,iCAAgB,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,uBAAe,CAAC,CAAC;IACpD,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC,CAAC;AAJW,QAAA,6BAA6B,iCAIxC"}
|
|
@@ -5,24 +5,13 @@ const setting_1 = require("../../../setting");
|
|
|
5
5
|
exports.SettingServiceProvider = {
|
|
6
6
|
provide: setting_1.SettingService,
|
|
7
7
|
useValue: {
|
|
8
|
-
default_nlu_helper: 'llm-nlu',
|
|
9
8
|
getSettings: jest.fn().mockResolvedValue({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
fallback_message: ['Global fallback message'],
|
|
9
|
+
global_settings: {
|
|
10
|
+
license_key: '',
|
|
11
|
+
default_storage_helper: 'local-storage',
|
|
14
12
|
},
|
|
15
13
|
}),
|
|
16
|
-
find: jest.fn().
|
|
17
|
-
{
|
|
18
|
-
translatable: true,
|
|
19
|
-
group: 'default',
|
|
20
|
-
value: 'Global fallback message',
|
|
21
|
-
label: 'fallback_message',
|
|
22
|
-
},
|
|
23
|
-
].filter((s) => criteria && 'translatable' in criteria
|
|
24
|
-
? s.translatable === criteria.translatable
|
|
25
|
-
: true)),
|
|
14
|
+
find: jest.fn().mockReturnValue([]),
|
|
26
15
|
},
|
|
27
16
|
};
|
|
28
17
|
//# sourceMappingURL=setting-service.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setting-service.provider.js","sourceRoot":"","sources":["../../../../src/utils/test/providers/setting-service.provider.ts"],"names":[],"mappings":";;;AAMA,8CAA2C;AAE9B,QAAA,sBAAsB,GAAG;IACpC,OAAO,EAAE,wBAAc;IACvB,QAAQ,EAAE;QACR,
|
|
1
|
+
{"version":3,"file":"setting-service.provider.js","sourceRoot":"","sources":["../../../../src/utils/test/providers/setting-service.provider.ts"],"names":[],"mappings":";;;AAMA,8CAA2C;AAE9B,QAAA,sBAAsB,GAAG;IACpC,OAAO,EAAE,wBAAc;IACvB,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YACvC,eAAe,EAAE;gBACf,WAAW,EAAE,EAAE;gBACf,sBAAsB,EAAE,eAAe;aACxC;SACF,CAAC;QACF,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;KACpC;CACF,CAAC"}
|
|
@@ -103,10 +103,13 @@ let SocketEventDispatcherService = class SocketEventDispatcherService {
|
|
|
103
103
|
return '/';
|
|
104
104
|
}
|
|
105
105
|
const withLeadingSlash = path.startsWith('/') ? path : `/${path}`;
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
let end = withLeadingSlash.length;
|
|
107
|
+
while (end > 1 && withLeadingSlash.charCodeAt(end - 1) === 0x2f) {
|
|
108
|
+
end--;
|
|
109
|
+
}
|
|
110
|
+
return end < withLeadingSlash.length
|
|
111
|
+
? withLeadingSlash.slice(0, end)
|
|
108
112
|
: withLeadingSlash;
|
|
109
|
-
return withoutTrailingSlash;
|
|
110
113
|
}
|
|
111
114
|
matchPath(pattern, path) {
|
|
112
115
|
const normalizedPattern = this.normalizePath(pattern);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-event-dispatcher.service.js","sourceRoot":"","sources":["../../../src/websocket/services/socket-event-dispatcher.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"socket-event-dispatcher.service.js","sourceRoot":"","sources":["../../../src/websocket/services/socket-event-dispatcher.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hexabot-ai/api",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.2-alpha.0",
|
|
5
5
|
"description": "Hexabot is a solution for creating and managing chatbots across multiple channels, leveraging AI for advanced conversational capabilities. It provides a user-friendly interface for building, training, and deploying chatbots with integrated support for various messaging platforms.",
|
|
6
6
|
"author": "Hexastack",
|
|
7
7
|
"license": "FCL-1.0-ALv2",
|
|
@@ -90,8 +90,8 @@
|
|
|
90
90
|
"uuid": "^9.0.1",
|
|
91
91
|
"yaml": "^2.5.0",
|
|
92
92
|
"zod": "^4.3.6",
|
|
93
|
-
"@hexabot-ai/
|
|
94
|
-
"@hexabot-ai/
|
|
93
|
+
"@hexabot-ai/agentic": "3.1.2-alpha.0",
|
|
94
|
+
"@hexabot-ai/types": "3.0.2-alpha.0"
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
97
|
"@compodoc/compodoc": "^1.1.31",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
"tsconfig-paths": "^4.2.0",
|
|
140
140
|
"tsconfig-paths-jest": "^0.0.1",
|
|
141
141
|
"typescript": "^5.1.3",
|
|
142
|
-
"@hexabot-ai/frontend": "3.2.
|
|
142
|
+
"@hexabot-ai/frontend": "3.2.2-alpha.0"
|
|
143
143
|
},
|
|
144
144
|
"optionalDependencies": {
|
|
145
145
|
"@css-inline/css-inline-linux-arm64-musl": "^0.14.1",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Global settings": "Global settings",
|
|
3
|
+
"Default storage helper": "Default storage helper",
|
|
4
|
+
"Helper used to persist workflow data by default.": "Helper used to persist workflow data by default.",
|
|
5
|
+
"License key": "License key",
|
|
6
|
+
"Provide the license key associated with your subscription. Learn more about available plans at https://hexabot.ai/pricing#pricing.": "Provide the license key associated with your subscription. Learn more about available plans at https://hexabot.ai/pricing#pricing."
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Global settings": "Paramètres globaux",
|
|
3
|
+
"Default storage helper": "Utilitaire de stockage par défaut",
|
|
4
|
+
"Helper used to persist workflow data by default.": "Utilitaire utilisé par défaut pour persister les données des workflows.",
|
|
5
|
+
"License key": "Clé de licence",
|
|
6
|
+
"Provide the license key associated with your subscription. Learn more about available plans at https://hexabot.ai/pricing#pricing.": "Indiquez la clé de licence liée à votre abonnement. Découvrez nos offres sur https://hexabot.ai/pricing#pricing."
|
|
7
|
+
}
|
|
@@ -16,18 +16,17 @@ export class HelperController {
|
|
|
16
16
|
constructor(private readonly helperService: HelperService) {}
|
|
17
17
|
|
|
18
18
|
private normalizeHelperType(type: string): HelperType {
|
|
19
|
-
|
|
20
|
-
if (!Object.values(HelperType).includes(normalizedType as HelperType)) {
|
|
19
|
+
if (!Object.values(HelperType).includes(type as HelperType)) {
|
|
21
20
|
throw new BadRequestException(`Unknown helper type "${type}"`);
|
|
22
21
|
}
|
|
23
22
|
|
|
24
|
-
return
|
|
23
|
+
return type as HelperType;
|
|
25
24
|
}
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* Retrieves a list of helpers.
|
|
29
28
|
*
|
|
30
|
-
* @returns An array of objects containing the name of each
|
|
29
|
+
* @returns An array of objects containing the name of each helper.
|
|
31
30
|
*/
|
|
32
31
|
@Roles('public')
|
|
33
32
|
@Get(':type')
|
|
@@ -108,30 +108,10 @@ export class HelperService {
|
|
|
108
108
|
return helper as InstanceType<C>;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
/**
|
|
112
|
-
* Get default LLM helper.
|
|
113
|
-
*
|
|
114
|
-
* @deprecated Use getDefaultHelper() instead
|
|
115
|
-
* @returns - The helper
|
|
116
|
-
*/
|
|
117
|
-
async getDefaultLlmHelper() {
|
|
118
|
-
const settings = await this.settingService.getSettings();
|
|
119
|
-
const defaultHelper = this.get(
|
|
120
|
-
HelperType.LLM,
|
|
121
|
-
settings.chatbot_settings.default_llm_helper as HelperName,
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
if (!defaultHelper) {
|
|
125
|
-
throw new Error(`Unable to find default LLM helper`);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return defaultHelper;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
111
|
/**
|
|
132
112
|
* Get default helper for a specific type.
|
|
133
113
|
*
|
|
134
|
-
* @param type - The type of the helper
|
|
114
|
+
* @param type - The type of the helper.
|
|
135
115
|
* @returns - The helper
|
|
136
116
|
*/
|
|
137
117
|
async getDefaultHelper<T extends HelperType>(type: T) {
|
|
@@ -143,11 +123,11 @@ export class HelperService {
|
|
|
143
123
|
|
|
144
124
|
const settings = await this.settingService.getSettings();
|
|
145
125
|
const defaultHelperKey = `default_${type}_helper`;
|
|
146
|
-
if (!(defaultHelperKey in settings.
|
|
126
|
+
if (!(defaultHelperKey in settings.global_settings)) {
|
|
147
127
|
throw new Error(`Default ${type.toUpperCase()} helper setting not found`);
|
|
148
128
|
}
|
|
149
129
|
|
|
150
|
-
const defaultHelperName = settings.
|
|
130
|
+
const defaultHelperName = settings.global_settings[
|
|
151
131
|
defaultHelperKey
|
|
152
132
|
] as HelperName;
|
|
153
133
|
const defaultHelper = this.get<T>(type, defaultHelperName);
|
package/src/helper/index.ts
CHANGED
package/src/helper/types.ts
CHANGED
|
@@ -7,65 +7,9 @@
|
|
|
7
7
|
import { AnySetting, ExtensionSetting } from '@/setting/types';
|
|
8
8
|
|
|
9
9
|
import BaseHelper from './lib/base-helper';
|
|
10
|
-
import { BaseLlmHelper } from './lib/base-llm-helper';
|
|
11
10
|
import { BaseStorageHelper } from './lib/base-storage-helper';
|
|
12
11
|
|
|
13
|
-
export namespace LLM {
|
|
14
|
-
/**
|
|
15
|
-
* Schema is used to define the format of input/output data.
|
|
16
|
-
* Represents a select subset of an OpenAPI 3.0 schema object.
|
|
17
|
-
* More fields may be added in the future as needed.
|
|
18
|
-
* @public
|
|
19
|
-
*/
|
|
20
|
-
export interface ResponseSchema {
|
|
21
|
-
/**
|
|
22
|
-
* Optional. The type of the property. {@link
|
|
23
|
-
* SchemaType}.
|
|
24
|
-
*/
|
|
25
|
-
type?: ResponseSchemaType;
|
|
26
|
-
/** Optional. The format of the property. */
|
|
27
|
-
format?: string;
|
|
28
|
-
/** Optional. The description of the property. */
|
|
29
|
-
description?: string;
|
|
30
|
-
/** Optional. Whether the property is nullable. */
|
|
31
|
-
nullable?: boolean;
|
|
32
|
-
/** Optional. The items of the property. */
|
|
33
|
-
items?: ResponseSchema;
|
|
34
|
-
/** Optional. The enum of the property. */
|
|
35
|
-
enum?: string[];
|
|
36
|
-
/** Optional. Map of {@link Schema}. */
|
|
37
|
-
properties?: {
|
|
38
|
-
[k: string]: ResponseSchema;
|
|
39
|
-
};
|
|
40
|
-
/** Optional. Array of required property. */
|
|
41
|
-
required?: string[];
|
|
42
|
-
/** Optional. The example of the property. */
|
|
43
|
-
example?: unknown;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Contains the list of OpenAPI data types
|
|
48
|
-
* as defined by https://swagger.io/docs/specification/data-models/data-types/
|
|
49
|
-
* @public
|
|
50
|
-
*/
|
|
51
|
-
export enum ResponseSchemaType {
|
|
52
|
-
/** String type. */
|
|
53
|
-
STRING = 'string',
|
|
54
|
-
/** Number type. */
|
|
55
|
-
NUMBER = 'number',
|
|
56
|
-
/** Integer type. */
|
|
57
|
-
INTEGER = 'integer',
|
|
58
|
-
/** Boolean type. */
|
|
59
|
-
BOOLEAN = 'boolean',
|
|
60
|
-
/** Array type. */
|
|
61
|
-
ARRAY = 'array',
|
|
62
|
-
/** Object type. */
|
|
63
|
-
OBJECT = 'object',
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
12
|
export enum HelperType {
|
|
68
|
-
LLM = 'llm',
|
|
69
13
|
STORAGE = 'storage',
|
|
70
14
|
UTIL = 'util',
|
|
71
15
|
}
|
|
@@ -73,7 +17,6 @@ export enum HelperType {
|
|
|
73
17
|
export type HelperName = string;
|
|
74
18
|
|
|
75
19
|
interface HelperTypeMap {
|
|
76
|
-
[HelperType.LLM]: BaseLlmHelper<HelperName>;
|
|
77
20
|
[HelperType.STORAGE]: BaseStorageHelper<HelperName>;
|
|
78
21
|
[HelperType.UTIL]: BaseHelper;
|
|
79
22
|
}
|
|
@@ -168,7 +168,7 @@ const createActivationResponse = (
|
|
|
168
168
|
const createSettingUpdateEvent = ({
|
|
169
169
|
oldValue,
|
|
170
170
|
newValue,
|
|
171
|
-
group = '
|
|
171
|
+
group = 'global_settings',
|
|
172
172
|
label = 'license_key',
|
|
173
173
|
}: {
|
|
174
174
|
oldValue?: unknown;
|
|
@@ -203,7 +203,7 @@ const createEnv = (overrides: CreateEnvOptions = {}): ServiceEnv => {
|
|
|
203
203
|
...overrides.apiService,
|
|
204
204
|
};
|
|
205
205
|
const settingService: MockSettingService = {
|
|
206
|
-
getSettings: jest.fn().mockResolvedValue({
|
|
206
|
+
getSettings: jest.fn().mockResolvedValue({ global_settings: {} }),
|
|
207
207
|
clearCache: jest.fn().mockResolvedValue(undefined),
|
|
208
208
|
...overrides.settingService,
|
|
209
209
|
};
|
|
@@ -295,7 +295,7 @@ describe('LicenseService', () => {
|
|
|
295
295
|
it('marks state invalid when validation fails', async () => {
|
|
296
296
|
const { service, settingService, apiService } = createEnv();
|
|
297
297
|
settingService.getSettings.mockResolvedValueOnce({
|
|
298
|
-
|
|
298
|
+
global_settings: { license_key: 'invalid-key' },
|
|
299
299
|
});
|
|
300
300
|
apiService.validate.mockResolvedValue(
|
|
301
301
|
createValidationResponse({ valid: false, license_key: null }),
|
|
@@ -316,7 +316,7 @@ describe('LicenseService', () => {
|
|
|
316
316
|
it('marks state expired when the license has expired', async () => {
|
|
317
317
|
const { service, settingService, apiService } = createEnv();
|
|
318
318
|
settingService.getSettings.mockResolvedValueOnce({
|
|
319
|
-
|
|
319
|
+
global_settings: { license_key: 'expired-key' },
|
|
320
320
|
});
|
|
321
321
|
apiService.validate.mockResolvedValue(
|
|
322
322
|
createValidationResponse({
|
|
@@ -352,7 +352,7 @@ describe('LicenseService', () => {
|
|
|
352
352
|
it('marks state disabled when the license has been disabled', async () => {
|
|
353
353
|
const { service, settingService, apiService } = createEnv();
|
|
354
354
|
settingService.getSettings.mockResolvedValueOnce({
|
|
355
|
-
|
|
355
|
+
global_settings: { license_key: 'disabled-key' },
|
|
356
356
|
});
|
|
357
357
|
apiService.validate.mockResolvedValue(
|
|
358
358
|
createValidationResponse({
|
|
@@ -385,7 +385,7 @@ describe('LicenseService', () => {
|
|
|
385
385
|
const { service, settingService, apiService, metadataService } =
|
|
386
386
|
createEnv();
|
|
387
387
|
settingService.getSettings.mockResolvedValueOnce({
|
|
388
|
-
|
|
388
|
+
global_settings: { license_key: 'active-key' },
|
|
389
389
|
});
|
|
390
390
|
apiService.validate.mockResolvedValue(
|
|
391
391
|
createValidationResponse({
|
|
@@ -410,7 +410,7 @@ describe('LicenseService', () => {
|
|
|
410
410
|
it('keeps user management disabled for starter plan', async () => {
|
|
411
411
|
const { service, settingService, apiService } = createEnv();
|
|
412
412
|
settingService.getSettings.mockResolvedValueOnce({
|
|
413
|
-
|
|
413
|
+
global_settings: { license_key: 'starter-key' },
|
|
414
414
|
});
|
|
415
415
|
apiService.validate.mockResolvedValue(
|
|
416
416
|
createValidationResponse({
|
|
@@ -434,7 +434,7 @@ describe('LicenseService', () => {
|
|
|
434
434
|
workflowCount: 150,
|
|
435
435
|
});
|
|
436
436
|
settingService.getSettings.mockResolvedValueOnce({
|
|
437
|
-
|
|
437
|
+
global_settings: { license_key: 'active-pro' },
|
|
438
438
|
});
|
|
439
439
|
apiService.validate.mockResolvedValue(
|
|
440
440
|
createValidationResponse({
|
|
@@ -463,7 +463,7 @@ describe('LicenseService', () => {
|
|
|
463
463
|
workflowCount: 2,
|
|
464
464
|
});
|
|
465
465
|
settingService.getSettings.mockResolvedValueOnce({
|
|
466
|
-
|
|
466
|
+
global_settings: { license_key: 'active-unknown' },
|
|
467
467
|
});
|
|
468
468
|
apiService.validate.mockResolvedValue(
|
|
469
469
|
createValidationResponse({
|
|
@@ -495,7 +495,7 @@ describe('LicenseService', () => {
|
|
|
495
495
|
workflowCount: 600,
|
|
496
496
|
});
|
|
497
497
|
settingService.getSettings.mockResolvedValueOnce({
|
|
498
|
-
|
|
498
|
+
global_settings: { license_key: 'active-unlimited' },
|
|
499
499
|
});
|
|
500
500
|
apiService.validate.mockResolvedValue(
|
|
501
501
|
createValidationResponse({
|
|
@@ -525,7 +525,7 @@ describe('LicenseService', () => {
|
|
|
525
525
|
const { service, settingService, apiService, metadataService } =
|
|
526
526
|
createEnv();
|
|
527
527
|
settingService.getSettings.mockResolvedValueOnce({
|
|
528
|
-
|
|
528
|
+
global_settings: { license_key: 'to-activate' },
|
|
529
529
|
});
|
|
530
530
|
apiService.validate.mockResolvedValue(
|
|
531
531
|
createValidationResponse({
|
|
@@ -578,7 +578,7 @@ describe('LicenseService', () => {
|
|
|
578
578
|
it('stores an error when activation slots are exhausted', async () => {
|
|
579
579
|
const { service, settingService, apiService } = createEnv();
|
|
580
580
|
settingService.getSettings.mockResolvedValueOnce({
|
|
581
|
-
|
|
581
|
+
global_settings: { license_key: 'full' },
|
|
582
582
|
});
|
|
583
583
|
apiService.validate.mockResolvedValue(
|
|
584
584
|
createValidationResponse({
|
|
@@ -611,7 +611,7 @@ describe('LicenseService', () => {
|
|
|
611
611
|
it('uses Axios extractor when refresh throws', async () => {
|
|
612
612
|
const { service, settingService, apiService } = createEnv();
|
|
613
613
|
settingService.getSettings.mockResolvedValueOnce({
|
|
614
|
-
|
|
614
|
+
global_settings: { license_key: 'network' },
|
|
615
615
|
});
|
|
616
616
|
apiService.extractAxiosError.mockReturnValue('Detailed');
|
|
617
617
|
apiService.validate.mockRejectedValue(new Error('fail'));
|
|
@@ -14,7 +14,7 @@ import { InjectDataSource } from '@nestjs/typeorm';
|
|
|
14
14
|
import { DataSource } from 'typeorm';
|
|
15
15
|
|
|
16
16
|
import { LoggerService } from '@/logger/logger.service';
|
|
17
|
-
import {
|
|
17
|
+
import { GLOBAL_SETTINGS_GROUP } from '@/setting/default.settings';
|
|
18
18
|
import { SettingOrmEntity } from '@/setting/entities/setting.entity';
|
|
19
19
|
import { MetadataService } from '@/setting/services/metadata.service';
|
|
20
20
|
import { SettingService } from '@/setting/services/setting.service';
|
|
@@ -256,7 +256,7 @@ export class LicenseService implements OnApplicationBootstrap {
|
|
|
256
256
|
const group = next?.group ?? previous?.group;
|
|
257
257
|
const label = next?.label ?? previous?.label;
|
|
258
258
|
|
|
259
|
-
if (group !==
|
|
259
|
+
if (group !== GLOBAL_SETTINGS_GROUP || label !== 'license_key') {
|
|
260
260
|
return;
|
|
261
261
|
}
|
|
262
262
|
|
|
@@ -474,7 +474,7 @@ export class LicenseService implements OnApplicationBootstrap {
|
|
|
474
474
|
await this.settingService.clearCache();
|
|
475
475
|
const settings = await this.settingService.getSettings();
|
|
476
476
|
|
|
477
|
-
return this.normalizeLicenseKey(settings.
|
|
477
|
+
return this.normalizeLicenseKey(settings.global_settings?.license_key);
|
|
478
478
|
}
|
|
479
479
|
|
|
480
480
|
private async getInstanceId(): Promise<string | undefined> {
|
|
@@ -9,13 +9,13 @@ import z from 'zod';
|
|
|
9
9
|
import { createSettingGroup } from '@/setting/create-setting-group';
|
|
10
10
|
import { RuntimeSettingGroupSchema } from '@/setting/runtime-settings';
|
|
11
11
|
|
|
12
|
-
export const
|
|
12
|
+
export const GLOBAL_SETTINGS_GROUP = 'global_settings' as const;
|
|
13
13
|
|
|
14
14
|
export const RAG_SETTINGS_GROUP = 'rag_settings' as const;
|
|
15
15
|
|
|
16
16
|
export const CONTACT_SETTINGS_GROUP = 'contact' as const;
|
|
17
17
|
|
|
18
|
-
export const
|
|
18
|
+
export const globalSettingsSchema = z
|
|
19
19
|
.strictObject({
|
|
20
20
|
license_key: z.string().default('').meta({
|
|
21
21
|
title: 'License key',
|
|
@@ -23,51 +23,12 @@ export const chatbotSettingsSchema = z
|
|
|
23
23
|
'Provide the license key associated with your subscription. Learn more about available plans at https://hexabot.ai/pricing#pricing.',
|
|
24
24
|
'ui:widget': 'password',
|
|
25
25
|
}),
|
|
26
|
-
default_nlu_helper: z
|
|
27
|
-
.string()
|
|
28
|
-
.default('llm-nlu')
|
|
29
|
-
.meta({
|
|
30
|
-
title: 'Default NLU helper',
|
|
31
|
-
description: 'Helper used by default to run NLU tasks.',
|
|
32
|
-
'ui:widget': 'AutoCompleteWidget',
|
|
33
|
-
'ui:options': {
|
|
34
|
-
entity: 'NluHelper',
|
|
35
|
-
valueKey: 'name',
|
|
36
|
-
labelKey: 'name',
|
|
37
|
-
},
|
|
38
|
-
}),
|
|
39
|
-
default_nlu_penalty_factor: z
|
|
40
|
-
.number()
|
|
41
|
-
.min(0)
|
|
42
|
-
.max(1)
|
|
43
|
-
.multipleOf(0.01)
|
|
44
|
-
.default(0.95)
|
|
45
|
-
.meta({
|
|
46
|
-
title: 'Default NLU penalty factor',
|
|
47
|
-
description: 'Penalty factor applied to NLU confidence scoring.',
|
|
48
|
-
'ui:options': {
|
|
49
|
-
step: 0.01,
|
|
50
|
-
},
|
|
51
|
-
}),
|
|
52
|
-
default_llm_helper: z
|
|
53
|
-
.string()
|
|
54
|
-
.default('ollama')
|
|
55
|
-
.meta({
|
|
56
|
-
title: 'Default LLM helper',
|
|
57
|
-
description: 'Helper used by default for LLM generation tasks.',
|
|
58
|
-
'ui:widget': 'AutoCompleteWidget',
|
|
59
|
-
'ui:options': {
|
|
60
|
-
entity: 'LlmHelper',
|
|
61
|
-
valueKey: 'name',
|
|
62
|
-
labelKey: 'name',
|
|
63
|
-
},
|
|
64
|
-
}),
|
|
65
26
|
default_storage_helper: z
|
|
66
27
|
.string()
|
|
67
28
|
.default('local-storage')
|
|
68
29
|
.meta({
|
|
69
30
|
title: 'Default storage helper',
|
|
70
|
-
description: 'Helper used to persist
|
|
31
|
+
description: 'Helper used to persist workflow data by default.',
|
|
71
32
|
'ui:widget': 'AutoCompleteWidget',
|
|
72
33
|
'ui:options': {
|
|
73
34
|
entity: 'StorageHelper',
|
|
@@ -75,23 +36,9 @@ export const chatbotSettingsSchema = z
|
|
|
75
36
|
labelKey: 'name',
|
|
76
37
|
},
|
|
77
38
|
}),
|
|
78
|
-
global_fallback: z.boolean().default(true).meta({
|
|
79
|
-
title: 'Enable global fallback',
|
|
80
|
-
description: 'Enable fallback handling when no intent or flow matches.',
|
|
81
|
-
}),
|
|
82
|
-
fallback_message: z
|
|
83
|
-
.array(z.string())
|
|
84
|
-
.default([
|
|
85
|
-
"Sorry but i didn't understand your request. Maybe you can check the menu",
|
|
86
|
-
"I'm really sorry but i don't quite understand what you are saying :(",
|
|
87
|
-
])
|
|
88
|
-
.meta({
|
|
89
|
-
title: 'Fallback messages',
|
|
90
|
-
description: 'Messages shown when fallback handling is triggered.',
|
|
91
|
-
}),
|
|
92
39
|
})
|
|
93
40
|
.meta({
|
|
94
|
-
title: '
|
|
41
|
+
title: 'Global settings',
|
|
95
42
|
});
|
|
96
43
|
|
|
97
44
|
export const ragSettingsSchema = z
|
|
@@ -207,15 +154,15 @@ export const contactSettingsSchema = z
|
|
|
207
154
|
|
|
208
155
|
declare global {
|
|
209
156
|
interface RuntimeSettingRegistry {
|
|
210
|
-
[
|
|
157
|
+
[GLOBAL_SETTINGS_GROUP]: typeof globalSettingsSchema;
|
|
211
158
|
[RAG_SETTINGS_GROUP]: typeof ragSettingsSchema;
|
|
212
159
|
[CONTACT_SETTINGS_GROUP]: typeof contactSettingsSchema;
|
|
213
160
|
}
|
|
214
161
|
}
|
|
215
162
|
|
|
216
|
-
export const
|
|
217
|
-
group:
|
|
218
|
-
schema:
|
|
163
|
+
export const GlobalSettingsGroup = createSettingGroup({
|
|
164
|
+
group: GLOBAL_SETTINGS_GROUP,
|
|
165
|
+
schema: globalSettingsSchema,
|
|
219
166
|
scope: 'global',
|
|
220
167
|
});
|
|
221
168
|
|
|
@@ -233,8 +180,8 @@ export const ContactSettingsGroup = createSettingGroup({
|
|
|
233
180
|
|
|
234
181
|
export const DEFAULT_GLOBAL_SETTING_SCHEMAS = [
|
|
235
182
|
{
|
|
236
|
-
group:
|
|
237
|
-
schema:
|
|
183
|
+
group: GLOBAL_SETTINGS_GROUP,
|
|
184
|
+
schema: globalSettingsSchema,
|
|
238
185
|
},
|
|
239
186
|
{
|
|
240
187
|
group: RAG_SETTINGS_GROUP,
|
|
@@ -9,27 +9,12 @@ import { SettingService } from '@/setting';
|
|
|
9
9
|
export const SettingServiceProvider = {
|
|
10
10
|
provide: SettingService,
|
|
11
11
|
useValue: {
|
|
12
|
-
default_nlu_helper: 'llm-nlu',
|
|
13
12
|
getSettings: jest.fn().mockResolvedValue({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
fallback_message: ['Global fallback message'],
|
|
13
|
+
global_settings: {
|
|
14
|
+
license_key: '',
|
|
15
|
+
default_storage_helper: 'local-storage',
|
|
18
16
|
},
|
|
19
17
|
}),
|
|
20
|
-
find: jest.fn().
|
|
21
|
-
[
|
|
22
|
-
{
|
|
23
|
-
translatable: true,
|
|
24
|
-
group: 'default',
|
|
25
|
-
value: 'Global fallback message',
|
|
26
|
-
label: 'fallback_message',
|
|
27
|
-
},
|
|
28
|
-
].filter((s) =>
|
|
29
|
-
criteria && 'translatable' in criteria
|
|
30
|
-
? s.translatable === criteria.translatable
|
|
31
|
-
: true,
|
|
32
|
-
),
|
|
33
|
-
),
|
|
18
|
+
find: jest.fn().mockReturnValue([]),
|
|
34
19
|
},
|
|
35
20
|
};
|
|
@@ -144,12 +144,14 @@ export class SocketEventDispatcherService implements OnModuleInit {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
const withLeadingSlash = path.startsWith('/') ? path : `/${path}`;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
let end = withLeadingSlash.length;
|
|
148
|
+
while (end > 1 && withLeadingSlash.charCodeAt(end - 1) === 0x2f) {
|
|
149
|
+
end--;
|
|
150
|
+
}
|
|
151
151
|
|
|
152
|
-
return
|
|
152
|
+
return end < withLeadingSlash.length
|
|
153
|
+
? withLeadingSlash.slice(0, end)
|
|
154
|
+
: withLeadingSlash;
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
private matchPath(
|