@vezlo/assistant-server 1.3.0 → 2.0.0

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 (113) hide show
  1. package/README.md +140 -43
  2. package/bin/vezlo-server.js +1 -1
  3. package/database-schema.sql +193 -33
  4. package/dist/knexfile.d.ts.map +1 -1
  5. package/dist/knexfile.js +17 -8
  6. package/dist/knexfile.js.map +1 -1
  7. package/dist/src/config/database.d.ts.map +1 -1
  8. package/dist/src/config/database.js +9 -1
  9. package/dist/src/config/database.js.map +1 -1
  10. package/dist/src/config/global.d.ts.map +1 -1
  11. package/dist/src/config/global.js +5 -2
  12. package/dist/src/config/global.js.map +1 -1
  13. package/dist/src/config/knex.d.ts.map +1 -1
  14. package/dist/src/config/knex.js +22 -2
  15. package/dist/src/config/knex.js.map +1 -1
  16. package/dist/src/config/swagger.d.ts.map +1 -1
  17. package/dist/src/config/swagger.js +34 -73
  18. package/dist/src/config/swagger.js.map +1 -1
  19. package/dist/src/controllers/ApiKeyController.d.ts +17 -0
  20. package/dist/src/controllers/ApiKeyController.d.ts.map +1 -0
  21. package/dist/src/controllers/ApiKeyController.js +84 -0
  22. package/dist/src/controllers/ApiKeyController.js.map +1 -0
  23. package/dist/src/controllers/AuthController.d.ts +14 -0
  24. package/dist/src/controllers/AuthController.d.ts.map +1 -0
  25. package/dist/src/controllers/AuthController.js +212 -0
  26. package/dist/src/controllers/AuthController.js.map +1 -0
  27. package/dist/src/controllers/ChatController.d.ts +8 -5
  28. package/dist/src/controllers/ChatController.d.ts.map +1 -1
  29. package/dist/src/controllers/ChatController.js +139 -31
  30. package/dist/src/controllers/ChatController.js.map +1 -1
  31. package/dist/src/controllers/KnowledgeController.d.ts +5 -4
  32. package/dist/src/controllers/KnowledgeController.d.ts.map +1 -1
  33. package/dist/src/controllers/KnowledgeController.js +54 -16
  34. package/dist/src/controllers/KnowledgeController.js.map +1 -1
  35. package/dist/src/middleware/auth.d.ts +51 -0
  36. package/dist/src/middleware/auth.d.ts.map +1 -0
  37. package/dist/src/middleware/auth.js +232 -0
  38. package/dist/src/middleware/auth.js.map +1 -0
  39. package/dist/src/middleware/errorHandler.d.ts.map +1 -1
  40. package/dist/src/middleware/errorHandler.js +13 -19
  41. package/dist/src/middleware/errorHandler.js.map +1 -1
  42. package/dist/src/migrations/001_initial_schema.d.ts.map +1 -1
  43. package/dist/src/migrations/001_initial_schema.js +39 -64
  44. package/dist/src/migrations/001_initial_schema.js.map +1 -1
  45. package/dist/src/migrations/002_multitenancy_schema.d.ts +4 -0
  46. package/dist/src/migrations/002_multitenancy_schema.d.ts.map +1 -0
  47. package/dist/src/migrations/002_multitenancy_schema.js +119 -0
  48. package/dist/src/migrations/002_multitenancy_schema.js.map +1 -0
  49. package/dist/src/schemas/AuthSchemas.d.ts +89 -0
  50. package/dist/src/schemas/AuthSchemas.d.ts.map +1 -0
  51. package/dist/src/schemas/AuthSchemas.js +63 -0
  52. package/dist/src/schemas/AuthSchemas.js.map +1 -0
  53. package/dist/src/schemas/CommonSchemas.d.ts +62 -0
  54. package/dist/src/schemas/CommonSchemas.d.ts.map +1 -0
  55. package/dist/src/schemas/CommonSchemas.js +65 -0
  56. package/dist/src/schemas/CommonSchemas.js.map +1 -0
  57. package/dist/src/schemas/ConversationSchemas.d.ts +64 -27
  58. package/dist/src/schemas/ConversationSchemas.d.ts.map +1 -1
  59. package/dist/src/schemas/ConversationSchemas.js +28 -9
  60. package/dist/src/schemas/ConversationSchemas.js.map +1 -1
  61. package/dist/src/schemas/FeedbackSchemas.d.ts +43 -5
  62. package/dist/src/schemas/FeedbackSchemas.d.ts.map +1 -1
  63. package/dist/src/schemas/FeedbackSchemas.js +20 -2
  64. package/dist/src/schemas/FeedbackSchemas.js.map +1 -1
  65. package/dist/src/schemas/KnowledgeSchemas.d.ts +114 -35
  66. package/dist/src/schemas/KnowledgeSchemas.d.ts.map +1 -1
  67. package/dist/src/schemas/KnowledgeSchemas.js +58 -16
  68. package/dist/src/schemas/KnowledgeSchemas.js.map +1 -1
  69. package/dist/src/schemas/MessageSchemas.d.ts +57 -8
  70. package/dist/src/schemas/MessageSchemas.d.ts.map +1 -1
  71. package/dist/src/schemas/MessageSchemas.js +22 -3
  72. package/dist/src/schemas/MessageSchemas.js.map +1 -1
  73. package/dist/src/schemas/index.d.ts +410 -68
  74. package/dist/src/schemas/index.d.ts.map +1 -1
  75. package/dist/src/schemas/index.js +8 -2
  76. package/dist/src/schemas/index.js.map +1 -1
  77. package/dist/src/server.js +1047 -615
  78. package/dist/src/server.js.map +1 -1
  79. package/dist/src/services/AIService.d.ts +1 -2
  80. package/dist/src/services/AIService.d.ts.map +1 -1
  81. package/dist/src/services/AIService.js +6 -32
  82. package/dist/src/services/AIService.js.map +1 -1
  83. package/dist/src/services/ApiKeyService.d.ts +38 -0
  84. package/dist/src/services/ApiKeyService.d.ts.map +1 -0
  85. package/dist/src/services/ApiKeyService.js +123 -0
  86. package/dist/src/services/ApiKeyService.js.map +1 -0
  87. package/dist/src/services/KnowledgeBaseService.d.ts +2 -2
  88. package/dist/src/services/KnowledgeBaseService.d.ts.map +1 -1
  89. package/dist/src/services/KnowledgeBaseService.js +9 -2
  90. package/dist/src/services/KnowledgeBaseService.js.map +1 -1
  91. package/dist/src/services/MigrationService.d.ts +1 -1
  92. package/dist/src/services/MigrationService.d.ts.map +1 -1
  93. package/dist/src/services/MigrationService.js +4 -8
  94. package/dist/src/services/MigrationService.js.map +1 -1
  95. package/dist/src/services/SetupService.d.ts +102 -0
  96. package/dist/src/services/SetupService.d.ts.map +1 -0
  97. package/dist/src/services/SetupService.js +343 -0
  98. package/dist/src/services/SetupService.js.map +1 -0
  99. package/dist/src/storage/ConversationRepository.d.ts.map +1 -1
  100. package/dist/src/storage/ConversationRepository.js +42 -8
  101. package/dist/src/storage/ConversationRepository.js.map +1 -1
  102. package/dist/src/storage/MessageRepository.d.ts.map +1 -1
  103. package/dist/src/storage/MessageRepository.js +23 -27
  104. package/dist/src/storage/MessageRepository.js.map +1 -1
  105. package/dist/src/types/index.d.ts +0 -8
  106. package/dist/src/types/index.d.ts.map +1 -1
  107. package/env.example +7 -5
  108. package/knexfile.ts +17 -8
  109. package/package.json +25 -16
  110. package/scripts/generate-key.js +124 -0
  111. package/scripts/seed-default.js +72 -0
  112. package/scripts/setup.js +410 -149
  113. package/scripts/validate-db.js +46 -13
