@hexabot-ai/api 3.2.2-beta.2 → 3.2.3
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/channel/channel.controller.js +1 -0
- package/dist/channel/channel.controller.js.map +1 -1
- package/dist/channel/lib/Handler.d.ts +4 -2
- package/dist/channel/lib/Handler.js +6 -2
- package/dist/channel/lib/Handler.js.map +1 -1
- package/dist/channel/services/source.service.d.ts +1 -0
- package/dist/channel/services/source.service.js +16 -6
- package/dist/channel/services/source.service.js.map +1 -1
- package/dist/config/index.js +11 -55
- package/dist/config/index.js.map +1 -1
- package/dist/extensions/actions/ai/ai-base.action.js +11 -1
- package/dist/extensions/actions/ai/ai-base.action.js.map +1 -1
- package/dist/extensions/actions/ai/model.binding.d.ts +3 -1
- package/dist/extensions/actions/ai/model.binding.js +2 -1
- package/dist/extensions/actions/ai/model.binding.js.map +1 -1
- package/dist/extensions/channels/console/i18n/en.translations.json +1 -6
- package/dist/extensions/channels/console/i18n/fr.translations.json +1 -6
- package/dist/extensions/channels/console/index.channel.js +1 -1
- package/dist/extensions/channels/console/index.channel.js.map +1 -1
- package/dist/extensions/channels/console/settings.schema.d.ts +0 -2
- package/dist/extensions/channels/console/settings.schema.js +0 -12
- package/dist/extensions/channels/console/settings.schema.js.map +1 -1
- package/dist/extensions/channels/web/base-web-channel.d.ts +2 -2
- package/dist/extensions/channels/web/base-web-channel.js +5 -7
- package/dist/extensions/channels/web/base-web-channel.js.map +1 -1
- package/dist/extensions/channels/web/services/web-session.service.js +8 -20
- package/dist/extensions/channels/web/services/web-session.service.js.map +1 -1
- package/dist/extensions/channels/web/settings.schema.d.ts +1 -1
- package/dist/extensions/channels/web/settings.schema.js +6 -1
- package/dist/extensions/channels/web/settings.schema.js.map +1 -1
- package/dist/setting/services/setting.service.js +4 -3
- package/dist/setting/services/setting.service.js.map +1 -1
- package/dist/static/assets/{browser-ponyfill-CSTKMWgS.js → browser-ponyfill-CnklMg-0.js} +1 -1
- package/dist/static/assets/{cssMode-DgelXMs5.js → cssMode-BFc1s9d3.js} +1 -1
- package/dist/static/assets/{freemarker2-B_8oADSg.js → freemarker2-QJMqt1-L.js} +1 -1
- package/dist/static/assets/{handlebars-Be0FSTSQ.js → handlebars-D3-tp3q8.js} +1 -1
- package/dist/static/assets/{html-D2fJyqE_.js → html-BIVSAe2M.js} +1 -1
- package/dist/static/assets/{htmlMode-Dwp5dG1B.js → htmlMode-D9c0cJUu.js} +1 -1
- package/dist/static/assets/{index-D-b9KTZd.css → index-BbLr1ieK.css} +1 -1
- package/dist/static/assets/{index-BZA3azmT.js → index-Wtgr3A4p.js} +2129 -2129
- package/dist/static/assets/{javascript-BLgfe7o3.js → javascript-u87PO7ih.js} +1 -1
- package/dist/static/assets/{jsonMode-UDjgnreB.js → jsonMode-0Pf5oAfj.js} +1 -1
- package/dist/static/assets/{liquid-Ac_LaddK.js → liquid-CBQoZjUj.js} +1 -1
- package/dist/static/assets/{lspLanguageFeatures-CaS0BZM-.js → lspLanguageFeatures-Bnt5qp-g.js} +1 -1
- package/dist/static/assets/{mdx-CBtS0OUk.js → mdx-BOZSKWcy.js} +1 -1
- package/dist/static/assets/{python-DrY2rXrO.js → python-CLk42i5f.js} +1 -1
- package/dist/static/assets/{razor-CF9RDHrz.js → razor-DDV6klIi.js} +1 -1
- package/dist/static/assets/{tsMode-Cnimk6sL.js → tsMode-Dgojz_8C.js} +1 -1
- package/dist/static/assets/{typescript-CrFzjBjn.js → typescript-BAUzcnL_.js} +1 -1
- package/dist/static/assets/{xml-DId6dVHR.js → xml-D5KxV0OO.js} +1 -1
- package/dist/static/assets/{yaml-DgRo3t-f.js → yaml-CSq3AYM9.js} +1 -1
- package/dist/static/index.html +2 -2
- package/dist/static/locales/en/translation.json +4 -0
- package/dist/static/locales/fr/translation.json +4 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/helpers/origin.d.ts +4 -0
- package/dist/utils/helpers/origin.js +37 -0
- package/dist/utils/helpers/origin.js.map +1 -0
- package/dist/utils/helpers/parse.d.ts +4 -0
- package/dist/utils/helpers/parse.js +49 -0
- package/dist/utils/helpers/parse.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/websocket/tokens.d.ts +1 -0
- package/dist/websocket/tokens.js +5 -0
- package/dist/websocket/tokens.js.map +1 -0
- package/dist/websocket/utils/gateway-options.d.ts +10 -1
- package/dist/websocket/utils/gateway-options.js +91 -38
- package/dist/websocket/utils/gateway-options.js.map +1 -1
- package/dist/websocket/websocket.module.js +7 -2
- package/dist/websocket/websocket.module.js.map +1 -1
- package/dist/workflow/services/workflow.service.d.ts +6 -2
- package/dist/workflow/services/workflow.service.js +16 -11
- package/dist/workflow/services/workflow.service.js.map +1 -1
- package/package.json +6 -4
- package/src/channel/README.md +2 -1
- package/src/channel/channel.controller.ts +1 -0
- package/src/channel/lib/Handler.ts +6 -0
- package/src/channel/services/source.service.ts +23 -6
- package/src/config/index.ts +11 -59
- package/src/extensions/actions/ai/ai-base.action.ts +15 -2
- package/src/extensions/actions/ai/model.binding.ts +2 -1
- package/src/extensions/channels/console/i18n/en.translations.json +1 -6
- package/src/extensions/channels/console/i18n/fr.translations.json +1 -6
- package/src/extensions/channels/console/index.channel.ts +5 -1
- package/src/extensions/channels/console/settings.schema.ts +0 -12
- package/src/extensions/channels/web/base-web-channel.ts +13 -8
- package/src/extensions/channels/web/services/web-session.service.ts +10 -21
- package/src/extensions/channels/web/settings.schema.ts +10 -4
- package/src/setting/services/setting.service.ts +4 -3
- package/src/utils/helpers/origin.ts +50 -0
- package/src/utils/helpers/parse.ts +68 -0
- package/src/utils/index.ts +2 -0
- package/src/websocket/tokens.ts +7 -0
- package/src/websocket/utils/gateway-options.ts +131 -41
- package/src/websocket/websocket.module.ts +7 -2
- package/src/workflow/services/workflow.service.ts +16 -8
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const normalizeOrigin: (value: string | undefined) => string | null;
|
|
2
|
+
export declare const splitAllowedOrigins: (allowedOrigins: string | string[]) => string[];
|
|
3
|
+
export declare const getAllowedDomains: (settings: Record<string, unknown>) => string;
|
|
4
|
+
export declare const isAllowedOrigin: (origin: string | undefined, allowedOrigins: string | string[]) => boolean;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAllowedOrigin = exports.getAllowedDomains = exports.splitAllowedOrigins = exports.normalizeOrigin = void 0;
|
|
4
|
+
const parse_1 = require("./parse");
|
|
5
|
+
const normalizeOrigin = (value) => {
|
|
6
|
+
if (!value) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
const url = new URL(value.trim());
|
|
11
|
+
return ['http:', 'https:'].includes(url.protocol) ? url.origin : null;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.normalizeOrigin = normalizeOrigin;
|
|
18
|
+
const splitAllowedOrigins = (allowedOrigins) => (0, parse_1.parseCsv)(allowedOrigins, []);
|
|
19
|
+
exports.splitAllowedOrigins = splitAllowedOrigins;
|
|
20
|
+
const getAllowedDomains = (settings) => typeof settings.allowed_domains === 'string' ? settings.allowed_domains : '*';
|
|
21
|
+
exports.getAllowedDomains = getAllowedDomains;
|
|
22
|
+
const isAllowedOrigin = (origin, allowedOrigins) => {
|
|
23
|
+
const normalizedOrigin = (0, exports.normalizeOrigin)(origin);
|
|
24
|
+
const allowedOriginValues = (0, exports.splitAllowedOrigins)(allowedOrigins);
|
|
25
|
+
if (!normalizedOrigin) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (allowedOriginValues.includes('*')) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
const normalizedAllowedOrigins = allowedOriginValues
|
|
32
|
+
.map(exports.normalizeOrigin)
|
|
33
|
+
.filter((allowedOrigin) => allowedOrigin !== null);
|
|
34
|
+
return normalizedAllowedOrigins.includes(normalizedOrigin);
|
|
35
|
+
};
|
|
36
|
+
exports.isAllowedOrigin = isAllowedOrigin;
|
|
37
|
+
//# sourceMappingURL=origin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"origin.js","sourceRoot":"","sources":["../../../src/utils/helpers/origin.ts"],"names":[],"mappings":";;;AAMA,mCAAmC;AAE5B,MAAM,eAAe,GAAG,CAAC,KAAyB,EAAiB,EAAE;IAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAElC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B;AAEK,MAAM,mBAAmB,GAAG,CACjC,cAAiC,EACvB,EAAE,CAAC,IAAA,gBAAQ,EAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAF/B,QAAA,mBAAmB,uBAEY;AAErC,MAAM,iBAAiB,GAAG,CAAC,QAAiC,EAAU,EAAE,CAC7E,OAAO,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;AADnE,QAAA,iBAAiB,qBACkD;AAEzE,MAAM,eAAe,GAAG,CAC7B,MAA0B,EAC1B,cAAiC,EACxB,EAAE;IACX,MAAM,gBAAgB,GAAG,IAAA,uBAAe,EAAC,MAAM,CAAC,CAAC;IACjD,MAAM,mBAAmB,GAAG,IAAA,2BAAmB,EAAC,cAAc,CAAC,CAAC;IAEhE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,wBAAwB,GAAG,mBAAmB;SACjD,GAAG,CAAC,uBAAe,CAAC;SACpB,MAAM,CAAC,CAAC,aAAa,EAA2B,EAAE,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;IAE9E,OAAO,wBAAwB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC7D,CAAC,CAAC;AApBW,QAAA,eAAe,mBAoB1B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const parseIntWithFallback: (value: string | undefined, fallback: number) => number;
|
|
2
|
+
export declare const parseOptionalInt: (value: string | undefined) => number | undefined;
|
|
3
|
+
export declare const parseCsv: (value: string | string[] | undefined, fallback: string[]) => string[];
|
|
4
|
+
export declare const parseAuditHeaders: (value: string | undefined) => Record<string, string>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAuditHeaders = exports.parseCsv = exports.parseOptionalInt = exports.parseIntWithFallback = void 0;
|
|
4
|
+
const parseIntWithFallback = (value, fallback) => {
|
|
5
|
+
if (!value) {
|
|
6
|
+
return fallback;
|
|
7
|
+
}
|
|
8
|
+
const parsed = Number.parseInt(value, 10);
|
|
9
|
+
return Number.isNaN(parsed) ? fallback : parsed;
|
|
10
|
+
};
|
|
11
|
+
exports.parseIntWithFallback = parseIntWithFallback;
|
|
12
|
+
const parseOptionalInt = (value) => {
|
|
13
|
+
if (value === undefined) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const parsed = Number.parseInt(value, 10);
|
|
17
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
18
|
+
};
|
|
19
|
+
exports.parseOptionalInt = parseOptionalInt;
|
|
20
|
+
const parseCsv = (value, fallback) => {
|
|
21
|
+
if (!value) {
|
|
22
|
+
return fallback;
|
|
23
|
+
}
|
|
24
|
+
const values = Array.isArray(value) ? value : value.split(',');
|
|
25
|
+
return values
|
|
26
|
+
.map((entry) => entry.trim())
|
|
27
|
+
.filter((entry) => entry.length > 0);
|
|
28
|
+
};
|
|
29
|
+
exports.parseCsv = parseCsv;
|
|
30
|
+
const parseAuditHeaders = (value) => {
|
|
31
|
+
if (!value) {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const parsed = JSON.parse(value);
|
|
36
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
return Object.fromEntries(Object.entries(parsed).map(([key, headerValue]) => [
|
|
40
|
+
key,
|
|
41
|
+
String(headerValue),
|
|
42
|
+
]));
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
exports.parseAuditHeaders = parseAuditHeaders;
|
|
49
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/utils/helpers/parse.ts"],"names":[],"mappings":";;;AAMO,MAAM,oBAAoB,GAAG,CAClC,KAAyB,EACzB,QAAgB,EACR,EAAE;IACV,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,KAAyB,EACL,EAAE;IACtB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEK,MAAM,QAAQ,GAAG,CACtB,KAAoC,EACpC,QAAkB,EACR,EAAE;IACZ,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/D,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAbW,QAAA,QAAQ,YAanB;AAEK,MAAM,iBAAiB,GAAG,CAC/B,KAAyB,EACD,EAAE;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;QAE5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;YACjD,GAAG;YACH,MAAM,CAAC,WAAW,CAAC;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAvBW,QAAA,iBAAiB,qBAuB5B"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export * from './helpers/clone';
|
|
|
19
19
|
export * from './helpers/flatten';
|
|
20
20
|
export * from './helpers/misc';
|
|
21
21
|
export * from './helpers/object';
|
|
22
|
+
export * from './helpers/parse';
|
|
22
23
|
export * from './helpers/safeRandom';
|
|
23
24
|
export * from './helpers/svg';
|
|
24
25
|
export * from './helpers/zod';
|
package/dist/utils/index.js
CHANGED
|
@@ -35,6 +35,7 @@ __exportStar(require("./helpers/clone"), exports);
|
|
|
35
35
|
__exportStar(require("./helpers/flatten"), exports);
|
|
36
36
|
__exportStar(require("./helpers/misc"), exports);
|
|
37
37
|
__exportStar(require("./helpers/object"), exports);
|
|
38
|
+
__exportStar(require("./helpers/parse"), exports);
|
|
38
39
|
__exportStar(require("./helpers/safeRandom"), exports);
|
|
39
40
|
__exportStar(require("./helpers/svg"), exports);
|
|
40
41
|
__exportStar(require("./helpers/zod"), exports);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMA,oDAAkC;AAElC,mDAAiC;AAEjC,iEAA+C;AAE/C,4DAA0C;AAE1C,mEAAiD;AAEjD,iEAA+C;AAE/C,sEAAoD;AAEpD,+DAA6C;AAE7C,oEAAkD;AAElD,kEAAgD;AAEhD,iEAA+C;AAE/C,iEAA+C;AAE/C,6DAA2C;AAE3C,8DAA4C;AAE5C,uDAAqC;AAErC,gDAA8B;AAE9B,mDAAiC;AAEjC,kDAAgC;AAEhC,oDAAkC;AAElC,iDAA+B;AAE/B,mDAAiC;AAEjC,uDAAqC;AAErC,gDAA8B;AAE9B,gDAA8B;AAE9B,wDAAsC;AAEtC,qEAAmD;AAEnD,oDAAkC;AAElC,mDAAiC;AAEjC,oDAAkC;AAElC,uDAAqC;AAErC,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMA,oDAAkC;AAElC,mDAAiC;AAEjC,iEAA+C;AAE/C,4DAA0C;AAE1C,mEAAiD;AAEjD,iEAA+C;AAE/C,sEAAoD;AAEpD,+DAA6C;AAE7C,oEAAkD;AAElD,kEAAgD;AAEhD,iEAA+C;AAE/C,iEAA+C;AAE/C,6DAA2C;AAE3C,8DAA4C;AAE5C,uDAAqC;AAErC,gDAA8B;AAE9B,mDAAiC;AAEjC,kDAAgC;AAEhC,oDAAkC;AAElC,iDAA+B;AAE/B,mDAAiC;AAEjC,kDAAgC;AAEhC,uDAAqC;AAErC,gDAA8B;AAE9B,gDAA8B;AAE9B,wDAAsC;AAEtC,qEAAmD;AAEnD,oDAAkC;AAElC,mDAAiC;AAEjC,oDAAkC;AAElC,uDAAqC;AAErC,uDAAqC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WEBSOCKET_GATEWAY: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/websocket/tokens.ts"],"names":[],"mappings":";;;AAMa,QAAA,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'http';
|
|
2
|
+
import type { Source } from '@hexabot-ai/types';
|
|
1
3
|
import type { ServerOptions } from 'socket.io';
|
|
2
|
-
|
|
4
|
+
type SocketCorsSource = Pick<Source, 'channel' | 'settings'>;
|
|
5
|
+
export type SocketOriginDependencies = {
|
|
6
|
+
getAllowedOrigins: () => Promise<string[]>;
|
|
7
|
+
findActiveSourceById: (sourceId: string) => Promise<SocketCorsSource | null>;
|
|
8
|
+
};
|
|
9
|
+
export declare const isSocketRequestOriginAllowed: (handshake: IncomingMessage, dependencies?: SocketOriginDependencies) => Promise<boolean>;
|
|
10
|
+
export declare const buildWebSocketGatewayOptions: (dependencies?: SocketOriginDependencies) => Partial<ServerOptions>;
|
|
11
|
+
export {};
|
|
@@ -3,33 +3,107 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.buildWebSocketGatewayOptions = void 0;
|
|
6
|
+
exports.buildWebSocketGatewayOptions = exports.isSocketRequestOriginAllowed = void 0;
|
|
7
7
|
const util_1 = __importDefault(require("util"));
|
|
8
|
+
const common_1 = require("@nestjs/common");
|
|
9
|
+
const class_validator_1 = require("class-validator");
|
|
8
10
|
const app_instance_1 = require("../../app.instance");
|
|
11
|
+
const source_service_1 = require("../../channel/services/source.service");
|
|
9
12
|
const config_1 = require("../../config");
|
|
13
|
+
const settings_schema_1 = require("../../extensions/channels/console/settings.schema");
|
|
14
|
+
const settings_schema_2 = require("../../extensions/channels/web/settings.schema");
|
|
10
15
|
const setting_service_1 = require("../../setting/services/setting.service");
|
|
11
|
-
const
|
|
16
|
+
const origin_1 = require("../../utils/helpers/origin");
|
|
17
|
+
const getDefaultSocketOriginDependencies = () => {
|
|
18
|
+
const app = app_instance_1.AppInstance.getApp();
|
|
19
|
+
const settingService = app.get(setting_service_1.SettingService);
|
|
20
|
+
const sourceService = app.get(source_service_1.SourceService);
|
|
21
|
+
return {
|
|
22
|
+
getAllowedOrigins: () => settingService.getAllowedOrigins(),
|
|
23
|
+
findActiveSourceById: (sourceId) => sourceService.findActiveById(sourceId),
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
const isSocketRequestOriginAllowed = async (handshake, dependencies = getDefaultSocketOriginDependencies()) => {
|
|
27
|
+
const { origin: rawOrigin } = handshake.headers;
|
|
28
|
+
const origin = Array.isArray(rawOrigin) ? rawOrigin[0] : rawOrigin;
|
|
29
|
+
const rawSourceId = handshake.url
|
|
30
|
+
? new URL(handshake.url, 'ws://localhost').searchParams.get('source_id')
|
|
31
|
+
: null;
|
|
32
|
+
if (!rawSourceId) {
|
|
33
|
+
return (0, origin_1.isAllowedOrigin)(origin, await dependencies.getAllowedOrigins());
|
|
34
|
+
}
|
|
35
|
+
if (!(0, class_validator_1.isUUID)(rawSourceId)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
let source;
|
|
39
|
+
try {
|
|
40
|
+
source = await dependencies.findActiveSourceById(rawSourceId);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof common_1.NotFoundException) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
if (!source) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (source.channel === settings_schema_2.WEB_CHANNEL_NAME) {
|
|
52
|
+
return (0, origin_1.isAllowedOrigin)(origin, (0, origin_1.getAllowedDomains)(source.settings));
|
|
53
|
+
}
|
|
54
|
+
if (source.channel === settings_schema_1.CONSOLE_CHANNEL_NAME) {
|
|
55
|
+
return (0, origin_1.isAllowedOrigin)(origin, await dependencies.getAllowedOrigins());
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
};
|
|
59
|
+
exports.isSocketRequestOriginAllowed = isSocketRequestOriginAllowed;
|
|
60
|
+
const runBeforeConnect = (handshake, cb) => {
|
|
61
|
+
try {
|
|
62
|
+
const result = config_1.config.sockets.beforeConnect(handshake);
|
|
63
|
+
if (!result) {
|
|
64
|
+
cb(null, false);
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
console.log(`A socket was rejected via the config.sockets.beforeConnect function.\n` +
|
|
71
|
+
`It attempted to connect with headers:\n` +
|
|
72
|
+
`${util_1.default.inspect(handshake.headers, { depth: null })}\n` +
|
|
73
|
+
`Details: ${e}`);
|
|
74
|
+
cb(e instanceof Error ? e.message : `${e}`, false);
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const buildWebSocketGatewayOptions = (dependencies) => {
|
|
12
79
|
const opts = {
|
|
13
80
|
allowEIO3: true,
|
|
14
81
|
path: config_1.config.sockets.path,
|
|
15
82
|
...(typeof config_1.config.sockets.serveClient !== 'undefined' && {
|
|
16
83
|
serveClient: config_1.config.sockets.serveClient,
|
|
17
84
|
}),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
85
|
+
allowRequest: (handshake, cb) => {
|
|
86
|
+
if (!runBeforeConnect(handshake, cb)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (config_1.config.env === 'test') {
|
|
90
|
+
cb(null, true);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
(0, exports.isSocketRequestOriginAllowed)(handshake, dependencies)
|
|
94
|
+
.then((allowed) => {
|
|
95
|
+
if (allowed) {
|
|
96
|
+
cb(null, true);
|
|
97
|
+
return;
|
|
30
98
|
}
|
|
31
|
-
|
|
32
|
-
|
|
99
|
+
console.log(`A socket was rejected by the Socket.IO origin policy.\n` +
|
|
100
|
+
`It attempted to connect with origin: ${handshake.headers.origin}`);
|
|
101
|
+
cb('Origin not allowed', false);
|
|
102
|
+
})
|
|
103
|
+
.catch((error) => {
|
|
104
|
+
cb(error instanceof Error ? error.message : `${error}`, false);
|
|
105
|
+
});
|
|
106
|
+
},
|
|
33
107
|
...(config_1.config.sockets.pingTimeout && {
|
|
34
108
|
pingTimeout: config_1.config.sockets.pingTimeout,
|
|
35
109
|
}),
|
|
@@ -46,28 +120,7 @@ const buildWebSocketGatewayOptions = () => {
|
|
|
46
120
|
...(config_1.config.sockets.cookie && { cookie: config_1.config.sockets.cookie }),
|
|
47
121
|
cors: {
|
|
48
122
|
credentials: true,
|
|
49
|
-
origin:
|
|
50
|
-
if (config_1.config.env === 'test') {
|
|
51
|
-
cb(null, true);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
const app = app_instance_1.AppInstance.getApp();
|
|
55
|
-
const settingService = app.get(setting_service_1.SettingService);
|
|
56
|
-
await settingService
|
|
57
|
-
.getAllowedOrigins()
|
|
58
|
-
.then((allowedOrigins) => {
|
|
59
|
-
if (origin && allowedOrigins.includes(origin)) {
|
|
60
|
-
cb(null, true);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
console.log(`A socket was rejected via the config.sockets.onlyAllowOrigins array.\n` +
|
|
64
|
-
`It attempted to connect with origin: ${origin}`);
|
|
65
|
-
cb(new Error('Origin not allowed'), false);
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
.catch(cb);
|
|
69
|
-
}
|
|
70
|
-
},
|
|
123
|
+
origin: true,
|
|
71
124
|
},
|
|
72
125
|
};
|
|
73
126
|
return opts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-options.js","sourceRoot":"","sources":["../../../src/websocket/utils/gateway-options.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"gateway-options.js","sourceRoot":"","sources":["../../../src/websocket/utils/gateway-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ exports.WebsocketModule = void 0;
|
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const user_module_1 = require("../user/user.module");
|
|
12
12
|
const socket_event_dispatcher_service_1 = require("./services/socket-event-dispatcher.service");
|
|
13
|
+
const tokens_1 = require("./tokens");
|
|
13
14
|
const websocket_gateway_1 = require("./websocket.gateway");
|
|
14
15
|
let WebsocketModule = class WebsocketModule {
|
|
15
16
|
};
|
|
@@ -18,8 +19,12 @@ exports.WebsocketModule = WebsocketModule = __decorate([
|
|
|
18
19
|
(0, common_1.Global)(),
|
|
19
20
|
(0, common_1.Module)({
|
|
20
21
|
imports: [user_module_1.UserModule],
|
|
21
|
-
providers: [
|
|
22
|
-
|
|
22
|
+
providers: [
|
|
23
|
+
websocket_gateway_1.WebsocketGateway,
|
|
24
|
+
{ provide: tokens_1.WEBSOCKET_GATEWAY, useExisting: websocket_gateway_1.WebsocketGateway },
|
|
25
|
+
socket_event_dispatcher_service_1.SocketEventDispatcherService,
|
|
26
|
+
],
|
|
27
|
+
exports: [websocket_gateway_1.WebsocketGateway, tokens_1.WEBSOCKET_GATEWAY],
|
|
23
28
|
})
|
|
24
29
|
], WebsocketModule);
|
|
25
30
|
//# sourceMappingURL=websocket.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.module.js","sourceRoot":"","sources":["../../src/websocket/websocket.module.ts"],"names":[],"mappings":";;;;;;;;;AAMA,2CAAgD;AAEhD,qDAAgD;AAEhD,gGAA0F;AAC1F,2DAAuD;
|
|
1
|
+
{"version":3,"file":"websocket.module.js","sourceRoot":"","sources":["../../src/websocket/websocket.module.ts"],"names":[],"mappings":";;;;;;;;;AAMA,2CAAgD;AAEhD,qDAAgD;AAEhD,gGAA0F;AAC1F,qCAA6C;AAC7C,2DAAuD;AAYhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAV3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,wBAAU,CAAC;QACrB,SAAS,EAAE;YACT,oCAAgB;YAChB,EAAE,OAAO,EAAE,0BAAiB,EAAE,WAAW,EAAE,oCAAgB,EAAE;YAC7D,8DAA4B;SAC7B;QACD,OAAO,EAAE,CAAC,oCAAgB,EAAE,0BAAiB,CAAC;KAC/C,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -4,17 +4,20 @@ import { EntityManager, FindOneOptions } from 'typeorm';
|
|
|
4
4
|
import { UpdateOneOptions } from "../../utils/generics/base-orm.repository";
|
|
5
5
|
import { BaseOrmService } from "../../utils/generics/base-orm.service";
|
|
6
6
|
import { InferCreateDto } from "../../utils/types/dto.types";
|
|
7
|
-
import { SocketRequest
|
|
7
|
+
import { SocketRequest } from "../../websocket/utils/socket-request";
|
|
8
|
+
import { SocketResponse } from "../../websocket/utils/socket-response";
|
|
9
|
+
import type { WebsocketGateway } from "../../websocket/websocket.gateway";
|
|
8
10
|
import { WorkflowUpdateDto } from '../dto/workflow.dto';
|
|
9
11
|
import { WorkflowOrmEntity } from '../entities/workflow.entity';
|
|
10
12
|
import { WorkflowRepository } from '../repositories/workflow.repository';
|
|
11
13
|
import { WorkflowRunService } from './workflow-run.service';
|
|
14
|
+
type WorkflowSocketGateway = Pick<WebsocketGateway, 'joinSockets' | 'broadcastWorkflowEvent'>;
|
|
12
15
|
export declare class WorkflowService extends BaseOrmService<WorkflowOrmEntity> {
|
|
13
16
|
readonly repository: WorkflowRepository;
|
|
14
17
|
private readonly gateway;
|
|
15
18
|
private readonly workflowRunService;
|
|
16
19
|
private readonly MANUAL_INPUT_VALIDATION_ERROR;
|
|
17
|
-
constructor(repository: WorkflowRepository, gateway:
|
|
20
|
+
constructor(repository: WorkflowRepository, gateway: WorkflowSocketGateway, workflowRunService: WorkflowRunService);
|
|
18
21
|
pickWorkflow(): Promise<WorkflowFull | null>;
|
|
19
22
|
createWithManager(manager: EntityManager, payload: InferCreateDto<WorkflowOrmEntity>): Promise<WorkflowOrmEntity>;
|
|
20
23
|
updateOne(idOrOptions: string | FindOneOptions<WorkflowOrmEntity>, payload: WorkflowUpdateDto, options?: UpdateOneOptions): Promise<Workflow>;
|
|
@@ -34,3 +37,4 @@ export declare class WorkflowService extends BaseOrmService<WorkflowOrmEntity> {
|
|
|
34
37
|
sendWorkflowStepError(payload: WorkflowEventMap[keyof WorkflowEventMap]): Promise<void>;
|
|
35
38
|
sendWorkflowStepCancelled(payload: WorkflowEventMap[keyof WorkflowEventMap]): Promise<void>;
|
|
36
39
|
}
|
|
40
|
+
export {};
|
|
@@ -17,7 +17,13 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
18
18
|
const zod_1 = require("zod");
|
|
19
19
|
const base_orm_service_1 = require("../../utils/generics/base-orm.service");
|
|
20
|
-
const
|
|
20
|
+
const socket_method_decorator_1 = require("../../websocket/decorators/socket-method.decorator");
|
|
21
|
+
const socket_req_decorator_1 = require("../../websocket/decorators/socket-req.decorator");
|
|
22
|
+
const socket_res_decorator_1 = require("../../websocket/decorators/socket-res.decorator");
|
|
23
|
+
const tokens_1 = require("../../websocket/tokens");
|
|
24
|
+
const types_1 = require("../../websocket/types");
|
|
25
|
+
const socket_request_1 = require("../../websocket/utils/socket-request");
|
|
26
|
+
const socket_response_1 = require("../../websocket/utils/socket-response");
|
|
21
27
|
const workflow_entity_1 = require("../entities/workflow.entity");
|
|
22
28
|
const workflow_repository_1 = require("../repositories/workflow.repository");
|
|
23
29
|
const workflow_run_service_1 = require("./workflow-run.service");
|
|
@@ -87,7 +93,7 @@ let WorkflowService = class WorkflowService extends base_orm_service_1.BaseOrmSe
|
|
|
87
93
|
}
|
|
88
94
|
async subscribe(req, res) {
|
|
89
95
|
try {
|
|
90
|
-
const subscribeRoom = await this.gateway.joinSockets(req,
|
|
96
|
+
const subscribeRoom = await this.gateway.joinSockets(req, types_1.Room.WORKFLOW, 'workflow');
|
|
91
97
|
return res.status(200).json({
|
|
92
98
|
success: true,
|
|
93
99
|
subscribe: subscribeRoom,
|
|
@@ -162,13 +168,13 @@ let WorkflowService = class WorkflowService extends base_orm_service_1.BaseOrmSe
|
|
|
162
168
|
};
|
|
163
169
|
exports.WorkflowService = WorkflowService;
|
|
164
170
|
__decorate([
|
|
165
|
-
(0,
|
|
166
|
-
(0,
|
|
167
|
-
__param(0, (0,
|
|
168
|
-
__param(1, (0,
|
|
171
|
+
(0, socket_method_decorator_1.SocketGet)('/workflow/subscribe/'),
|
|
172
|
+
(0, socket_method_decorator_1.SocketPost)('/workflow/subscribe/'),
|
|
173
|
+
__param(0, (0, socket_req_decorator_1.SocketReq)()),
|
|
174
|
+
__param(1, (0, socket_res_decorator_1.SocketRes)()),
|
|
169
175
|
__metadata("design:type", Function),
|
|
170
|
-
__metadata("design:paramtypes", [
|
|
171
|
-
|
|
176
|
+
__metadata("design:paramtypes", [socket_request_1.SocketRequest,
|
|
177
|
+
socket_response_1.SocketResponse]),
|
|
172
178
|
__metadata("design:returntype", Promise)
|
|
173
179
|
], WorkflowService.prototype, "subscribe", null);
|
|
174
180
|
__decorate([
|
|
@@ -227,8 +233,7 @@ __decorate([
|
|
|
227
233
|
], WorkflowService.prototype, "sendWorkflowStepCancelled", null);
|
|
228
234
|
exports.WorkflowService = WorkflowService = __decorate([
|
|
229
235
|
(0, common_1.Injectable)(),
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
workflow_run_service_1.WorkflowRunService])
|
|
236
|
+
__param(1, (0, common_1.Inject)(tokens_1.WEBSOCKET_GATEWAY)),
|
|
237
|
+
__metadata("design:paramtypes", [workflow_repository_1.WorkflowRepository, Object, workflow_run_service_1.WorkflowRunService])
|
|
233
238
|
], WorkflowService);
|
|
234
239
|
//# sourceMappingURL=workflow.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.service.js","sourceRoot":"","sources":["../../../src/workflow/services/workflow.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAQA,
|
|
1
|
+
{"version":3,"file":"workflow.service.js","sourceRoot":"","sources":["../../../src/workflow/services/workflow.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.3",
|
|
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",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"@ai-sdk/gateway": "^3.0.9",
|
|
28
28
|
"@ai-sdk/mcp": "^1.0.25",
|
|
29
29
|
"@ai-sdk/openai": "^3.0.7",
|
|
30
|
+
"@ai-sdk/openai-compatible": "^2.0.48",
|
|
30
31
|
"@ai-sdk/provider": "^3.0.2",
|
|
31
32
|
"@keyv/redis": "^5.1.3",
|
|
32
33
|
"@llamaindex/openai": "0.4.22",
|
|
@@ -92,8 +93,8 @@
|
|
|
92
93
|
"typeorm": "^0.3.28",
|
|
93
94
|
"yaml": "^2.8.3",
|
|
94
95
|
"zod": "^4.3.6",
|
|
95
|
-
"@hexabot-ai/
|
|
96
|
-
"@hexabot-ai/
|
|
96
|
+
"@hexabot-ai/types": "3.0.3",
|
|
97
|
+
"@hexabot-ai/agentic": "3.1.3"
|
|
97
98
|
},
|
|
98
99
|
"devDependencies": {
|
|
99
100
|
"@compodoc/compodoc": "^1.2.1",
|
|
@@ -144,12 +145,13 @@
|
|
|
144
145
|
"tsconfig-paths": "^4.2.0",
|
|
145
146
|
"tsconfig-paths-jest": "^0.0.1",
|
|
146
147
|
"typescript": "^5.1.3",
|
|
147
|
-
"@hexabot-ai/frontend": "3.2.
|
|
148
|
+
"@hexabot-ai/frontend": "3.2.3"
|
|
148
149
|
},
|
|
149
150
|
"optionalDependencies": {
|
|
150
151
|
"@css-inline/css-inline-linux-arm64-musl": "^0.14.1",
|
|
151
152
|
"@resvg/resvg-js-darwin-arm64": "^2.6.2",
|
|
152
153
|
"@resvg/resvg-js-linux-arm64-musl": "^2.6.2",
|
|
154
|
+
"@resvg/resvg-js-linux-x64-gnu": "2.6.2",
|
|
153
155
|
"@resvg/resvg-js-win32-x64-msvc": "2.6.2"
|
|
154
156
|
},
|
|
155
157
|
"jest": {
|
package/src/channel/README.md
CHANGED
|
@@ -42,7 +42,7 @@ At request time:
|
|
|
42
42
|
|
|
43
43
|
Also available:
|
|
44
44
|
|
|
45
|
-
- `GET /api/channel` returns channel metadata (`name`, settings JSON schema).
|
|
45
|
+
- `GET /api/channel` returns channel metadata (`name`, `visibility`, settings JSON schema).
|
|
46
46
|
- `GET /api/source`, `GET /api/source/:id`, `POST /api/source`, `PATCH /api/source/:id`.
|
|
47
47
|
- Sources are not physically deleted. Disable them with `PATCH /api/source/:id` and `state: false`.
|
|
48
48
|
|
|
@@ -56,6 +56,7 @@ Base abstraction for all channels:
|
|
|
56
56
|
- `doSendMessage(event, envelope, options)`: channel-specific outbound send.
|
|
57
57
|
- `getSubscriberData(event)`: map platform user data to `SubscriberCreateDto`.
|
|
58
58
|
- `getCapabilities()`: declares supported outgoing formats and features.
|
|
59
|
+
- `getVisibility()`: marks channels as `public` or `system` for admin UI separation.
|
|
59
60
|
|
|
60
61
|
Optional extension points:
|
|
61
62
|
|
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
ActionOptions,
|
|
11
11
|
Attachment,
|
|
12
12
|
AttachmentRef,
|
|
13
|
+
ChannelVisibility,
|
|
13
14
|
Source,
|
|
14
15
|
StdOutgoingMessageEnvelope,
|
|
15
16
|
} from '@hexabot-ai/types';
|
|
@@ -70,6 +71,7 @@ export default abstract class ChannelHandler<
|
|
|
70
71
|
constructor(
|
|
71
72
|
name: N,
|
|
72
73
|
private readonly sourceSettingsSchema: z.ZodTypeAny = z.strictObject({}),
|
|
74
|
+
private readonly visibility: ChannelVisibility = 'public',
|
|
73
75
|
) {
|
|
74
76
|
super(name);
|
|
75
77
|
}
|
|
@@ -114,6 +116,10 @@ export default abstract class ChannelHandler<
|
|
|
114
116
|
return this.sourceSettingsSchema;
|
|
115
117
|
}
|
|
116
118
|
|
|
119
|
+
getVisibility(): ChannelVisibility {
|
|
120
|
+
return this.visibility;
|
|
121
|
+
}
|
|
122
|
+
|
|
117
123
|
/**
|
|
118
124
|
* Throws when the envelope's format is not supported by this channel.
|
|
119
125
|
* The `system` format always throws — it is internal and must never reach
|