@vezlo/assistant-server 2.2.1 → 2.2.2

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 (64) hide show
  1. package/README.md +9 -5
  2. package/database-schema.sql +9 -0
  3. package/dist/knexfile.js +5 -6
  4. package/dist/knexfile.js.map +1 -1
  5. package/dist/src/bootstrap/initializeServices.d.ts.map +1 -1
  6. package/dist/src/bootstrap/initializeServices.js +12 -1
  7. package/dist/src/bootstrap/initializeServices.js.map +1 -1
  8. package/dist/src/config/global.d.ts.map +1 -1
  9. package/dist/src/config/global.js +10 -1
  10. package/dist/src/config/global.js.map +1 -1
  11. package/dist/src/controllers/AuthController.d.ts +4 -1
  12. package/dist/src/controllers/AuthController.d.ts.map +1 -1
  13. package/dist/src/controllers/AuthController.js +8 -3
  14. package/dist/src/controllers/AuthController.js.map +1 -1
  15. package/dist/src/controllers/ChatController.d.ts +8 -1
  16. package/dist/src/controllers/ChatController.d.ts.map +1 -1
  17. package/dist/src/controllers/ChatController.js +476 -15
  18. package/dist/src/controllers/ChatController.js.map +1 -1
  19. package/dist/src/migrations/005_add_conversation_handoff_columns.d.ts +4 -0
  20. package/dist/src/migrations/005_add_conversation_handoff_columns.d.ts.map +1 -0
  21. package/dist/src/migrations/005_add_conversation_handoff_columns.js +42 -0
  22. package/dist/src/migrations/005_add_conversation_handoff_columns.js.map +1 -0
  23. package/dist/src/schemas/ConversationSchemas.d.ts +125 -33
  24. package/dist/src/schemas/ConversationSchemas.d.ts.map +1 -1
  25. package/dist/src/schemas/ConversationSchemas.js +47 -18
  26. package/dist/src/schemas/ConversationSchemas.js.map +1 -1
  27. package/dist/src/schemas/MessageSchemas.d.ts +9 -0
  28. package/dist/src/schemas/MessageSchemas.d.ts.map +1 -1
  29. package/dist/src/schemas/MessageSchemas.js +3 -1
  30. package/dist/src/schemas/MessageSchemas.js.map +1 -1
  31. package/dist/src/schemas/index.d.ts +134 -33
  32. package/dist/src/schemas/index.d.ts.map +1 -1
  33. package/dist/src/server.js +222 -27
  34. package/dist/src/server.js.map +1 -1
  35. package/dist/src/services/ChatManager.d.ts.map +1 -1
  36. package/dist/src/services/ChatManager.js +26 -29
  37. package/dist/src/services/ChatManager.js.map +1 -1
  38. package/dist/src/services/IntentService.d.ts.map +1 -1
  39. package/dist/src/services/IntentService.js +6 -3
  40. package/dist/src/services/IntentService.js.map +1 -1
  41. package/dist/src/services/RealtimePublisher.d.ts +6 -0
  42. package/dist/src/services/RealtimePublisher.d.ts.map +1 -0
  43. package/dist/src/services/RealtimePublisher.js +43 -0
  44. package/dist/src/services/RealtimePublisher.js.map +1 -0
  45. package/dist/src/storage/ConversationRepository.d.ts +2 -2
  46. package/dist/src/storage/ConversationRepository.d.ts.map +1 -1
  47. package/dist/src/storage/ConversationRepository.js +36 -19
  48. package/dist/src/storage/ConversationRepository.js.map +1 -1
  49. package/dist/src/storage/MessageRepository.d.ts +4 -1
  50. package/dist/src/storage/MessageRepository.d.ts.map +1 -1
  51. package/dist/src/storage/MessageRepository.js +10 -4
  52. package/dist/src/storage/MessageRepository.js.map +1 -1
  53. package/dist/src/storage/SupabaseStorage.d.ts +5 -3
  54. package/dist/src/storage/SupabaseStorage.d.ts.map +1 -1
  55. package/dist/src/storage/SupabaseStorage.js +42 -11
  56. package/dist/src/storage/SupabaseStorage.js.map +1 -1
  57. package/dist/src/storage/UnifiedStorage.d.ts +5 -3
  58. package/dist/src/storage/UnifiedStorage.d.ts.map +1 -1
  59. package/dist/src/storage/UnifiedStorage.js +4 -4
  60. package/dist/src/storage/UnifiedStorage.js.map +1 -1
  61. package/dist/src/types/index.d.ts +24 -4
  62. package/dist/src/types/index.d.ts.map +1 -1
  63. package/knexfile.ts +4 -4
  64. package/package.json +2 -2