@@ -0,0 +1,102 @@
1
+ import { SupabaseClient } from '@supabase/supabase-js';
2
+ export declare class SetupService {
3
+ private supabase;
4
+ constructor(supabase: SupabaseClient);
5
+ /**
6
+ * Get default admin credentials from environment variables
7
+ */
8
+ static getDefaultCredentials(): {
9
+ adminEmail: string;
10
+ adminPassword: string;
11
+ companyName: string;
12
+ };
13
+ /**
14
+ * Create default company and admin user for initial setup (CLI compatibility)
15
+ * @deprecated Use getOrCreateDefaultData instead
16
+ */
17
+ createDefaultData(options: {
18
+ adminEmail: string;
19
+ adminPassword: string;
20
+ companyName: string;
21
+ }): Promise<{
22
+ success: boolean;
23
+ alreadyExists: boolean;
24
+ company: {
25
+ id: any;
26
+ name: any;
27
+ domain: any;
28
+ };
29
+ user: {
30
+ id: any;
31
+ email: any;
32
+ name: any;
33
+ };
34
+ profile: {
35
+ id: any;
36
+ role: any;
37
+ };
38
+ }>;
39
+ /**
40
+ * Get or create default company and admin user for initial setup
41
+ * Returns existing data if already created
42
+ */
43
+ getOrCreateDefaultData(options: {
44
+ adminEmail: string;
45
+ adminPassword: string;
46
+ companyName: string;
47
+ }): Promise<{
48
+ success: boolean;
49
+ alreadyExists: boolean;
50
+ company: {
51
+ id: any;
52
+ name: any;
53
+ domain: any;
54
+ };
55
+ user: {
56
+ id: any;
57
+ email: any;
58
+ name: any;
59
+ };
60
+ profile: {
61
+ id: any;
62
+ role: any;
63
+ };
64
+ }>;
65
+ /**
66
+ * Check if setup is already completed
67
+ */
68
+ isSetupCompleted(): Promise<boolean>;
69
+ /**
70
+ * Get setup status
71
+ */
72
+ getSetupStatus(): Promise<{
73
+ completed: boolean;
74
+ message: string;
75
+ company?: undefined;
76
+ adminUser?: undefined;
77
+ } | {
78
+ completed: boolean;
79
+ company: {
80
+ name: any;
81
+ domain: any;
82
+ };
83
+ adminUser: {
84
+ email: any;
85
+ name: any;
86
+ };
87
+ message?: undefined;
88
+ }>;
89
+ /**
90
+ * Execute seed-default API - returns simplified response
91
+ */
92
+ executeSeedDefault(): Promise<any>;
93
+ /**
94
+ * Execute generate-key API - returns API key for default admin
95
+ */
96
+ executeGenerateKey(): Promise<{
97
+ company_name: string;
98
+ user_name: any;
99
+ api_key: string;
100
+ }>;
101
+ }
102
+ //# sourceMappingURL=SetupService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupService.d.ts","sourceRoot":"","sources":["../../../src/services/SetupService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,EAAE,cAAc;IAIpC;;OAEG;IACH,MAAM,CAAC,qBAAqB;;;;;IAQ5B;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB;;;;;;;;;;;;;;;;;;IAWD;;;OAGG;IACG,sBAAsB,CAAC,OAAO,EAAE;QACpC,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB;;;;;;;;;;;;;;;;;;IA8ID;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAc1C;;OAEG;IACG,cAAc;;;;;;;;;;;;;;;;;IAiDpB;;OAEG;IACG,kBAAkB;IAmBxB;;OAEG;IACG,kBAAkB;;;;;CA0EzB"}
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SetupService = void 0;
40
+ const auth_1 = require("../middleware/auth");
41
+ const logger_1 = __importDefault(require("../config/logger"));
42
+ class SetupService {
43
+ constructor(supabase) {
44
+ this.supabase = supabase;
45
+ }
46
+ /**
47
+ * Get default admin credentials from environment variables
48
+ */
49
+ static getDefaultCredentials() {
50
+ return {
51
+ adminEmail: process.env.DEFAULT_ADMIN_EMAIL || 'admin@vezlo.org',
52
+ adminPassword: process.env.DEFAULT_ADMIN_PASSWORD || 'admin123',
53
+ companyName: process.env.ORGANIZATION_NAME || 'Vezlo'
54
+ };
55
+ }
56
+ /**
57
+ * Create default company and admin user for initial setup (CLI compatibility)
58
+ * @deprecated Use getOrCreateDefaultData instead
59
+ */
60
+ async createDefaultData(options) {
61
+ const result = await this.getOrCreateDefaultData(options);
62
+ // Throw error if already exists (maintains CLI behavior)
63
+ if (result.alreadyExists) {
64
+ throw new Error('Default company and admin user already exist');
65
+ }
66
+ return result;
67
+ }
68
+ /**
69
+ * Get or create default company and admin user for initial setup
70
+ * Returns existing data if already created
71
+ */
72
+ async getOrCreateDefaultData(options) {
73
+ const { adminEmail, adminPassword, companyName } = options;
74
+ try {
75
+ logger_1.default.info('Checking for existing default company and admin user...');
76
+ // Check if default company already exists
77
+ const { data: existingCompany } = await this.supabase
78
+ .from('vezlo_companies')
79
+ .select('*')
80
+ .eq('domain', 'default')
81
+ .single();
82
+ if (existingCompany) {
83
+ // Get the admin user and profile
84
+ const { data: profile } = await this.supabase
85
+ .from('vezlo_user_company_profiles')
86
+ .select('*, vezlo_users(*)')
87
+ .eq('company_id', existingCompany.id)
88
+ .eq('role', 'admin')
89
+ .single();
90
+ if (profile && profile.vezlo_users) {
91
+ const user = profile.vezlo_users;
92
+ logger_1.default.info('Default data already exists, returning existing data');
93
+ return {
94
+ success: true,
95
+ alreadyExists: true,
96
+ company: {
97
+ id: existingCompany.uuid,
98
+ name: existingCompany.name,
99
+ domain: existingCompany.domain
100
+ },
101
+ user: {
102
+ id: user.uuid,
103
+ email: user.email,
104
+ name: user.name
105
+ },
106
+ profile: {
107
+ id: profile.uuid,
108
+ role: profile.role
109
+ }
110
+ };
111
+ }
112
+ }
113
+ // Check if admin user already exists
114
+ const { data: existingUser } = await this.supabase
115
+ .from('vezlo_users')
116
+ .select('id')
117
+ .eq('email', adminEmail)
118
+ .single();
119
+ if (existingUser) {
120
+ throw new Error(`User with email ${adminEmail} already exists`);
121
+ }
122
+ logger_1.default.info('Creating default company and admin user...');
123
+ // Create default company
124
+ const { data: company, error: companyError } = await this.supabase
125
+ .from('vezlo_companies')
126
+ .insert({
127
+ name: companyName,
128
+ domain: 'default'
129
+ })
130
+ .select()
131
+ .single();
132
+ if (companyError) {
133
+ throw new Error(`Failed to create company: ${companyError.message}`);
134
+ }
135
+ logger_1.default.info(`✅ Company created: ${company.name} (${company.uuid})`);
136
+ // Hash password
137
+ const passwordHash = await auth_1.PasswordUtils.hash(adminPassword);
138
+ // Create admin user
139
+ const { data: user, error: userError } = await this.supabase
140
+ .from('vezlo_users')
141
+ .insert({
142
+ email: adminEmail,
143
+ name: 'Default Admin',
144
+ password_hash: passwordHash
145
+ })
146
+ .select()
147
+ .single();
148
+ if (userError) {
149
+ throw new Error(`Failed to create user: ${userError.message}`);
150
+ }
151
+ logger_1.default.info(`✅ Admin user created: ${user.email} (${user.uuid})`);
152
+ // Create admin profile
153
+ const { data: profile, error: profileError } = await this.supabase
154
+ .from('vezlo_user_company_profiles')
155
+ .insert({
156
+ user_id: user.id,
157
+ company_id: company.id,
158
+ role: 'admin',
159
+ status: 'active'
160
+ })
161
+ .select()
162
+ .single();
163
+ if (profileError) {
164
+ throw new Error(`Failed to create profile: ${profileError.message}`);
165
+ }
166
+ logger_1.default.info(`✅ Admin profile created: ${profile.uuid}`);
167
+ const result = {
168
+ success: true,
169
+ alreadyExists: false,
170
+ company: {
171
+ id: company.uuid,
172
+ name: company.name,
173
+ domain: company.domain
174
+ },
175
+ user: {
176
+ id: user.uuid,
177
+ email: user.email,
178
+ name: user.name
179
+ },
180
+ profile: {
181
+ id: profile.uuid,
182
+ role: profile.role
183
+ }
184
+ };
185
+ logger_1.default.info('Default setup completed successfully!');
186
+ return result;
187
+ }
188
+ catch (error) {
189
+ logger_1.default.error('Setup failed:', error);
190
+ throw error;
191
+ }
192
+ }
193
+ /**
194
+ * Check if setup is already completed
195
+ */
196
+ async isSetupCompleted() {
197
+ try {
198
+ const { data } = await this.supabase
199
+ .from('vezlo_companies')
200
+ .select('id')
201
+ .eq('domain', 'default')
202
+ .single();
203
+ return !!data;
204
+ }
205
+ catch (error) {
206
+ return false;
207
+ }
208
+ }
209
+ /**
210
+ * Get setup status
211
+ */
212
+ async getSetupStatus() {
213
+ try {
214
+ const isCompleted = await this.isSetupCompleted();
215
+ if (!isCompleted) {
216
+ return {
217
+ completed: false,
218
+ message: 'Setup not completed. Run setup to create default company and admin user.'
219
+ };
220
+ }
221
+ // Get default company info
222
+ const { data: company } = await this.supabase
223
+ .from('vezlo_companies')
224
+ .select(`
225
+ *,
226
+ vezlo_user_company_profiles!inner (
227
+ *,
228
+ vezlo_users!inner (
229
+ email,
230
+ name
231
+ )
232
+ )
233
+ `)
234
+ .eq('domain', 'default')
235
+ .eq('vezlo_user_company_profiles.role', 'admin')
236
+ .single();
237
+ return {
238
+ completed: true,
239
+ company: {
240
+ name: company?.name,
241
+ domain: company?.domain
242
+ },
243
+ adminUser: {
244
+ email: company?.vezlo_user_company_profiles?.[0]?.vezlo_users?.email,
245
+ name: company?.vezlo_user_company_profiles?.[0]?.vezlo_users?.name
246
+ }
247
+ };
248
+ }
249
+ catch (error) {
250
+ logger_1.default.error('Failed to get setup status:', error);
251
+ return {
252
+ completed: false,
253
+ message: 'Failed to check setup status'
254
+ };
255
+ }
256
+ }
257
+ /**
258
+ * Execute seed-default API - returns simplified response
259
+ */
260
+ async executeSeedDefault() {
261
+ const credentials = SetupService.getDefaultCredentials();
262
+ // Wait for schema cache to refresh
263
+ await new Promise(resolve => setTimeout(resolve, 2000));
264
+ const result = await this.getOrCreateDefaultData(credentials);
265
+ // Prepare simplified response
266
+ const response = {
267
+ company_name: result.company.name,
268
+ email: result.user.email,
269
+ password: credentials.adminPassword,
270
+ admin_name: result.user.name
271
+ };
272
+ return response;
273
+ }
274
+ /**
275
+ * Execute generate-key API - returns API key for default admin
276
+ */
277
+ async executeGenerateKey() {
278
+ const credentials = SetupService.getDefaultCredentials();
279
+ // Wait for schema cache to refresh
280
+ await new Promise(resolve => setTimeout(resolve, 2000));
281
+ // Find the admin user
282
+ const { data: user, error: userError } = await this.supabase
283
+ .from('vezlo_users')
284
+ .select('id, uuid, name')
285
+ .eq('email', credentials.adminEmail)
286
+ .single();
287
+ if (userError || !user) {
288
+ throw new Error(`Admin user not found (${credentials.adminEmail}). Run seed-default first.`);
289
+ }
290
+ // Find the admin's company profile
291
+ const { data: profile, error: profileError } = await this.supabase
292
+ .from('vezlo_user_company_profiles')
293
+ .select(`
294
+ id,
295
+ role,
296
+ company_id,
297
+ companies:company_id(
298
+ id,
299
+ uuid,
300
+ name,
301
+ domain
302
+ )
303
+ `)
304
+ .eq('user_id', user.id)
305
+ .eq('role', 'admin')
306
+ .single();
307
+ if (profileError || !profile) {
308
+ throw new Error(`Admin profile not found. Run seed-default first.`);
309
+ }
310
+ // Import ApiKeyService
311
+ const { ApiKeyService } = await Promise.resolve().then(() => __importStar(require('./ApiKeyService')));
312
+ // Generate the API key
313
+ const apiKeyService = new ApiKeyService(this.supabase);
314
+ // Use the joined company ID (same as generate-key.js script)
315
+ const companyId = profile.companies?.id || profile.company_id;
316
+ const { uuid, apiKey } = await apiKeyService.generateApiKey(typeof companyId === 'number' ? companyId : parseInt(String(companyId)));
317
+ // Debug profile structure
318
+ console.log('Profile structure:', JSON.stringify(profile, null, 2));
319
+ // Get company name (handle type issues with fallbacks)
320
+ let companyName = 'Unknown Company';
321
+ try {
322
+ // Access as Record to avoid TypeScript errors since structure can vary
323
+ const companies = profile.companies;
324
+ if (companies && typeof companies === 'object') {
325
+ if (companies.name) {
326
+ companyName = companies.name;
327
+ }
328
+ }
329
+ }
330
+ catch (e) {
331
+ console.log('Error getting company name:', e);
332
+ }
333
+ // Prepare response
334
+ const response = {
335
+ company_name: companyName,
336
+ user_name: user.name,
337
+ api_key: apiKey
338
+ };
339
+ return response;
340
+ }
341
+ }
342
+ exports.SetupService = SetupService;
343
+ //# sourceMappingURL=SetupService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupService.js","sourceRoot":"","sources":["../../../src/services/SetupService.ts"],"names":[],"mappings":"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"}
@@ -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;IAoBhG,OAAO,CAAC,iBAAiB;CAY1B"}
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;CAwChC"}
@@ -25,7 +25,7 @@ class ConversationRepository {
25
25
  .single();
26
26
  if (error)
27
27
  throw new Error(`Failed to update conversation: ${error.message}`);
28
- return this.rowToConversation(data);
28
+ return await this.rowToConversation(data);
29
29
  }
