@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.
- package/README.md +140 -43
- package/bin/vezlo-server.js +1 -1
- package/database-schema.sql +193 -33
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +17 -8
- package/dist/knexfile.js.map +1 -1
- package/dist/src/config/database.d.ts.map +1 -1
- package/dist/src/config/database.js +9 -1
- package/dist/src/config/database.js.map +1 -1
- package/dist/src/config/global.d.ts.map +1 -1
- package/dist/src/config/global.js +5 -2
- package/dist/src/config/global.js.map +1 -1
- package/dist/src/config/knex.d.ts.map +1 -1
- package/dist/src/config/knex.js +22 -2
- package/dist/src/config/knex.js.map +1 -1
- package/dist/src/config/swagger.d.ts.map +1 -1
- package/dist/src/config/swagger.js +34 -73
- package/dist/src/config/swagger.js.map +1 -1
- package/dist/src/controllers/ApiKeyController.d.ts +17 -0
- package/dist/src/controllers/ApiKeyController.d.ts.map +1 -0
- package/dist/src/controllers/ApiKeyController.js +84 -0
- package/dist/src/controllers/ApiKeyController.js.map +1 -0
- package/dist/src/controllers/AuthController.d.ts +14 -0
- package/dist/src/controllers/AuthController.d.ts.map +1 -0
- package/dist/src/controllers/AuthController.js +212 -0
- package/dist/src/controllers/AuthController.js.map +1 -0
- package/dist/src/controllers/ChatController.d.ts +8 -5
- package/dist/src/controllers/ChatController.d.ts.map +1 -1
- package/dist/src/controllers/ChatController.js +139 -31
- package/dist/src/controllers/ChatController.js.map +1 -1
- package/dist/src/controllers/KnowledgeController.d.ts +5 -4
- package/dist/src/controllers/KnowledgeController.d.ts.map +1 -1
- package/dist/src/controllers/KnowledgeController.js +54 -16
- package/dist/src/controllers/KnowledgeController.js.map +1 -1
- package/dist/src/middleware/auth.d.ts +51 -0
- package/dist/src/middleware/auth.d.ts.map +1 -0
- package/dist/src/middleware/auth.js +232 -0
- package/dist/src/middleware/auth.js.map +1 -0
- package/dist/src/middleware/errorHandler.d.ts.map +1 -1
- package/dist/src/middleware/errorHandler.js +13 -19
- package/dist/src/middleware/errorHandler.js.map +1 -1
- package/dist/src/migrations/001_initial_schema.d.ts.map +1 -1
- package/dist/src/migrations/001_initial_schema.js +39 -64
- package/dist/src/migrations/001_initial_schema.js.map +1 -1
- package/dist/src/migrations/002_multitenancy_schema.d.ts +4 -0
- package/dist/src/migrations/002_multitenancy_schema.d.ts.map +1 -0
- package/dist/src/migrations/002_multitenancy_schema.js +119 -0
- package/dist/src/migrations/002_multitenancy_schema.js.map +1 -0
- package/dist/src/schemas/AuthSchemas.d.ts +89 -0
- package/dist/src/schemas/AuthSchemas.d.ts.map +1 -0
- package/dist/src/schemas/AuthSchemas.js +63 -0
- package/dist/src/schemas/AuthSchemas.js.map +1 -0
- package/dist/src/schemas/CommonSchemas.d.ts +62 -0
- package/dist/src/schemas/CommonSchemas.d.ts.map +1 -0
- package/dist/src/schemas/CommonSchemas.js +65 -0
- package/dist/src/schemas/CommonSchemas.js.map +1 -0
- package/dist/src/schemas/ConversationSchemas.d.ts +64 -27
- package/dist/src/schemas/ConversationSchemas.d.ts.map +1 -1
- package/dist/src/schemas/ConversationSchemas.js +28 -9
- package/dist/src/schemas/ConversationSchemas.js.map +1 -1
- package/dist/src/schemas/FeedbackSchemas.d.ts +43 -5
- package/dist/src/schemas/FeedbackSchemas.d.ts.map +1 -1
- package/dist/src/schemas/FeedbackSchemas.js +20 -2
- package/dist/src/schemas/FeedbackSchemas.js.map +1 -1
- package/dist/src/schemas/KnowledgeSchemas.d.ts +114 -35
- package/dist/src/schemas/KnowledgeSchemas.d.ts.map +1 -1
- package/dist/src/schemas/KnowledgeSchemas.js +58 -16
- package/dist/src/schemas/KnowledgeSchemas.js.map +1 -1
- package/dist/src/schemas/MessageSchemas.d.ts +57 -8
- package/dist/src/schemas/MessageSchemas.d.ts.map +1 -1
- package/dist/src/schemas/MessageSchemas.js +22 -3
- package/dist/src/schemas/MessageSchemas.js.map +1 -1
- package/dist/src/schemas/index.d.ts +410 -68
- package/dist/src/schemas/index.d.ts.map +1 -1
- package/dist/src/schemas/index.js +8 -2
- package/dist/src/schemas/index.js.map +1 -1
- package/dist/src/server.js +1047 -615
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/AIService.d.ts +1 -2
- package/dist/src/services/AIService.d.ts.map +1 -1
- package/dist/src/services/AIService.js +6 -32
- package/dist/src/services/AIService.js.map +1 -1
- package/dist/src/services/ApiKeyService.d.ts +38 -0
- package/dist/src/services/ApiKeyService.d.ts.map +1 -0
- package/dist/src/services/ApiKeyService.js +123 -0
- package/dist/src/services/ApiKeyService.js.map +1 -0
- package/dist/src/services/KnowledgeBaseService.d.ts +2 -2
- package/dist/src/services/KnowledgeBaseService.d.ts.map +1 -1
- package/dist/src/services/KnowledgeBaseService.js +9 -2
- package/dist/src/services/KnowledgeBaseService.js.map +1 -1
- package/dist/src/services/MigrationService.d.ts +1 -1
- package/dist/src/services/MigrationService.d.ts.map +1 -1
- package/dist/src/services/MigrationService.js +4 -8
- package/dist/src/services/MigrationService.js.map +1 -1
- package/dist/src/services/SetupService.d.ts +102 -0
- package/dist/src/services/SetupService.d.ts.map +1 -0
- package/dist/src/services/SetupService.js +343 -0
- package/dist/src/services/SetupService.js.map +1 -0
- package/dist/src/storage/ConversationRepository.d.ts.map +1 -1
- package/dist/src/storage/ConversationRepository.js +42 -8
- package/dist/src/storage/ConversationRepository.js.map +1 -1
- package/dist/src/storage/MessageRepository.d.ts.map +1 -1
- package/dist/src/storage/MessageRepository.js +23 -27
- package/dist/src/storage/MessageRepository.js.map +1 -1
- package/dist/src/types/index.d.ts +0 -8
- package/dist/src/types/index.d.ts.map +1 -1
- package/env.example +7 -5
- package/knexfile.ts +17 -8
- package/package.json +25 -16
- package/scripts/generate-key.js +124 -0
- package/scripts/seed-default.js +72 -0
- package/scripts/setup.js +410 -149
- package/scripts/validate-db.js +46 -13
package/scripts/validate-db.js
CHANGED
|
@@ -57,15 +57,24 @@ async function validateDatabase() {
|
|
|
57
57
|
process.env.SUPABASE_SERVICE_KEY
|
|
58
58
|
);
|
|
59
59
|
|
|
60
|
-
// Try to query
|
|
60
|
+
// Try to query any table (query will fail if connection is bad)
|
|
61
61
|
const { error } = await supabase.from('vezlo_conversations').select('count').limit(0);
|
|
62
62
|
|
|
63
|
-
if (error
|
|
64
|
-
|
|
63
|
+
if (error) {
|
|
64
|
+
// Check for table not found errors (normal before migrations run)
|
|
65
|
+
if (error.code === 'PGRST116' ||
|
|
66
|
+
error.message.includes('does not exist') ||
|
|
67
|
+
error.message.includes('Could not find the table')) {
|
|
68
|
+
log('✅ Supabase connection successful', 'green');
|
|
69
|
+
log('⚠️ Note: Tables not found yet - this is normal before running migrations\n', 'yellow');
|
|
70
|
+
} else {
|
|
71
|
+
// Only throw if it's a real connection error
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
log('✅ Supabase connection successful\n', 'green');
|
|
65
76
|
}
|
|
66
77
|
|
|
67
|
-
log('✅ Supabase connection successful\n', 'green');
|
|
68
|
-
|
|
69
78
|
} catch (error) {
|
|
70
79
|
log(`❌ Supabase connection failed: ${error.message}\n`, 'red');
|
|
71
80
|
process.exit(1);
|
|
@@ -74,10 +83,11 @@ async function validateDatabase() {
|
|
|
74
83
|
// Test database connection and validate tables
|
|
75
84
|
log('Validating database tables...', 'yellow');
|
|
76
85
|
|
|
86
|
+
let client;
|
|
77
87
|
try {
|
|
78
88
|
const { Client } = require('pg');
|
|
79
89
|
|
|
80
|
-
|
|
90
|
+
client = new Client({
|
|
81
91
|
host: process.env.SUPABASE_DB_HOST,
|
|
82
92
|
port: parseInt(process.env.SUPABASE_DB_PORT || '5432'),
|
|
83
93
|
database: process.env.SUPABASE_DB_NAME || 'postgres',
|
|
@@ -86,14 +96,23 @@ async function validateDatabase() {
|
|
|
86
96
|
ssl: { rejectUnauthorized: false }
|
|
87
97
|
});
|
|
88
98
|
|
|
99
|
+
// Handle connection errors
|
|
100
|
+
client.on('error', (err) => {
|
|
101
|
+
console.error('Database connection error:', err.message);
|
|
102
|
+
});
|
|
103
|
+
|
|
89
104
|
await client.connect();
|
|
90
105
|
|
|
91
106
|
// Check required tables
|
|
92
107
|
const requiredTables = [
|
|
93
|
-
'
|
|
94
|
-
'
|
|
95
|
-
'
|
|
96
|
-
'
|
|
108
|
+
'vezlo_companies',
|
|
109
|
+
'vezlo_users',
|
|
110
|
+
'vezlo_user_company_profiles',
|
|
111
|
+
'vezlo_api_keys',
|
|
112
|
+
'vezlo_conversations',
|
|
113
|
+
'vezlo_messages',
|
|
114
|
+
'vezlo_message_feedback',
|
|
115
|
+
'vezlo_knowledge_items'
|
|
97
116
|
];
|
|
98
117
|
|
|
99
118
|
const result = await client.query(`
|
|
@@ -111,7 +130,9 @@ async function validateDatabase() {
|
|
|
111
130
|
log(`\n❌ Missing required tables:`, 'red');
|
|
112
131
|
missingTables.forEach(table => log(` - ${table}`, 'red'));
|
|
113
132
|
log('\nRun the setup wizard: ' + colors.bright + 'npx vezlo-setup' + colors.reset + '\n', 'yellow');
|
|
114
|
-
|
|
133
|
+
if (client) {
|
|
134
|
+
await client.end();
|
|
135
|
+
}
|
|
115
136
|
process.exit(1);
|
|
116
137
|
}
|
|
117
138
|
|
|
@@ -134,7 +155,10 @@ async function validateDatabase() {
|
|
|
134
155
|
ORDER BY t.table_name
|
|
135
156
|
`, [requiredTables]);
|
|
136
157
|
|
|
137
|
-
log('\n📊
|
|
158
|
+
log('\n📊 Database Tables Summary:', 'cyan');
|
|
159
|
+
log(` Total tables found: ${schemaCheck.rows.length}`, 'green');
|
|
160
|
+
|
|
161
|
+
log('\n📋 Table Details:', 'cyan');
|
|
138
162
|
schemaCheck.rows.forEach(row => {
|
|
139
163
|
log(` ✓ ${row.table_name} (${row.column_count} columns)`, 'green');
|
|
140
164
|
});
|
|
@@ -156,10 +180,19 @@ async function validateDatabase() {
|
|
|
156
180
|
log('Your server is ready to start:', 'cyan');
|
|
157
181
|
log(' ' + colors.bright + 'vezlo-server' + colors.reset + '\n');
|
|
158
182
|
|
|
159
|
-
|
|
183
|
+
if (client) {
|
|
184
|
+
await client.end();
|
|
185
|
+
}
|
|
160
186
|
|
|
161
187
|
} catch (error) {
|
|
162
188
|
log(`\n❌ Database validation failed: ${error.message}\n`, 'red');
|
|
189
|
+
if (client) {
|
|
190
|
+
try {
|
|
191
|
+
await client.end();
|
|
192
|
+
} catch (closeError) {
|
|
193
|
+
// Ignore close errors
|
|
194
|
+
}
|
|
195
|
+
}
|
|
163
196
|
process.exit(1);
|
|
164
197
|
}
|
|
165
198
|
}
|