@aichatwar/shared 1.0.107 → 1.0.109

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.
@@ -39,3 +39,35 @@ export interface MessageDeletedEvent {
39
39
  deletedAt: string;
40
40
  };
41
41
  }
42
+ export interface AiMessageCreatedEvent {
43
+ subject: Subjects.AiMessageCreated;
44
+ data: {
45
+ messageId: string;
46
+ roomId: string;
47
+ senderId: string;
48
+ senderType: 'human' | 'agent';
49
+ content: string;
50
+ attachments?: Array<{
51
+ url: string;
52
+ type: string;
53
+ meta: any;
54
+ }>;
55
+ createdAt: string;
56
+ dedupeKey: string;
57
+ aiReceivers: Array<{
58
+ agentId: string;
59
+ ownerUserId: string;
60
+ }>;
61
+ };
62
+ }
63
+ export interface AiMessageReplyEvent {
64
+ subject: Subjects.AiMessageReply;
65
+ data: {
66
+ originalMessageId: string;
67
+ roomId: string;
68
+ agentId: string;
69
+ ownerUserId: string;
70
+ content: string;
71
+ tempId?: string;
72
+ };
73
+ }
@@ -33,5 +33,7 @@ export declare enum Subjects {
33
33
  MessageRead = "message.read",
34
34
  MessageDeleted = "message.deleted",
35
35
  MessageIngest = "message.ingest",
36
+ AiMessageCreated = "ai.message.created",
37
+ AiMessageReply = "ai.message.reply",
36
38
  PresenceUpdated = "presence.updated"
37
39
  }
@@ -37,5 +37,7 @@ var Subjects;
37
37
  Subjects["MessageRead"] = "message.read";
38
38
  Subjects["MessageDeleted"] = "message.deleted";
39
39
  Subjects["MessageIngest"] = "message.ingest";
40
+ Subjects["AiMessageCreated"] = "ai.message.created";
41
+ Subjects["AiMessageReply"] = "ai.message.reply";
40
42
  Subjects["PresenceUpdated"] = "presence.updated";
41
43
  })(Subjects || (exports.Subjects = Subjects = {}));
@@ -8,18 +8,31 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
8
  ;
9
9
  const extractJWTPayload = (req, res, next) => {
10
10
  var _a;
11
- if (!((_a = req.session) === null || _a === void 0 ? void 0 : _a.jwt)) {
12
- return next();
11
+ let token;
12
+ // First, try to get token from session (cookie-based auth for web)
13
+ if ((_a = req.session) === null || _a === void 0 ? void 0 : _a.jwt) {
14
+ token = req.session.jwt;
13
15
  }
14
- else {
15
- try {
16
- const payload = jsonwebtoken_1.default.verify(req.session.jwt, process.env.JWT_DEV);
17
- req.jwtPayload = payload;
18
- }
19
- catch (error) {
20
- console.log(error.message);
16
+ // If no session token, try to get from Authorization header (Bearer token for mobile)
17
+ else if (req.headers.authorization) {
18
+ const authHeader = req.headers.authorization;
19
+ if (authHeader.startsWith('Bearer ')) {
20
+ token = authHeader.substring(7); // Remove 'Bearer ' prefix
21
21
  }
22
+ }
23
+ // If no token found, continue without setting jwtPayload
24
+ if (!token) {
22
25
  return next();
23
26
  }
27
+ // Verify and extract JWT payload
28
+ try {
29
+ const payload = jsonwebtoken_1.default.verify(token, process.env.JWT_DEV);
30
+ req.jwtPayload = payload;
31
+ }
32
+ catch (error) {
33
+ console.log(`JWT verification failed: ${error.message}`);
34
+ // Continue without setting jwtPayload - loginRequired middleware will handle 401
35
+ }
36
+ return next();
24
37
  };
25
38
  exports.extractJWTPayload = extractJWTPayload;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aichatwar/shared",
3
- "version": "1.0.107",
3
+ "version": "1.0.109",
4
4
  "main": "./build/index.js",
5
5
  "typs": "./build/index.d.ts",
6
6
  "files": [