30
30
  else {
31
31
  // Create new conversation
@@ -46,7 +46,7 @@ class ConversationRepository {
46
46
  .single();
47
47
  if (error)
48
48
  throw new Error(`Failed to create conversation: ${error.message}`);
49
- return this.rowToConversation(data);
49
+ return await this.rowToConversation(data);
50
50
  }
51
51
  }
52
52
  async getConversation(conversationId) {
@@ -61,7 +61,7 @@ class ConversationRepository {
61
61
  return null; // Not found
62
62
  throw new Error(`Failed to get conversation: ${error.message}`);
63
63
  }
64
- return this.rowToConversation(data);
64
+ return this.rowToConversation(data, true);
65
65
  }
66
66
  async updateConversation(conversationId, updates) {
67
67
  const tableName = this.getTableName('conversations');
@@ -79,7 +79,7 @@ class ConversationRepository {
79
79
  .single();
80
80
  if (error)
81
81
  throw new Error(`Failed to update conversation: ${error.message}`);
82
- return this.rowToConversation(data);
82
+ return await this.rowToConversation(data);
83
83
  }
84
84
  async deleteConversation(conversationId) {
85
85
  const tableName = this.getTableName('conversations');
@@ -104,15 +104,49 @@ class ConversationRepository {
104
104
  const { data, error } = await query;
105
105
  if (error)
106
106
  throw new Error(`Failed to get user conversations: ${error.message}`);
107
- return (data || []).map(row => this.rowToConversation(row));
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
+ }));
108
119
  }
