@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.
Files changed (98) hide show
  1. package/dist/channel/channel.controller.js +1 -0
  2. package/dist/channel/channel.controller.js.map +1 -1
  3. package/dist/channel/lib/Handler.d.ts +4 -2
  4. package/dist/channel/lib/Handler.js +6 -2
  5. package/dist/channel/lib/Handler.js.map +1 -1
  6. package/dist/channel/services/source.service.d.ts +1 -0
  7. package/dist/channel/services/source.service.js +16 -6
  8. package/dist/channel/services/source.service.js.map +1 -1
  9. package/dist/config/index.js +11 -55
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/extensions/actions/ai/ai-base.action.js +11 -1
  12. package/dist/extensions/actions/ai/ai-base.action.js.map +1 -1
  13. package/dist/extensions/actions/ai/model.binding.d.ts +3 -1
  14. package/dist/extensions/actions/ai/model.binding.js +2 -1
  15. package/dist/extensions/actions/ai/model.binding.js.map +1 -1
  16. package/dist/extensions/channels/console/i18n/en.translations.json +1 -6
  17. package/dist/extensions/channels/console/i18n/fr.translations.json +1 -6
  18. package/dist/extensions/channels/console/index.channel.js +1 -1
  19. package/dist/extensions/channels/console/index.channel.js.map +1 -1
  20. package/dist/extensions/channels/console/settings.schema.d.ts +0 -2
  21. package/dist/extensions/channels/console/settings.schema.js +0 -12
  22. package/dist/extensions/channels/console/settings.schema.js.map +1 -1
  23. package/dist/extensions/channels/web/base-web-channel.d.ts +2 -2
  24. package/dist/extensions/channels/web/base-web-channel.js +5 -7
  25. package/dist/extensions/channels/web/base-web-channel.js.map +1 -1
  26. package/dist/extensions/channels/web/services/web-session.service.js +8 -20
  27. package/dist/extensions/channels/web/services/web-session.service.js.map +1 -1
  28. package/dist/extensions/channels/web/settings.schema.d.ts +1 -1
  29. package/dist/extensions/channels/web/settings.schema.js +6 -1
  30. package/dist/extensions/channels/web/settings.schema.js.map +1 -1
  31. package/dist/setting/services/setting.service.js +4 -3
  32. package/dist/setting/services/setting.service.js.map +1 -1
  33. package/dist/static/assets/{browser-ponyfill-CSTKMWgS.js → browser-ponyfill-CnklMg-0.js} +1 -1
  34. package/dist/static/assets/{cssMode-DgelXMs5.js → cssMode-BFc1s9d3.js} +1 -1
  35. package/dist/static/assets/{freemarker2-B_8oADSg.js → freemarker2-QJMqt1-L.js} +1 -1
  36. package/dist/static/assets/{handlebars-Be0FSTSQ.js → handlebars-D3-tp3q8.js} +1 -1
  37. package/dist/static/assets/{html-D2fJyqE_.js → html-BIVSAe2M.js} +1 -1
  38. package/dist/static/assets/{htmlMode-Dwp5dG1B.js → htmlMode-D9c0cJUu.js} +1 -1
  39. package/dist/static/assets/{index-D-b9KTZd.css → index-BbLr1ieK.css} +1 -1
  40. package/dist/static/assets/{index-BZA3azmT.js → index-Wtgr3A4p.js} +2129 -2129
  41. package/dist/static/assets/{javascript-BLgfe7o3.js → javascript-u87PO7ih.js} +1 -1
  42. package/dist/static/assets/{jsonMode-UDjgnreB.js → jsonMode-0Pf5oAfj.js} +1 -1
  43. package/dist/static/assets/{liquid-Ac_LaddK.js → liquid-CBQoZjUj.js} +1 -1
  44. package/dist/static/assets/{lspLanguageFeatures-CaS0BZM-.js → lspLanguageFeatures-Bnt5qp-g.js} +1 -1
  45. package/dist/static/assets/{mdx-CBtS0OUk.js → mdx-BOZSKWcy.js} +1 -1
  46. package/dist/static/assets/{python-DrY2rXrO.js → python-CLk42i5f.js} +1 -1
  47. package/dist/static/assets/{razor-CF9RDHrz.js → razor-DDV6klIi.js} +1 -1
  48. package/dist/static/assets/{tsMode-Cnimk6sL.js → tsMode-Dgojz_8C.js} +1 -1
  49. package/dist/static/assets/{typescript-CrFzjBjn.js → typescript-BAUzcnL_.js} +1 -1
  50. package/dist/static/assets/{xml-DId6dVHR.js → xml-D5KxV0OO.js} +1 -1
  51. package/dist/static/assets/{yaml-DgRo3t-f.js → yaml-CSq3AYM9.js} +1 -1
  52. package/dist/static/index.html +2 -2
  53. package/dist/static/locales/en/translation.json +4 -0
  54. package/dist/static/locales/fr/translation.json +4 -0
  55. package/dist/tsconfig.build.tsbuildinfo +1 -1
  56. package/dist/utils/helpers/origin.d.ts +4 -0
  57. package/dist/utils/helpers/origin.js +37 -0
  58. package/dist/utils/helpers/origin.js.map +1 -0
  59. package/dist/utils/helpers/parse.d.ts +4 -0
  60. package/dist/utils/helpers/parse.js +49 -0
  61. package/dist/utils/helpers/parse.js.map +1 -0
  62. package/dist/utils/index.d.ts +1 -0
  63. package/dist/utils/index.js +1 -0
  64. package/dist/utils/index.js.map +1 -1
  65. package/dist/websocket/tokens.d.ts +1 -0
  66. package/dist/websocket/tokens.js +5 -0
  67. package/dist/websocket/tokens.js.map +1 -0
  68. package/dist/websocket/utils/gateway-options.d.ts +10 -1
  69. package/dist/websocket/utils/gateway-options.js +91 -38
  70. package/dist/websocket/utils/gateway-options.js.map +1 -1
  71. package/dist/websocket/websocket.module.js +7 -2
  72. package/dist/websocket/websocket.module.js.map +1 -1
  73. package/dist/workflow/services/workflow.service.d.ts +6 -2
  74. package/dist/workflow/services/workflow.service.js +16 -11
  75. package/dist/workflow/services/workflow.service.js.map +1 -1
  76. package/package.json +6 -4
  77. package/src/channel/README.md +2 -1
  78. package/src/channel/channel.controller.ts +1 -0
  79. package/src/channel/lib/Handler.ts +6 -0
  80. package/src/channel/services/source.service.ts +23 -6
  81. package/src/config/index.ts +11 -59
  82. package/src/extensions/actions/ai/ai-base.action.ts +15 -2
  83. package/src/extensions/actions/ai/model.binding.ts +2 -1
  84. package/src/extensions/channels/console/i18n/en.translations.json +1 -6
  85. package/src/extensions/channels/console/i18n/fr.translations.json +1 -6
  86. package/src/extensions/channels/console/index.channel.ts +5 -1
  87. package/src/extensions/channels/console/settings.schema.ts +0 -12
  88. package/src/extensions/channels/web/base-web-channel.ts +13 -8
  89. package/src/extensions/channels/web/services/web-session.service.ts +10 -21
  90. package/src/extensions/channels/web/settings.schema.ts +10 -4
  91. package/src/setting/services/setting.service.ts +4 -3
  92. package/src/utils/helpers/origin.ts +50 -0
  93. package/src/utils/helpers/parse.ts +68 -0
  94. package/src/utils/index.ts +2 -0
  95. package/src/websocket/tokens.ts +7 -0
  96. package/src/websocket/utils/gateway-options.ts +131 -41
  97. package/src/websocket/websocket.module.ts +7 -2
  98. 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"}