@@ -117,8 +117,9 @@ class ChatManager {
117
117
  if (!this.config.storage) {
118
118
  return [];
119
119
  }
120
- const historyLimit = typeof limit === 'number' && limit > 0 ? limit : this.historyLength;
121
- if (historyLimit <= 0) {
120
+ // limit represents number of PAIRS (user+assistant), not raw messages
121
+ const pairLimit = typeof limit === 'number' && limit > 0 ? limit : this.historyLength;
122
+ if (pairLimit <= 0) {
122
123
  return [];
123
124
  }
124
125
  const includePending = options.includePendingMessage ?? false;
@@ -134,35 +135,30 @@ class ChatManager {
134
135
  console.error('Failed to fetch conversation for history:', error);
135
136
  }
136
137
  }
137
- let totalMessages = conversation?.messageCount ?? 0;
138
- if (includePending) {
139
- totalMessages += 1;
140
- }
141
- let offset = 0;
142
- if (totalMessages > historyLimit) {
143
- offset = totalMessages - historyLimit;
144
- }
138
+ // Fetch only user and assistant messages from database
139
+ // Standard approach: fetch limit messages (not pairs), newest first
140
+ const fetchLimit = typeof limit === 'number' && limit > 0 ? limit : this.historyLength;
145
141
  let messages = [];
146
142
  try {
147
- const storedMessages = await this.config.storage.getMessages(threadId, historyLimit, offset);
148
- if (storedMessages.length < historyLimit && offset > 0) {
149
- // Fallback: fetch from start and take latest N in case message counts are out of sync
150
- const retryMessages = await this.config.storage.getMessages(threadId, historyLimit);
151
- messages = retryMessages.slice(-historyLimit).map(msg => ({
152
- role: msg.role,
153
- content: msg.content,
154
- createdAt: msg.createdAt,
155
- toolResults: msg.toolResults
156
- }));
157
- }
158
- else {
159
- messages = storedMessages.slice(-historyLimit).map(msg => ({
160
- role: msg.role,
161
- content: msg.content,
162
- createdAt: msg.createdAt,
163
- toolResults: msg.toolResults
164
- }));
143
+ // Fetch only user and assistant messages (filter at DB level)
144
+ // Fetch in DESC order (newest first) to ensure we get latest context
145
+ const storedMessages = await this.config.storage.getMessages(threadId, fetchLimit, 0, {
146
+ types: ['user', 'assistant'],
147
+ order: 'desc'
148
+ });
149
+ if (storedMessages.length === 0) {
150
+ return [];
165
151
  }
152
+ // Reverse to get chronological order (oldest first) for LLM
153
+ storedMessages.reverse();
154
+ // Convert to ChatMessage format - no pairing, keep all messages as-is
155
+ messages = storedMessages.map(msg => ({
156
+ id: msg.id,
157
+ role: msg.role,
158
+ content: msg.content,
159
+ createdAt: msg.createdAt,
160
+ toolResults: msg.toolResults
161
+ }));
166
162
  }
167
163
  catch (error) {
168
164
  console.error('Failed to get recent messages:', error);
@@ -175,7 +171,8 @@ class ChatManager {
175
171
  return [];
176
172
  }
177
173
  try {
178
- return await this.config.storage.getUserConversations(userId, organizationId);
174
+ const result = await this.config.storage.getUserConversations(userId, organizationId);
175
+ return result.conversations;
179
176
  }
180
177
  catch (error) {
181
178
  console.error('Failed to get user conversations:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"ChatManager.js","sourceRoot":"","sources":["../../../src/services/ChatManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatManager.js","sourceRoot":"","sources":["../../../src/services/ChatManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IntentService.d.ts","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,KAAK,WAAW,GACZ,WAAW,GACX,UAAU,GACV,aAAa,GACb,eAAe,GACf,WAAW,GACX,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC;CACrC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,mBAAmB;IASjC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAkC/E,OAAO,CAAC,qBAAqB;IAmD7B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"IntentService.d.ts","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,KAAK,WAAW,GACZ,WAAW,GACX,UAAU,GACV,aAAa,GACb,eAAe,GACf,WAAW,GACX,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC;CACrC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,mBAAmB;IASjC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAkC/E,OAAO,CAAC,qBAAqB;IAsD7B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,aAAa;CAOtB"}
@@ -45,6 +45,8 @@ class IntentService {
45
45
  }
46
46
  buildClassifierPrompt(input) {
47
47
  const history = input.conversationHistory || [];
48
+ // Use all provided history (already limited by CHAT_HISTORY_LENGTH in ChatController)
49
+ // No need to trim further - respect the configured limit
48
50
  const systemMessage = {
49
51
  role: 'system',
50
52
  content: `You are an intent classifier for ${this.assistantName}, the AI assistant for ${this.organizationName}.
@@ -75,12 +77,13 @@ Important:
75
77
  - Always respond with valid JSON matching the schema.`
76
78
  };
77
79
  const messages = [systemMessage];
80
+ // Use all provided history (already limited by CHAT_HISTORY_LENGTH)
78
81
  if (history.length > 0) {
79
- const trimmedHistory = history.slice(-6).map(msg => ({
80
- role: msg.role,
82
+ const historyMessages = history.map(msg => ({
83
+ role: msg.role === 'user' || msg.role === 'assistant' ? msg.role : 'assistant',
81
84
  content: msg.content
82
85
  }));
83
- messages.push(...trimmedHistory);
86
+ messages.push(...historyMessages);
84
87
  }
85
88
  messages.push({
86
89
  role: 'user',
@@ -1 +1 @@
1
- {"version":3,"file":"IntentService.js","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntentService.js","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class RealtimePublisher {
2
+ private client;
3
+ constructor(supabaseUrl: string, serviceKey: string);
4
+ publish(channelName: string, event: string, payload: Record<string, unknown>): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=RealtimePublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimePublisher.d.ts","sourceRoot":"","sources":["../../../src/services/RealtimePublisher.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAS7C,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA0BnF"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RealtimePublisher = void 0;
7
+ const supabase_js_1 = require("@supabase/supabase-js");
8
+ const logger_1 = __importDefault(require("../config/logger"));
9
+ class RealtimePublisher {
10
+ constructor(supabaseUrl, serviceKey) {
11
+ this.client = (0, supabase_js_1.createClient)(supabaseUrl, serviceKey, {
12
+ auth: {
13
+ autoRefreshToken: false,
14
+ persistSession: false
15
+ }
16
+ });
17
+ }
18
+ async publish(channelName, event, payload) {
19
+ try {
20
+ logger_1.default.info(`[RealtimePublisher] Publishing event "${event}" to channel "${channelName}"`);
21
+ const channel = this.client.channel(channelName);
22
+ const result = await channel.send({
23
+ type: 'broadcast',
24
+ event: event,
25
+ payload: payload
26
+ });
27
+ if (result !== 'ok') {
28
+ const errorMsg = `Failed to send broadcast: ${result}`;
29
+ logger_1.default.error(`[RealtimePublisher] ${errorMsg}`);
30
+ throw new Error(errorMsg);
31
+ }
32
+ logger_1.default.info(`[RealtimePublisher] Successfully published event "${event}" to channel "${channelName}"`);
33
+ await channel.unsubscribe();
34
+ }
35
+ catch (error) {
36
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
37
+ logger_1.default.error(`[RealtimePublisher] Failed to publish realtime event: ${errorMessage}`, error);
38
+ throw error;
39
+ }
40
+ }
41
+ }
42
+ exports.RealtimePublisher = RealtimePublisher;
43
+ //# sourceMappingURL=RealtimePublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimePublisher.js","sourceRoot":"","sources":["../../../src/services/RealtimePublisher.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA0E;AAC1E,8DAAsC;AAEtC,MAAa,iBAAiB;IAG5B,YAAY,WAAmB,EAAE,UAAkB;QACjD,IAAI,CAAC,MAAM,GAAG,IAAA,0BAAY,EAAC,WAAW,EAAE,UAAU,EAAE;YAClD,IAAI,EAAE;gBACJ,gBAAgB,EAAE,KAAK;gBACvB,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,KAAa,EAAE,OAAgC;QAChF,IAAI,CAAC;YACH,gBAAM,CAAC,IAAI,CAAC,yCAAyC,KAAK,iBAAiB,WAAW,GAAG,CAAC,CAAC;YAC3F,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,WAAW;gBACvB,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,6BAA6B,MAAM,EAAE,CAAC;gBACvD,gBAAM,CAAC,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAED,gBAAM,CAAC,IAAI,CAAC,qDAAqD,KAAK,iBAAiB,WAAW,GAAG,CAAC,CAAC;YACvG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;QAE9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,gBAAM,CAAC,KAAK,CAAC,yDAAyD,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAtCD,8CAsCC"}
@@ -1,5 +1,5 @@
1
1
  import { SupabaseClient } from '@supabase/supabase-js';
2
- import { ChatConversation } from '../types';
2
+ import { ChatConversation, ConversationListOptions, ConversationListResult } from '../types';
3
3
  export declare class ConversationRepository {
4
4
  private supabase;
5
5
  private tablePrefix;
@@ -9,7 +9,7 @@ export declare class ConversationRepository {
9
9
  getConversation(conversationId: string): Promise<ChatConversation | null>;
10
10
  updateConversation(conversationId: string, updates: Partial<ChatConversation>): Promise<ChatConversation>;
11
11
  deleteConversation(conversationId: string): Promise<boolean>;
12
- getUserConversations(userId: string, organizationId?: string): Promise<ChatConversation[]>;
12
+ getUserConversations(userId: string, organizationId?: string, options?: ConversationListOptions): Promise<ConversationListResult>;
13
13
  private rowToConversation;
14
14
  }
15
15
  //# sourceMappingURL=ConversationRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/ConversationRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,cAAc,EAAE,WAAW,GAAE,MAAW;IAK9D,OAAO,CAAC,YAAY;IAId,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0C3E,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAiBzE,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBzG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5D,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YA+BlF,iBAAiB;CAkChC"}
1
+ {"version":3,"file":"ConversationRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/ConversationRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,cAAc,EAAE,WAAW,GAAE,MAAW;IAK9D,OAAO,CAAC,YAAY;IAId,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2C3E,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkBzE,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBzG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5D,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC;YAuCpB,iBAAiB;CAsChC"}
@@ -40,7 +40,8 @@ class ConversationRepository {
40
40
  creator_id: creatorId,
41
41
  message_count: conversation.messageCount || 0,
42
42
  created_at: conversation.createdAt?.toISOString() || new Date().toISOString(),
43
- updated_at: conversation.updatedAt?.toISOString() || new Date().toISOString()
43
+ updated_at: conversation.updatedAt?.toISOString() || new Date().toISOString(),
44
+ last_message_at: conversation.lastMessageAt?.toISOString() || conversation.createdAt?.toISOString() || new Date().toISOString()
44
45
  })
45
46
  .select()
46
47
  .single();
@@ -55,6 +56,7 @@ class ConversationRepository {
55
56
  .from(tableName)
56
57
  .select('*')
57
58
  .eq('uuid', conversationId)
59
+ .is('deleted_at', null)
58
60
  .single();
59
61
  if (error) {
60
62
  if (error.code === 'PGRST116')
@@ -70,6 +72,14 @@ class ConversationRepository {
70
72
  updateData.title = updates.title;
71
73
  if (updates.messageCount !== undefined)
72
74
  updateData.message_count = updates.messageCount;
75
+ if (updates.lastMessageAt !== undefined)
76
+ updateData.last_message_at = updates.lastMessageAt instanceof Date ? updates.lastMessageAt.toISOString() : updates.lastMessageAt;
77
+ if (updates.joinedAt !== undefined)
78
+ updateData.joined_at = updates.joinedAt instanceof Date ? updates.joinedAt.toISOString() : updates.joinedAt;
79
+ if (updates.respondedAt !== undefined)
80
+ updateData.responded_at = updates.respondedAt instanceof Date ? updates.respondedAt.toISOString() : updates.respondedAt;
81
+ if (updates.closedAt !== undefined)
82
+ updateData.closed_at = updates.closedAt instanceof Date ? updates.closedAt.toISOString() : updates.closedAt;
73
83
  updateData.updated_at = new Date().toISOString();
74
84
  const { data, error } = await this.supabase
75
85
  .from(tableName)
@@ -91,31 +101,34 @@ class ConversationRepository {
91
101
  throw new Error(`Failed to delete conversation: ${error.message}`);
92
102
  return true;
93
103
  }
94
- async getUserConversations(userId, organizationId) {
104
+ async getUserConversations(userId, organizationId, options = {}) {
95
105
  const tableName = this.getTableName('conversations');
106
+ const { limit, offset, orderBy } = options;
107
+ const orderColumn = orderBy === 'last_message_at' ? 'last_message_at' : 'updated_at';
108
+ const from = typeof offset === 'number' && offset >= 0 ? offset : 0;
109
+ const pageSize = typeof limit === 'number' && limit > 0 ? limit : undefined;
96
110
  let query = this.supabase
97
111
  .from(tableName)
98
- .select('*')
99
- .eq('creator_id', parseInt(userId) || 1)
100
- .order('updated_at', { ascending: false });
112
+ .select('*', { count: 'exact' })
113
+ .is('deleted_at', null);
101
114
  if (organizationId) {
102
115
  query = query.eq('company_id', parseInt(organizationId) || 1);
103
116
  }
104
- const { data, error } = await query;
117
+ else {
118
+ query = query.eq('creator_id', parseInt(userId) || 1);
119
+ }
120
+ query = query.order(orderColumn, { ascending: false, nullsFirst: false });
121
+ if (pageSize) {
122
+ query = query.range(from, from + pageSize - 1);
123
+ }
124
+ const { data, error, count } = await query;
105
125
  if (error)
106
126
  throw new Error(`Failed to get user conversations: ${error.message}`);
107
- // Note: getUserConversations doesn't need UUIDs since we're using the internal ID for filtering
108
- // The ChatController handles the response mapping
109
- return (data || []).map(row => ({
110
- id: row.uuid,
111
- threadId: row.uuid,
112
- title: row.title,
113
- userId: row.creator_id?.toString() || '1',
114
- organizationId: row.company_id?.toString(),
115
- messageCount: row.message_count || 0,
116
- createdAt: new Date(row.created_at),
117
- updatedAt: row.updated_at ? new Date(row.updated_at) : new Date(row.created_at)
118
- }));
127
+ const conversations = await Promise.all((data || []).map(row => this.rowToConversation(row)));
128
+ return {
129
+ conversations,
130
+ total: typeof count === 'number' ? count : conversations.length
131
+ };
119
132
  }
120
133
  async rowToConversation(row, fetchUuids = false) {
121
134
  let userId = row.creator_id?.toString() || '1';
@@ -144,7 +157,11 @@ class ConversationRepository {
144
157
  organizationId,
145
158
  messageCount: row.message_count || 0,
146
159
  createdAt: new Date(row.created_at),
147
- updatedAt: row.updated_at ? new Date(row.updated_at) : new Date(row.created_at)
160
+ updatedAt: row.updated_at ? new Date(row.updated_at) : new Date(row.created_at),
161
+ joinedAt: row.joined_at ? new Date(row.joined_at) : undefined,
162
+ respondedAt: row.responded_at ? new Date(row.responded_at) : undefined,
163
+ closedAt: row.closed_at ? new Date(row.closed_at) : undefined,
164
+ lastMessageAt: row.last_message_at ? new Date(row.last_message_at) : undefined
148
165
  };
149
166
  }
150
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationRepository.js","sourceRoot":"","sources":["../../../src/storage/ConversationRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationRepository.js","sourceRoot":"","sources":["../../../src/storage/ConversationRepository.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,10 @@ export declare class MessageRepository {
6
6
  constructor(supabase: SupabaseClient, tablePrefix?: string);
7
7
  private getTableName;
8
8
  saveMessage(message: StoredChatMessage): Promise<StoredChatMessage>;
9
- getMessages(conversationId: string, limit?: number, offset?: number): Promise<StoredChatMessage[]>;
9
+ getMessages(conversationId: string, limit?: number, offset?: number, options?: {
10
+ order?: 'asc' | 'desc';
11
+ types?: string[];
12
+ }): Promise<StoredChatMessage[]>;
10
13
  deleteMessage(messageId: string): Promise<boolean>;
11
14
  getMessageById(messageId: string): Promise<StoredChatMessage | null>;
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/MessageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,cAAc,EAAE,WAAW,GAAE,MAAW;IAK9D,OAAO,CAAC,YAAY;IAId,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwFnE,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwCzF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CA4C3E"}
1
+ {"version":3,"file":"MessageRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/MessageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,cAAc,EAAE,WAAW,GAAE,MAAW;IAK9D,OAAO,CAAC,YAAY;IAId,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwFnE,WAAW,CACf,cAAc,EAAE,MAAM,EACtB,KAAK,SAAK,EACV,MAAM,SAAI,EACV,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GACzD,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAiDzB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CA4C3E"}
@@ -93,7 +93,7 @@ class MessageRepository {
93
93
  };
94
94
  }
95
95
  }
96
- async getMessages(conversationId, limit = 50, offset = 0) {
96
+ async getMessages(conversationId, limit = 50, offset = 0, options = {}) {
97
97
  const tableName = this.getTableName('messages');
98
98
  // First get the conversation internal ID
99
99
  const conversationQuery = await this.supabase
@@ -104,11 +104,17 @@ class MessageRepository {
104
104
  if (conversationQuery.error) {
105
105
  throw new Error(`Failed to find conversation: ${conversationQuery.error.message}`);
106
106
  }
107
- const { data, error } = await this.supabase
107
+ const ascending = options.order !== 'desc';
108
+ let query = this.supabase
108
109
  .from(tableName)
109
110
  .select('*')
110
- .eq('conversation_id', conversationQuery.data.id)
111
- .order('created_at', { ascending: true })
111
+ .eq('conversation_id', conversationQuery.data.id);
112
+ // Filter by message types if specified
113
+ if (options.types && options.types.length > 0) {
114
+ query = query.in('type', options.types);
115
+ }
116
+ const { data, error } = await query
117
+ .order('created_at', { ascending })
112
118
  .range(offset, offset + limit - 1);
113
119
  if (error)
114
120
  throw new Error(`Failed to get messages: ${error.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRepository.js","sourceRoot":"","sources":["../../../src/storage/MessageRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageRepository.js","sourceRoot":"","sources":["../../../src/storage/MessageRepository.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAI5B,YAAY,QAAwB,EAAE,cAAsB,EAAE;QAC5D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA0B;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACf,0BAA0B;YAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;iBACxC,IAAI,CAAC,SAAS,CAAC;iBACf,MAAM,CAAC;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC9E,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC,CAAC;iBACD,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;iBACtB,MAAM,EAAE;iBACR,MAAM,EAAE,CAAC;YAEZ,IAAI,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrC,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,IAAI;gBACb,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,QAAQ,CAAC,UAAU;gBAC9B,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,eAAe,EAAE,IAAI,CAAC,iBAAiB;gBACvC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aACnE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ;iBAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;iBACxC,MAAM,CAAC,IAAI,CAAC;iBACZ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;iBAClC,MAAM,EAAE,CAAC;YAEZ,IAAI,iBAAiB,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAEhH,gEAAgE;YAChE,IAAI,uBAAuB,GAAG,IAAI,CAAC;YACnC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,QAAQ;qBAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;qBACnC,MAAM,CAAC,IAAI,CAAC;qBACZ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC;qBACnC,MAAM,EAAE,CAAC;gBAEZ,IAAI,kBAAkB,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBACzD,uBAAuB,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;iBACxC,IAAI,CAAC,SAAS,CAAC;iBACf,MAAM,CAAC;gBACN,eAAe,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE;gBAC1C,iBAAiB,EAAE,uBAAuB;gBAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC9E,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;aAC5C,CAAC;iBACD,MAAM,EAAE;iBACR,MAAM,EAAE,CAAC;YAEZ,IAAI,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrC,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,IAAI;gBACb,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,QAAQ,CAAC,UAAU;gBAC9B,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,cAAsB,EACtB,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,CAAC,EACV,UAAwD,EAAE;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,yCAAyC;QACzC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ;aAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;aACxC,MAAM,CAAC,IAAI,CAAC;aACZ,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;aAC1B,MAAM,EAAE,CAAC;QAEZ,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,gCAAgC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC;QAE3C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;aACtB,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpD,uCAAuC;QACvC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK;aAChC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC;aAClC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YACpC,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,IAAI;gBACZ,cAAc,EAAE,cAAc;gBAC9B,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,QAAQ,CAAC,UAAU;gBAC9B,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,eAAe,EAAE,GAAG,CAAC,iBAAiB;gBACtC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,EAAE;aACR,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEzB,IAAI,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,wBAAwB;QACxB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACnE,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;aACrB,MAAM,EAAE,CAAC;QAEZ,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC,CAAC,YAAY;YAC/D,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,2CAA2C;QAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9D,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAC7E,IAAI,CAAC,kBAAkB,CAAC;aACxB,MAAM,CAAC,MAAM,CAAC;aACd,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC;aACrC,MAAM,EAAE,CAAC;QAEZ,IAAI,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE5C,OAAO;YACL,EAAE,EAAE,WAAW,CAAC,IAAI;YACpB,cAAc,EAAE,gBAAgB,CAAC,IAAI;YACrC,QAAQ,EAAE,gBAAgB,CAAC,IAAI;YAC/B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,SAAS,EAAE,QAAQ,CAAC,UAAU;YAC9B,WAAW,EAAE,QAAQ,CAAC,YAAY;YAClC,eAAe,EAAE,WAAW,CAAC,iBAAiB;YAC9C,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YAC3C,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;SACjF,CAAC;IACJ,CAAC;CACF;AAnND,8CAmNC"}
@@ -1,5 +1,5 @@
1
1
  import { SupabaseClient } from '@supabase/supabase-js';
2
- import { ChatStorage, ChatConversation, StoredChatMessage, Feedback } from '../types';
2
+ import { ChatStorage, ChatConversation, StoredChatMessage, Feedback, ConversationListOptions, ConversationListResult } from '../types';
3
3
  export declare class SupabaseStorage implements ChatStorage {
4
4
  private supabase;
5
5
  private tablePrefix;
@@ -9,9 +9,11 @@ export declare class SupabaseStorage implements ChatStorage {
9
9
  getConversation(conversationId: string): Promise<ChatConversation | null>;
10
10
  updateConversation(conversationId: string, updates: Partial<ChatConversation>): Promise<ChatConversation>;
11
11
  deleteConversation(conversationId: string): Promise<boolean>;
12
- getUserConversations(userId: string, organizationId?: string): Promise<ChatConversation[]>;
12
+ getUserConversations(userId: string, organizationId?: string, options?: ConversationListOptions): Promise<ConversationListResult>;
13
13
  saveMessage(message: StoredChatMessage): Promise<StoredChatMessage>;
14
- getMessages(conversationId: string, limit?: number, offset?: number): Promise<StoredChatMessage[]>;
14
+ getMessages(conversationId: string, limit?: number, offset?: number, options?: {
15
+ order?: 'asc' | 'desc';
16
+ }): Promise<StoredChatMessage[]>;
15
17
  deleteMessage(messageId: string): Promise<boolean>;
16
18
  saveFeedback(feedback: Feedback): Promise<Feedback>;
17
19
  getFeedback(messageId: string): Promise<Feedback[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"SupabaseStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/SupabaseStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACT,MAAM,UAAU,CAAC;AAElB,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAG1B,QAAQ,EAAE,cAAc,EACxB,WAAW,GAAE,MAAW;IAM1B,OAAO,CAAC,YAAY;IAId,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwC3E,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkBzE,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqBzG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5D,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAwB1F,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuFnE,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAmCzF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsEnD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgCzD,OAAO,CAAC,iBAAiB;CAc1B"}
1
+ {"version":3,"file":"SupabaseStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/SupabaseStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAG1B,QAAQ,EAAE,cAAc,EACxB,WAAW,GAAE,MAAW;IAM1B,OAAO,CAAC,YAAY;IAId,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyC3E,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkBzE,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiCzG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5D,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC;IAuC5B,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuFnE,WAAW,CACf,cAAc,EAAE,MAAM,EACtB,KAAK,SAAK,EACV,MAAM,SAAI,EACV,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAO,GACvC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqCzB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsEnD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgCzD,OAAO,CAAC,iBAAiB;CAkB1B"}
@@ -38,7 +38,8 @@ class SupabaseStorage {
38
38
  title: conversation.title,
39
39
  message_count: conversation.messageCount,
40
40
  created_at: conversation.createdAt.toISOString(),
41
- updated_at: conversation.updatedAt.toISOString()
41
+ updated_at: conversation.updatedAt.toISOString(),
42
+ last_message_at: conversation.lastMessageAt?.toISOString() || conversation.createdAt.toISOString()
42
43
  })
43
44
  .select()
44
45
  .single();
@@ -71,6 +72,18 @@ class SupabaseStorage {
71
72
  updateData.title = updates.title;
72
73
  if (updates.messageCount !== undefined)
73
74
  updateData.message_count = updates.messageCount;
75
+ if (updates.lastMessageAt !== undefined) {
76
+ updateData.last_message_at = updates.lastMessageAt instanceof Date ? updates.lastMessageAt.toISOString() : updates.lastMessageAt;
77
+ }
78
+ if (updates.joinedAt !== undefined) {
79
+ updateData.joined_at = updates.joinedAt instanceof Date ? updates.joinedAt.toISOString() : updates.joinedAt;
80
+ }
81
+ if (updates.respondedAt !== undefined) {
82
+ updateData.responded_at = updates.respondedAt instanceof Date ? updates.respondedAt.toISOString() : updates.respondedAt;
83
+ }
84
+ if (updates.closedAt !== undefined) {
85
+ updateData.closed_at = updates.closedAt instanceof Date ? updates.closedAt.toISOString() : updates.closedAt;
86
+ }
74
87
  const { data, error } = await this.supabase
75
88
  .from(tableName)
76
89
  .update(updateData)
@@ -91,24 +104,37 @@ class SupabaseStorage {
91
104
  throw new Error(`Failed to delete conversation: ${error.message}`);
92
105
  return true;
93
106
  }
94
- async getUserConversations(userId, organizationId) {
107
+ async getUserConversations(userId, organizationId, options = {}) {
95
108
  const tableName = this.getTableName('conversations');
96
109
  // Convert string IDs to integers (dummy IDs for now)
97
110
  const creatorId = parseInt(userId) || 1;
98
111
  const companyId = organizationId ? parseInt(organizationId) || 1 : null;
112
+ const { limit, offset, orderBy } = options;
113
+ const orderColumn = orderBy === 'last_message_at' ? 'last_message_at' : 'updated_at';
114
+ const from = typeof offset === 'number' && offset >= 0 ? offset : 0;
115
+ const pageSize = typeof limit === 'number' && limit > 0 ? limit : undefined;
99
116
  let query = this.supabase
100
117
  .from(tableName)
101
- .select('*')
102
- .eq('creator_id', creatorId)
103
- .is('deleted_at', null)
104
- .order('updated_at', { ascending: false });
118
+ .select('*', { count: 'exact' })
119
+ .is('deleted_at', null);
105
120
  if (companyId) {
106
121
  query = query.eq('company_id', companyId);
107
122
  }
108
- const { data, error } = await query;
123
+ else {
124
+ query = query.eq('creator_id', creatorId);
125
+ }
126
+ query = query.order(orderColumn, { ascending: false, nullsFirst: false });
127
+ if (pageSize) {
128
+ query = query.range(from, from + pageSize - 1);
129
+ }
130
+ const { data, error, count } = await query;
109
131
  if (error)
110
132
  throw new Error(`Failed to get user conversations: ${error.message}`);
111
- return data.map(row => this.rowToConversation(row));
133
+ const conversations = (data || []).map(row => this.rowToConversation(row));
134
+ return {
135
+ conversations,
136
+ total: typeof count === 'number' ? count : conversations.length
137
+ };
112
138
  }
113
139
  async saveMessage(message) {
114
140
  const tableName = this.getTableName('messages');
@@ -193,8 +219,9 @@ class SupabaseStorage {
193
219
  };
194
220
  }
195
221
  }
196
- async getMessages(conversationId, limit = 50, offset = 0) {
222
+ async getMessages(conversationId, limit = 50, offset = 0, options = {}) {
197
223
  // Join messages with conversations to get conversation UUID
224
+ const ascending = options.order !== 'desc';
198
225
  const { data, error } = await this.supabase
199
226
  .from(this.getTableName('messages'))
200
227
  .select(`
@@ -209,7 +236,7 @@ class SupabaseStorage {
209
236
  ` + this.getTableName('conversations') + `!inner(uuid)
210
237
  `)
211
238
  .eq(`${this.getTableName('conversations')}.uuid`, conversationId)
212
- .order('created_at', { ascending: true })
239
+ .order('created_at', { ascending })
213
240
  .range(offset, offset + limit - 1);
214
241
  if (error)
215
242
  throw new Error(`Failed to get messages: ${error.message}`);
@@ -343,7 +370,11 @@ class SupabaseStorage {
343
370
  messageCount: row.message_count,
344
371
  createdAt: new Date(row.created_at),
345
372
  updatedAt: new Date(row.updated_at),
346
- deletedAt: row.deleted_at ? new Date(row.deleted_at) : undefined
373
+ deletedAt: row.deleted_at ? new Date(row.deleted_at) : undefined,
374
+ joinedAt: row.joined_at ? new Date(row.joined_at) : undefined,
375
+ respondedAt: row.responded_at ? new Date(row.responded_at) : undefined,
376
+ closedAt: row.closed_at ? new Date(row.closed_at) : undefined,
377
+ lastMessageAt: row.last_message_at ? new Date(row.last_message_at) : undefined
347
378
  };
348
379
  }
349
380
  }