109
- rowToConversation(row) {
120
+ async rowToConversation(row, fetchUuids = false) {
121
+ let userId = row.creator_id?.toString() || '1';
122
+ let organizationId = row.company_id?.toString();
123
+ // Fetch actual UUIDs if needed
124
+ if (fetchUuids && row.creator_id) {
125
+ const { data: userData } = await this.supabase
126
+ .from(this.getTableName('users'))
127
+ .select('uuid')
128
+ .eq('id', row.creator_id)
129
+ .single();
130
+ if (userData) {
131
+ userId = userData.uuid;
132
+ }
133
+ }
134
+ if (fetchUuids && row.company_id) {
135
+ const { data: companyData } = await this.supabase
136
+ .from(this.getTableName('companies'))
137
+ .select('uuid')
138
+ .eq('id', row.company_id)
139
+ .single();
140
+ if (companyData) {
141
+ organizationId = companyData.uuid;
142
+ }
143
+ }
110
144
  return {
111
145
  id: row.uuid,
112
146
  threadId: row.uuid, // Use UUID as threadId for conversations
113
147
  title: row.title,
114
- userId: row.creator_id?.toString() || '1',
115
- organizationId: row.company_id?.toString(),
148
+ userId,
149
+ organizationId,
116
150
  messageCount: row.message_count || 0,
117
151
  createdAt: new Date(row.created_at),
118
152
  updatedAt: row.updated_at ? new Date(row.updated_at) : new Date(row.created_at)
@@ -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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"}
@@ -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;CA+C3E"}
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"}
@@ -140,45 +140,41 @@ class MessageRepository {
140
140
  }
141
141
  async getMessageById(messageId) {
142
142
  const tableName = this.getTableName('messages');
143
- const conversationsTable = this.getTableName('conversations');
144
- const { data, error } = await this.supabase
143
+ // First get the message
144
+ const { data: messageData, error: messageError } = await this.supabase
145
145
  .from(tableName)
146
- .select(`
147
- uuid,
148
- type,
149
- content,
150
- status,
151
- metadata,
152
- parent_message_id,
153
- created_at,
154
- updated_at,
155
- ${conversationsTable}!inner(uuid)
156
- `)
146
+ .select('*')
157
147
  .eq('uuid', messageId)
158
148
  .single();
159
- if (error) {
160
- if (error.code === 'PGRST116')
149
+ if (messageError) {
150
+ if (messageError.code === 'PGRST116')
161
151
  return null; // Not found
162
- throw new Error(`Failed to get message: ${error.message}`);
152
+ throw new Error(`Failed to get message: ${messageError.message}`);
163
153
  }
164
- if (!data)
154
+ if (!messageData)
165
155
  return null;
166
- const metadata = data.metadata || {};
167
- const conversationData = data[conversationsTable] || data.conversations;
168
- if (!conversationData || !conversationData.uuid) {
169
- throw new Error('Message missing conversation relationship');
156
+ // Get the conversation UUID by internal ID
157
+ const conversationsTable = this.getTableName('conversations');
158
+ const { data: conversationData, error: conversationError } = await this.supabase
159
+ .from(conversationsTable)
160
+ .select('uuid')
161
+ .eq('id', messageData.conversation_id)
162
+ .single();
163
+ if (conversationError || !conversationData) {
164
+ throw new Error('Failed to get conversation for message');
170
165
  }
166
+ const metadata = messageData.metadata || {};
171
167
  return {
172
- id: data.uuid,
168
+ id: messageData.uuid,
173
169
  conversationId: conversationData.uuid,
174
170
  threadId: conversationData.uuid,
175
- role: data.type,
176
- content: data.content,
171
+ role: messageData.type,
172
+ content: messageData.content,
177
173
  toolCalls: metadata.tool_calls,
178
174
  toolResults: metadata.tool_results,
179
- parentMessageId: data.parent_message_id,
180
- createdAt: new Date(data.created_at),
181
- updatedAt: data.updated_at ? new Date(data.updated_at) : undefined
175
+ parentMessageId: messageData.parent_message_id,
176
+ createdAt: new Date(messageData.created_at),
177
+ updatedAt: messageData.updated_at ? new Date(messageData.updated_at) : undefined
182
178
  };
183
179
  }
184
180
  }