@@ -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';
@@ -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);
@@ -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,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WEBSOCKET_GATEWAY = void 0;
4
+ exports.WEBSOCKET_GATEWAY = Symbol('WEBSOCKET_GATEWAY');
5
+ //# sourceMappingURL=tokens.js.map
@@ -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
- export declare const buildWebSocketGatewayOptions: () => Partial<ServerOptions>;
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 buildWebSocketGatewayOptions = () => {
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
- ...(config_1.config.sockets.beforeConnect && {
19
- allowRequest: (handshake, cb) => {
20
- try {
21
- const result = config_1.config.sockets.beforeConnect(handshake);
22
- return cb(null, result);
23
- }
24
- catch (e) {
25
- console.log(`A socket was rejected via the config.sockets.beforeConnect function.\n` +
26
- `It attempted to connect with headers:\n` +
27
- `${util_1.default.inspect(handshake.headers, { depth: null })}\n` +
28
- `Details: ${e}`);
29
- return cb(e, false);
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: async (origin, cb) => {
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":"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"}
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: [websocket_gateway_1.WebsocketGateway, socket_event_dispatcher_service_1.SocketEventDispatcherService],
22
- exports: [websocket_gateway_1.WebsocketGateway],
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;AAQhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAN3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,wBAAU,CAAC;QACrB,SAAS,EAAE,CAAC,oCAAgB,EAAE,8DAA4B,CAAC;QAC3D,OAAO,EAAE,CAAC,oCAAgB,CAAC;KAC5B,CAAC;GACW,eAAe,CAAG"}
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, SocketResponse, WebsocketGateway } from "../../websocket";
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: WebsocketGateway, workflowRunService: WorkflowRunService);
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 websocket_1 = require("../../websocket");
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, websocket_1.Room.WORKFLOW, 'workflow');
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, websocket_1.SocketGet)('/workflow/subscribe/'),
166
- (0, websocket_1.SocketPost)('/workflow/subscribe/'),
167
- __param(0, (0, websocket_1.SocketReq)()),
168
- __param(1, (0, websocket_1.SocketRes)()),
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", [websocket_1.SocketRequest,
171
- websocket_1.SocketResponse]),
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
- __metadata("design:paramtypes", [workflow_repository_1.WorkflowRepository,
231
- websocket_1.WebsocketGateway,
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":"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"}
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.2-beta.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/agentic": "3.1.2-beta.2",
96
- "@hexabot-ai/types": "3.0.2-beta.2"
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.2-beta.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": {
@@ -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
 
@@ -34,6 +34,7 @@ export class ChannelController {
34
34
 
35
35
  return {
36
36
  name: channelName,
37
+ visibility: handler.getVisibility(),
37
38
  settingsSchema: toDraft07JsonSchema(
38
39
  handler.getSourceSettingsSchema(),
39
40
  this.i18nService.getJsonSchemaLocalizationOptions(channelName, lang),
@@ -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