@hexabot-ai/api 3.2.2-alpha.3 → 3.2.2-alpha.5

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 (38) hide show
  1. package/dist/bootstrap.js +4 -1
  2. package/dist/bootstrap.js.map +1 -1
  3. package/dist/extensions/actions/ai/mcp.binding.js +1 -1
  4. package/dist/extensions/actions/ai/mcp.binding.js.map +1 -1
  5. package/dist/extensions/channels/web/base-web-channel.d.ts +1 -0
  6. package/dist/extensions/channels/web/base-web-channel.js +25 -7
  7. package/dist/extensions/channels/web/base-web-channel.js.map +1 -1
  8. package/dist/extensions/channels/web/services/web-session.service.d.ts +6 -0
  9. package/dist/extensions/channels/web/services/web-session.service.js +15 -0
  10. package/dist/extensions/channels/web/services/web-session.service.js.map +1 -1
  11. package/dist/static/assets/{browser-ponyfill-BydLWDRe.js → browser-ponyfill-Rvin9Ku3.js} +1 -1
  12. package/dist/static/assets/{cssMode-DtNyPUki.js → cssMode-BKJJKPS9.js} +1 -1
  13. package/dist/static/assets/{freemarker2-C2XfZce5.js → freemarker2-DjU_PvHQ.js} +1 -1
  14. package/dist/static/assets/{handlebars-C8bj58KH.js → handlebars-Da7m7VT9.js} +1 -1
  15. package/dist/static/assets/{html-A6xaHkJC.js → html-CwWST0K9.js} +1 -1
  16. package/dist/static/assets/{htmlMode-BaS0W7vp.js → htmlMode-BQ61_ox3.js} +1 -1
  17. package/dist/static/assets/{index-BoAD0ucA.js → index-BXf2qIjh.js} +237 -237
  18. package/dist/static/assets/{javascript-B0ziESIH.js → javascript-sKC6uuoK.js} +1 -1
  19. package/dist/static/assets/{jsonMode-Ce5isNkh.js → jsonMode-BZQ1ER6P.js} +1 -1
  20. package/dist/static/assets/{liquid-DgK1yfp4.js → liquid-DnTqZQQw.js} +1 -1
  21. package/dist/static/assets/{lspLanguageFeatures-Dm_9PmPd.js → lspLanguageFeatures-CWyqg7zG.js} +1 -1
  22. package/dist/static/assets/{mdx-DoyiAUI-.js → mdx-BBVoKyR7.js} +1 -1
  23. package/dist/static/assets/{python-D3i33SIz.js → python-CJvKRo4Z.js} +1 -1
  24. package/dist/static/assets/{razor-CmE-9YdK.js → razor-CMT0JFg5.js} +1 -1
  25. package/dist/static/assets/{tsMode-Ct_NvUwl.js → tsMode-uByaAPGE.js} +1 -1
  26. package/dist/static/assets/{typescript-ynHJup65.js → typescript-ZSO8tx9G.js} +1 -1
  27. package/dist/static/assets/{xml-BymLyoKX.js → xml-CgZcfrRz.js} +1 -1
  28. package/dist/static/assets/{yaml-Cn2RaxHO.js → yaml-DTsTIIIk.js} +1 -1
  29. package/dist/static/index.html +1 -1
  30. package/dist/tsconfig.build.tsbuildinfo +1 -1
  31. package/dist/workflow/entities/workflow.entity.js +2 -2
  32. package/dist/workflow/entities/workflow.entity.js.map +1 -1
  33. package/package.json +4 -4
  34. package/src/bootstrap.ts +4 -1
  35. package/src/extensions/actions/ai/mcp.binding.ts +1 -1
  36. package/src/extensions/channels/web/base-web-channel.ts +44 -7
  37. package/src/extensions/channels/web/services/web-session.service.ts +35 -0
  38. package/src/workflow/entities/workflow.entity.ts +2 -2
@@ -54,8 +54,8 @@ let WorkflowOrmEntity = WorkflowOrmEntity_1 = class WorkflowOrmEntity extends ba
54
54
  await event.manager.save(workflow_version_entity_1.WorkflowVersionOrmEntity, version);
55
55
  }
