@vezlo/assistant-server 1.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.
- package/Dockerfile +64 -0
- package/LICENSE +661 -0
- package/README.md +432 -0
- package/bin/vezlo-server.js +36 -0
- package/database-schema.sql +154 -0
- package/dist/knexfile.d.ts +6 -0
- package/dist/knexfile.d.ts.map +1 -0
- package/dist/knexfile.js +85 -0
- package/dist/knexfile.js.map +1 -0
- package/dist/src/config/database.d.ts +4 -0
- package/dist/src/config/database.d.ts.map +1 -0
- package/dist/src/config/database.js +30 -0
- package/dist/src/config/database.js.map +1 -0
- package/dist/src/config/global.d.ts +65 -0
- package/dist/src/config/global.d.ts.map +1 -0
- package/dist/src/config/global.js +113 -0
- package/dist/src/config/global.js.map +1 -0
- package/dist/src/config/knex.d.ts +9 -0
- package/dist/src/config/knex.d.ts.map +1 -0
- package/dist/src/config/knex.js +67 -0
- package/dist/src/config/knex.js.map +1 -0
- package/dist/src/config/logger.d.ts +4 -0
- package/dist/src/config/logger.d.ts.map +1 -0
- package/dist/src/config/logger.js +30 -0
- package/dist/src/config/logger.js.map +1 -0
- package/dist/src/config/swagger.d.ts +18 -0
- package/dist/src/config/swagger.d.ts.map +1 -0
- package/dist/src/config/swagger.js +230 -0
- package/dist/src/config/swagger.js.map +1 -0
- package/dist/src/controllers/ChatController.d.ts +16 -0
- package/dist/src/controllers/ChatController.d.ts.map +1 -0
- package/dist/src/controllers/ChatController.js +281 -0
- package/dist/src/controllers/ChatController.js.map +1 -0
- package/dist/src/controllers/KnowledgeController.d.ts +13 -0
- package/dist/src/controllers/KnowledgeController.d.ts.map +1 -0
- package/dist/src/controllers/KnowledgeController.js +210 -0
- package/dist/src/controllers/KnowledgeController.js.map +1 -0
- package/dist/src/middleware/errorHandler.d.ts +63 -0
- package/dist/src/middleware/errorHandler.d.ts.map +1 -0
- package/dist/src/middleware/errorHandler.js +226 -0
- package/dist/src/middleware/errorHandler.js.map +1 -0
- package/dist/src/migrations/001_initial_schema.d.ts +4 -0
- package/dist/src/migrations/001_initial_schema.d.ts.map +1 -0
- package/dist/src/migrations/001_initial_schema.js +144 -0
- package/dist/src/migrations/001_initial_schema.js.map +1 -0
- package/dist/src/schemas/ConversationSchemas.d.ts +132 -0
- package/dist/src/schemas/ConversationSchemas.d.ts.map +1 -0
- package/dist/src/schemas/ConversationSchemas.js +71 -0
- package/dist/src/schemas/ConversationSchemas.js.map +1 -0
- package/dist/src/schemas/FeedbackSchemas.d.ts +222 -0
- package/dist/src/schemas/FeedbackSchemas.d.ts.map +1 -0
- package/dist/src/schemas/FeedbackSchemas.js +116 -0
- package/dist/src/schemas/FeedbackSchemas.js.map +1 -0
- package/dist/src/schemas/KnowledgeSchemas.d.ts +266 -0
- package/dist/src/schemas/KnowledgeSchemas.d.ts.map +1 -0
- package/dist/src/schemas/KnowledgeSchemas.js +115 -0
- package/dist/src/schemas/KnowledgeSchemas.js.map +1 -0
- package/dist/src/schemas/MessageSchemas.d.ts +145 -0
- package/dist/src/schemas/MessageSchemas.d.ts.map +1 -0
- package/dist/src/schemas/MessageSchemas.js +79 -0
- package/dist/src/schemas/MessageSchemas.js.map +1 -0
- package/dist/src/schemas/index.d.ts +752 -0
- package/dist/src/schemas/index.d.ts.map +1 -0
- package/dist/src/schemas/index.js +31 -0
- package/dist/src/schemas/index.js.map +1 -0
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +609 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/services/AIService.d.ts +17 -0
- package/dist/src/services/AIService.d.ts.map +1 -0
- package/dist/src/services/AIService.js +174 -0
- package/dist/src/services/AIService.js.map +1 -0
- package/dist/src/services/ChatManager.d.ts +18 -0
- package/dist/src/services/ChatManager.d.ts.map +1 -0
- package/dist/src/services/ChatManager.js +174 -0
- package/dist/src/services/ChatManager.js.map +1 -0
- package/dist/src/services/KnowledgeBaseService.d.ts +72 -0
- package/dist/src/services/KnowledgeBaseService.d.ts.map +1 -0
- package/dist/src/services/KnowledgeBaseService.js +442 -0
- package/dist/src/services/KnowledgeBaseService.js.map +1 -0
- package/dist/src/storage/ConversationRepository.d.ts +15 -0
- package/dist/src/storage/ConversationRepository.d.ts.map +1 -0
- package/dist/src/storage/ConversationRepository.js +123 -0
- package/dist/src/storage/ConversationRepository.js.map +1 -0
- package/dist/src/storage/FeedbackRepository.d.ts +15 -0
- package/dist/src/storage/FeedbackRepository.d.ts.map +1 -0
- package/dist/src/storage/FeedbackRepository.js +141 -0
- package/dist/src/storage/FeedbackRepository.js.map +1 -0
- package/dist/src/storage/MessageRepository.d.ts +13 -0
- package/dist/src/storage/MessageRepository.d.ts.map +1 -0
- package/dist/src/storage/MessageRepository.js +165 -0
- package/dist/src/storage/MessageRepository.js.map +1 -0
- package/dist/src/storage/SupabaseStorage.d.ts +20 -0
- package/dist/src/storage/SupabaseStorage.d.ts.map +1 -0
- package/dist/src/storage/SupabaseStorage.js +347 -0
- package/dist/src/storage/SupabaseStorage.js.map +1 -0
- package/dist/src/storage/UnifiedStorage.d.ts +45 -0
- package/dist/src/storage/UnifiedStorage.d.ts.map +1 -0
- package/dist/src/storage/UnifiedStorage.js +94 -0
- package/dist/src/storage/UnifiedStorage.js.map +1 -0
- package/dist/src/storage/index.d.ts +11 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +21 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/types/index.d.ts +163 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +3 -0
- package/dist/src/types/index.js.map +1 -0
- package/docker-compose.yml +32 -0
- package/env.example +46 -0
- package/knexfile.ts +86 -0
- package/package.json +92 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FeedbackRepository = void 0;
|
|
4
|
+
class FeedbackRepository {
|
|
5
|
+
constructor(supabase, tablePrefix = '') {
|
|
6
|
+
this.supabase = supabase;
|
|
7
|
+
this.tablePrefix = tablePrefix;
|
|
8
|
+
}
|
|
9
|
+
getTableName(table) {
|
|
10
|
+
return this.tablePrefix ? `${this.tablePrefix}_${table}` : table;
|
|
11
|
+
}
|
|
12
|
+
async saveFeedback(feedback) {
|
|
13
|
+
const tableName = this.getTableName('message_feedback');
|
|
14
|
+
if (feedback.id) {
|
|
15
|
+
// Update existing feedback
|
|
16
|
+
const { data, error } = await this.supabase
|
|
17
|
+
.from(tableName)
|
|
18
|
+
.update({
|
|
19
|
+
rating: feedback.rating,
|
|
20
|
+
category: feedback.category,
|
|
21
|
+
comment: feedback.comment,
|
|
22
|
+
suggested_improvement: feedback.suggestedImprovement,
|
|
23
|
+
updated_at: new Date().toISOString()
|
|
24
|
+
})
|
|
25
|
+
.eq('uuid', feedback.id)
|
|
26
|
+
.select()
|
|
27
|
+
.single();
|
|
28
|
+
if (error)
|
|
29
|
+
throw new Error(`Failed to update feedback: ${error.message}`);
|
|
30
|
+
return this.rowToFeedback(data);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// Get message internal ID from UUID
|
|
34
|
+
const messageQuery = await this.supabase
|
|
35
|
+
.from('messages')
|
|
36
|
+
.select('id')
|
|
37
|
+
.eq('uuid', feedback.messageId)
|
|
38
|
+
.single();
|
|
39
|
+
if (messageQuery.error)
|
|
40
|
+
throw new Error(`Failed to find message: ${messageQuery.error.message}`);
|
|
41
|
+
const { data, error } = await this.supabase
|
|
42
|
+
.from(tableName)
|
|
43
|
+
.insert({
|
|
44
|
+
message_id: messageQuery.data.id,
|
|
45
|
+
user_id: parseInt(feedback.userId) || 1,
|
|
46
|
+
rating: feedback.rating,
|
|
47
|
+
category: feedback.category,
|
|
48
|
+
comment: feedback.comment,
|
|
49
|
+
suggested_improvement: feedback.suggestedImprovement,
|
|
50
|
+
created_at: feedback.createdAt?.toISOString() || new Date().toISOString()
|
|
51
|
+
})
|
|
52
|
+
.select()
|
|
53
|
+
.single();
|
|
54
|
+
if (error)
|
|
55
|
+
throw new Error(`Failed to create feedback: ${error.message}`);
|
|
56
|
+
// Return feedback with original IDs from the input
|
|
57
|
+
return {
|
|
58
|
+
id: data.uuid,
|
|
59
|
+
messageId: feedback.messageId,
|
|
60
|
+
conversationId: feedback.conversationId,
|
|
61
|
+
userId: feedback.userId,
|
|
62
|
+
rating: feedback.rating,
|
|
63
|
+
category: feedback.category,
|
|
64
|
+
comment: feedback.comment,
|
|
65
|
+
suggestedImprovement: feedback.suggestedImprovement,
|
|
66
|
+
createdAt: new Date(data.created_at)
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async getFeedback(messageId) {
|
|
71
|
+
const tableName = this.getTableName('message_feedback');
|
|
72
|
+
// Get message internal ID from UUID
|
|
73
|
+
const messageQuery = await this.supabase
|
|
74
|
+
.from('messages')
|
|
75
|
+
.select('id')
|
|
76
|
+
.eq('uuid', messageId)
|
|
77
|
+
.single();
|
|
78
|
+
if (messageQuery.error) {
|
|
79
|
+
throw new Error(`Failed to find message: ${messageQuery.error.message}`);
|
|
80
|
+
}
|
|
81
|
+
const { data, error } = await this.supabase
|
|
82
|
+
.from(tableName)
|
|
83
|
+
.select('*')
|
|
84
|
+
.eq('message_id', messageQuery.data.id)
|
|
85
|
+
.order('created_at', { ascending: false });
|
|
86
|
+
if (error)
|
|
87
|
+
throw new Error(`Failed to get feedback: ${error.message}`);
|
|
88
|
+
return (data || []).map(row => this.rowToFeedback(row));
|
|
89
|
+
}
|
|
90
|
+
async getFeedbackById(feedbackId) {
|
|
91
|
+
const tableName = this.getTableName('message_feedback');
|
|
92
|
+
const { data, error } = await this.supabase
|
|
93
|
+
.from(tableName)
|
|
94
|
+
.select('*, messages!inner(uuid)')
|
|
95
|
+
.eq('uuid', feedbackId)
|
|
96
|
+
.single();
|
|
97
|
+
if (error) {
|
|
98
|
+
if (error.code === 'PGRST116')
|
|
99
|
+
return null; // Not found
|
|
100
|
+
throw new Error(`Failed to get feedback: ${error.message}`);
|
|
101
|
+
}
|
|
102
|
+
return this.rowToFeedback(data);
|
|
103
|
+
}
|
|
104
|
+
async getUserFeedback(userId, limit = 50, offset = 0) {
|
|
105
|
+
const tableName = this.getTableName('message_feedback');
|
|
106
|
+
const { data, error } = await this.supabase
|
|
107
|
+
.from(tableName)
|
|
108
|
+
.select('*, messages!inner(uuid)')
|
|
109
|
+
.eq('user_id', parseInt(userId) || 1)
|
|
110
|
+
.order('created_at', { ascending: false })
|
|
111
|
+
.range(offset, offset + limit - 1);
|
|
112
|
+
if (error)
|
|
113
|
+
throw new Error(`Failed to get user feedback: ${error.message}`);
|
|
114
|
+
return (data || []).map(row => this.rowToFeedback(row));
|
|
115
|
+
}
|
|
116
|
+
async deleteFeedback(feedbackId) {
|
|
117
|
+
const tableName = this.getTableName('message_feedback');
|
|
118
|
+
const { error } = await this.supabase
|
|
119
|
+
.from(tableName)
|
|
120
|
+
.delete()
|
|
121
|
+
.eq('uuid', feedbackId);
|
|
122
|
+
if (error)
|
|
123
|
+
throw new Error(`Failed to delete feedback: ${error.message}`);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
rowToFeedback(row) {
|
|
127
|
+
return {
|
|
128
|
+
id: row.uuid,
|
|
129
|
+
messageId: row.messages?.uuid || row.message_uuid || 'unknown',
|
|
130
|
+
conversationId: row.messages?.conversation_uuid || row.session_uuid || 'unknown',
|
|
131
|
+
userId: row.user_id?.toString() || '1',
|
|
132
|
+
rating: row.rating,
|
|
133
|
+
category: row.category,
|
|
134
|
+
comment: row.comment,
|
|
135
|
+
suggestedImprovement: row.suggested_improvement,
|
|
136
|
+
createdAt: new Date(row.created_at)
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.FeedbackRepository = FeedbackRepository;
|
|
141
|
+
//# sourceMappingURL=FeedbackRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackRepository.js","sourceRoot":"","sources":["../../../src/storage/FeedbackRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
+
import { StoredChatMessage } from '../types';
|
|
3
|
+
export declare class MessageRepository {
|
|
4
|
+
private supabase;
|
|
5
|
+
private tablePrefix;
|
|
6
|
+
constructor(supabase: SupabaseClient, tablePrefix?: string);
|
|
7
|
+
private getTableName;
|
|
8
|
+
saveMessage(message: StoredChatMessage): Promise<StoredChatMessage>;
|
|
9
|
+
getMessages(conversationId: string, limit?: number, offset?: number): Promise<StoredChatMessage[]>;
|
|
10
|
+
deleteMessage(messageId: string): Promise<boolean>;
|
|
11
|
+
getMessageById(messageId: string): Promise<StoredChatMessage | null>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=MessageRepository.d.ts.map
|
|
@@ -0,0 +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;IAoFnE,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;CA4B3E"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageRepository = void 0;
|
|
4
|
+
class MessageRepository {
|
|
5
|
+
constructor(supabase, tablePrefix = '') {
|
|
6
|
+
this.supabase = supabase;
|
|
7
|
+
this.tablePrefix = tablePrefix;
|
|
8
|
+
}
|
|
9
|
+
getTableName(table) {
|
|
10
|
+
return this.tablePrefix ? `${this.tablePrefix}_${table}` : table;
|
|
11
|
+
}
|
|
12
|
+
async saveMessage(message) {
|
|
13
|
+
const tableName = this.getTableName('messages');
|
|
14
|
+
if (message.id) {
|
|
15
|
+
// Update existing message
|
|
16
|
+
const { data, error } = await this.supabase
|
|
17
|
+
.from(tableName)
|
|
18
|
+
.update({
|
|
19
|
+
content: message.content,
|
|
20
|
+
metadata: { tool_calls: message.toolCalls, tool_results: message.toolResults },
|
|
21
|
+
updated_at: new Date().toISOString()
|
|
22
|
+
})
|
|
23
|
+
.eq('uuid', message.id)
|
|
24
|
+
.select()
|
|
25
|
+
.single();
|
|
26
|
+
if (error)
|
|
27
|
+
throw new Error(`Failed to update message: ${error.message}`);
|
|
28
|
+
const metadata = data.metadata || {};
|
|
29
|
+
return {
|
|
30
|
+
id: data.uuid,
|
|
31
|
+
conversationId: message.conversationId,
|
|
32
|
+
threadId: message.threadId,
|
|
33
|
+
role: data.type,
|
|
34
|
+
content: data.content,
|
|
35
|
+
toolCalls: metadata.tool_calls,
|
|
36
|
+
toolResults: metadata.tool_results,
|
|
37
|
+
parentMessageId: data.parent_message_id,
|
|
38
|
+
createdAt: new Date(data.created_at),
|
|
39
|
+
updatedAt: data.updated_at ? new Date(data.updated_at) : undefined
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Get conversation internal ID from UUID
|
|
44
|
+
const conversationQuery = await this.supabase
|
|
45
|
+
.from('conversations')
|
|
46
|
+
.select('id')
|
|
47
|
+
.eq('uuid', message.conversationId)
|
|
48
|
+
.single();
|
|
49
|
+
if (conversationQuery.error)
|
|
50
|
+
throw new Error(`Failed to find conversation: ${conversationQuery.error.message}`);
|
|
51
|
+
// Get parent message internal ID if parentMessageId is provided
|
|
52
|
+
let parentMessageInternalId = null;
|
|
53
|
+
if (message.parentMessageId) {
|
|
54
|
+
const parentMessageQuery = await this.supabase
|
|
55
|
+
.from('messages')
|
|
56
|
+
.select('id')
|
|
57
|
+
.eq('uuid', message.parentMessageId)
|
|
58
|
+
.single();
|
|
59
|
+
if (parentMessageQuery.data && !parentMessageQuery.error) {
|
|
60
|
+
parentMessageInternalId = parentMessageQuery.data.id;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const { data, error } = await this.supabase
|
|
64
|
+
.from(tableName)
|
|
65
|
+
.insert({
|
|
66
|
+
conversation_id: conversationQuery.data.id,
|
|
67
|
+
parent_message_id: parentMessageInternalId,
|
|
68
|
+
type: message.role,
|
|
69
|
+
content: message.content,
|
|
70
|
+
metadata: { tool_calls: message.toolCalls, tool_results: message.toolResults },
|
|
71
|
+
created_at: message.createdAt.toISOString()
|
|
72
|
+
})
|
|
73
|
+
.select()
|
|
74
|
+
.single();
|
|
75
|
+
if (error)
|
|
76
|
+
throw new Error(`Failed to create message: ${error.message}`);
|
|
77
|
+
const metadata = data.metadata || {};
|
|
78
|
+
return {
|
|
79
|
+
id: data.uuid,
|
|
80
|
+
conversationId: message.conversationId,
|
|
81
|
+
threadId: message.threadId,
|
|
82
|
+
role: data.type,
|
|
83
|
+
content: data.content,
|
|
84
|
+
toolCalls: metadata.tool_calls,
|
|
85
|
+
toolResults: metadata.tool_results,
|
|
86
|
+
parentMessageId: message.parentMessageId,
|
|
87
|
+
createdAt: new Date(data.created_at),
|
|
88
|
+
updatedAt: data.updated_at ? new Date(data.updated_at) : undefined
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async getMessages(conversationId, limit = 50, offset = 0) {
|
|
93
|
+
const tableName = this.getTableName('messages');
|
|
94
|
+
// First get the conversation internal ID
|
|
95
|
+
const conversationQuery = await this.supabase
|
|
96
|
+
.from('conversations')
|
|
97
|
+
.select('id')
|
|
98
|
+
.eq('uuid', conversationId)
|
|
99
|
+
.single();
|
|
100
|
+
if (conversationQuery.error) {
|
|
101
|
+
throw new Error(`Failed to find conversation: ${conversationQuery.error.message}`);
|
|
102
|
+
}
|
|
103
|
+
const { data, error } = await this.supabase
|
|
104
|
+
.from(tableName)
|
|
105
|
+
.select('*')
|
|
106
|
+
.eq('conversation_id', conversationQuery.data.id)
|
|
107
|
+
.order('created_at', { ascending: true })
|
|
108
|
+
.range(offset, offset + limit - 1);
|
|
109
|
+
if (error)
|
|
110
|
+
throw new Error(`Failed to get messages: ${error.message}`);
|
|
111
|
+
return (data || []).map(row => {
|
|
112
|
+
const metadata = row.metadata || {};
|
|
113
|
+
return {
|
|
114
|
+
id: row.uuid,
|
|
115
|
+
conversationId: conversationId,
|
|
116
|
+
threadId: conversationId,
|
|
117
|
+
role: row.type,
|
|
118
|
+
content: row.content,
|
|
119
|
+
toolCalls: metadata.tool_calls,
|
|
120
|
+
toolResults: metadata.tool_results,
|
|
121
|
+
parentMessageId: row.parent_message_id,
|
|
122
|
+
createdAt: new Date(row.created_at),
|
|
123
|
+
updatedAt: row.updated_at ? new Date(row.updated_at) : undefined
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
async deleteMessage(messageId) {
|
|
128
|
+
const tableName = this.getTableName('messages');
|
|
129
|
+
const { error } = await this.supabase
|
|
130
|
+
.from(tableName)
|
|
131
|
+
.delete()
|
|
132
|
+
.eq('uuid', messageId);
|
|
133
|
+
if (error)
|
|
134
|
+
throw new Error(`Failed to delete message: ${error.message}`);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
async getMessageById(messageId) {
|
|
138
|
+
const tableName = this.getTableName('messages');
|
|
139
|
+
const { data, error } = await this.supabase
|
|
140
|
+
.from(tableName)
|
|
141
|
+
.select('*, conversations!inner(uuid)')
|
|
142
|
+
.eq('uuid', messageId)
|
|
143
|
+
.single();
|
|
144
|
+
if (error) {
|
|
145
|
+
if (error.code === 'PGRST116')
|
|
146
|
+
return null; // Not found
|
|
147
|
+
throw new Error(`Failed to get message: ${error.message}`);
|
|
148
|
+
}
|
|
149
|
+
const metadata = data.metadata || {};
|
|
150
|
+
return {
|
|
151
|
+
id: data.uuid,
|
|
152
|
+
conversationId: data.conversations.uuid,
|
|
153
|
+
threadId: data.conversations.uuid,
|
|
154
|
+
role: data.type,
|
|
155
|
+
content: data.content,
|
|
156
|
+
toolCalls: metadata.tool_calls,
|
|
157
|
+
toolResults: metadata.tool_results,
|
|
158
|
+
parentMessageId: data.parent_message_id,
|
|
159
|
+
createdAt: new Date(data.created_at),
|
|
160
|
+
updatedAt: data.updated_at ? new Date(data.updated_at) : undefined
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.MessageRepository = MessageRepository;
|
|
165
|
+
//# sourceMappingURL=MessageRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageRepository.js","sourceRoot":"","sources":["../../../src/storage/MessageRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
+
import { ChatStorage, ChatConversation, StoredChatMessage, Feedback } from '../types';
|
|
3
|
+
export declare class SupabaseStorage implements ChatStorage {
|
|
4
|
+
private supabase;
|
|
5
|
+
private tablePrefix;
|
|
6
|
+
constructor(supabase: SupabaseClient, tablePrefix?: string);
|
|
7
|
+
private getTableName;
|
|
8
|
+
saveConversation(conversation: ChatConversation): Promise<ChatConversation>;
|
|
9
|
+
getConversation(conversationId: string): Promise<ChatConversation | null>;
|
|
10
|
+
updateConversation(conversationId: string, updates: Partial<ChatConversation>): Promise<ChatConversation>;
|
|
11
|
+
deleteConversation(conversationId: string): Promise<boolean>;
|
|
12
|
+
getUserConversations(userId: string, organizationId?: string): Promise<ChatConversation[]>;
|
|
13
|
+
saveMessage(message: StoredChatMessage): Promise<StoredChatMessage>;
|
|
14
|
+
getMessages(conversationId: string, limit?: number, offset?: number): Promise<StoredChatMessage[]>;
|
|
15
|
+
deleteMessage(messageId: string): Promise<boolean>;
|
|
16
|
+
saveFeedback(feedback: Feedback): Promise<Feedback>;
|
|
17
|
+
getFeedback(messageId: string): Promise<Feedback[]>;
|
|
18
|
+
private rowToConversation;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SupabaseStorage.d.ts.map
|
|
@@ -0,0 +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;IAmFnE,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"}
|