56
56
  catch (error) {
57
- const code = error?.code ?? error?.driverError?.code;
58
- if (typeof code !== 'string' || !code.startsWith('SQLITE_CONSTRAINT')) {
57
+ const codes = [error?.code, error?.driverError?.code];
58
+ if (!codes.includes('SQLITE_CONSTRAINT_UNIQUE')) {
59
59
  throw error;
60
60
  }
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.entity.js","sourceRoot":"","sources":["../../../src/workflow/entities/workflow.entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.entity.js","sourceRoot":"","sources":["../../../src/workflow/entities/workflow.entity.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-alpha.3",
4
+ "version": "3.2.2-alpha.5",
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
  "typeorm": "^0.3.28",
91
91
  "yaml": "^2.8.3",
92
92
  "zod": "^4.3.6",
93
- "@hexabot-ai/agentic": "3.1.2-alpha.3",
94
- "@hexabot-ai/types": "3.0.2-alpha.3"
93
+ "@hexabot-ai/agentic": "3.1.2-alpha.5",
94
+ "@hexabot-ai/types": "3.0.2-alpha.5"
95
95
  },
96
96
  "devDependencies": {
97
97
  "@compodoc/compodoc": "^1.1.31",
@@ -142,7 +142,7 @@
142
142
  "tsconfig-paths": "^4.2.0",
143
143
  "tsconfig-paths-jest": "^0.0.1",
144
144
  "typescript": "^5.1.3",
145
- "@hexabot-ai/frontend": "3.2.2-alpha.3"
145
+ "@hexabot-ai/frontend": "3.2.2-alpha.5"
146
146
  },
147
147
  "optionalDependencies": {
148
148
  "@css-inline/css-inline-linux-arm64-musl": "^0.14.1",
package/src/bootstrap.ts CHANGED
@@ -43,6 +43,9 @@ const isProductionEnv = (forced?: boolean): boolean => {
43
43
 
44
44
  return config.env.toLowerCase().includes('prod');
45
45
  };
46
+ const normalizeLocalhostUrl = (url: string): string => {
47
+ return url.replace('://127.0.0.1', '://localhost');
48
+ };
46
49
 
47
50
  export interface HexabotBootstrapOptions {
48
51
  listen?: {
@@ -141,7 +144,7 @@ export async function bootstrapHexabotApp(
141
144
  const host = options.listen?.host ?? '0.0.0.0';
142
145
 
143
146
  await app.listen(port, host);
144
- const appUrl = await app.getUrl();
147
+ const appUrl = normalizeLocalhostUrl(await app.getUrl());
145
148
  Logger.log(`Hexabot is running at ${appUrl}`, 'Hexabot');
146
149
 
147
150
  return app;
@@ -30,7 +30,7 @@ export const aiMcpToolBindingSchema = z.strictObject({
30
30
  'Optional allow-list of MCP tool names. Leave empty to expose all server tools.',
31
31
  'ui:widget': 'AutoCompleteWidget',
32
32
  'ui:options': {
33
- entity: 'McpServerTool',
33
+ entity: 'McpServer',
34
34
  valueKey: 'name',
35
35
  labelKey: 'name',
36
36
  idFormPath: 'server_id',
@@ -74,6 +74,10 @@ import { WebSessionService } from './services/web-session.service';
74
74
  import { WEB_CHANNEL_NAME } from './settings.schema';
75
75
  import { Web } from './types';
76
76
 
77
+ type WebSocketData = Socket['data'] & {
78
+ webMessageQueue?: Promise<void>;
79
+ };
80
+
77
81
  /**
78
82
  * Base handler for the Socket.IO-backed "web" channel.
79
83
  *
@@ -161,6 +165,30 @@ export default abstract class BaseWebChannelHandler<N extends ChannelName>
161
165
  return normalizedSourceId.length > 0 ? normalizedSourceId : null;
162
166
  }
163
167
 
168
+ private enqueueMessageDispatch(
169
+ req: SocketRequest,
170
+ event: MessageInboundEvent,
171
+ ): void {
172
+ const socket = req.socket as Socket & { data?: WebSocketData };
173
+ const socketData = (socket.data ??= {});
174
+ // Keep chatbot processing ordered per socket without making the client ack
175
+ // wait for slow actions, LLM calls, or external integrations.
176
+ const previous = socketData.webMessageQueue ?? Promise.resolve();
177
+ const next = previous
178
+ .catch(() => undefined)
179
+ .then(() => this.channelEventBus.emitMessage(event))
180
+ .catch((err) => {
181
+ this.logger.error('Failed to process web socket message', err);
182
+ });
183
+
184
+ socketData.webMessageQueue = next;
185
+ void next.finally(() => {
186
+ if (socketData.webMessageQueue === next) {
187
+ delete socketData.webMessageQueue;
188
+ }
189
+ });
190
+ }
191
+
164
192
  @OnEvent('hook:websocket:connection', { async: true })
165
193
  async onWebSocketConnection(client: Socket) {
166
194
  try {
@@ -547,15 +575,24 @@ export default abstract class BaseWebChannelHandler<N extends ChannelName>
547
575
  messageEvent.setAuthorForeignId(profile.foreignId);
548
576
  }
549
577
  messageEvent.setCreatedAt(new Date());
578
+ // Resolve the thread before acknowledging the socket request so the
579
+ // client receives a stable thread_id, then dispatch chatbot work later.
580
+ const thread = await this.sessionService.resolveThreadForIncoming(
581
+ req,
582
+ profile.id,
583
+ {
584
+ explicitThreadId: messageEvent.getThreadId(),
585
+ inactivityHours: this.sessionService.resolveInactivityHours(
586
+ source.settings,
587
+ ),
588
+ sourceId: source.id,
589
+ },
590
+ );
591
+ messageEvent.setThreadId(thread.id);
592
+ messageEvent.setThreadIdOnRaw(thread.id);
550
593
 
551
594
  this.broadcast(profile, StdEventType.message, messageEvent.getRaw());
552
- await this.channelEventBus.emitMessage(messageEvent);
553
-
554
- const resolvedThreadId = messageEvent.getThreadId();
555
- if (resolvedThreadId) {
556
- messageEvent.setThreadIdOnRaw(resolvedThreadId);
557
- if (req.session.web) req.session.web.threadId = resolvedThreadId;
558
- }
595
+ this.enqueueMessageDispatch(req, messageEvent);
559
596
 
560
597
  continue;
561
598
  }
@@ -215,6 +215,10 @@ export class WebSessionService {
215
215
  return this.threadService.resolveThread({ subscriberId, explicitThreadId });
216
216
  }
217
217
 
218
+ resolveInactivityHours(settings: unknown): number {
219
+ return this.threadService.resolveInactivityHours(settings);
220
+ }
221
+
218
222
  /**
219
223
  * Resolves a thread from the request query/body and writes the result back
220
224
  * to the session. Used by the subscribe/history flows.
@@ -232,4 +236,35 @@ export class WebSessionService {
232
236
 
233
237
  return thread;
234
238
  }
239
+
240
+ /**
241
+ * Resolves the writable thread for an incoming message and persists it on the
242
+ * socket session before chatbot processing continues asynchronously.
243
+ */
244
+ async resolveThreadForIncoming(
245
+ req: SocketRequest,
246
+ subscriberId: string,
247
+ {
248
+ explicitThreadId,
249
+ inactivityHours,
250
+ sourceId,
251
+ }: {
252
+ explicitThreadId?: string;
253
+ inactivityHours?: number;
254
+ sourceId?: string;
255
+ },
256
+ ): Promise<Thread> {
257
+ const thread = await this.threadService.resolveThreadForIncoming({
258
+ subscriberId,
259
+ explicitThreadId,
260
+ inactivityHours,
261
+ sourceId,
262
+ });
263
+
264
+ if (req.session.web) {
265
+ req.session.web.threadId = thread.id;
266
+ }
267
+
268
+ return thread;
269
+ }
235
270
  }
@@ -181,8 +181,8 @@ export class WorkflowOrmEntity extends BaseOrmEntity<WorkflowDto> {
181
181
  });
182
182
  await event.manager.save(WorkflowVersionOrmEntity, version);
183
183
  } catch (error: any) {
184
- const code = error?.code ?? error?.driverError?.code;
185
- if (typeof code !== 'string' || !code.startsWith('SQLITE_CONSTRAINT')) {
184
+ const codes = [error?.code, error?.driverError?.code];
185
+ if (!codes.includes('SQLITE_CONSTRAINT_UNIQUE')) {
186
186
  throw error;
187
187
  }
188
188
  }