@vezlo/assistant-server 1.2.0 → 1.4.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 (35) hide show
  1. package/README.md +152 -36
  2. package/bin/vezlo-server.js +1 -1
  3. package/dist/knexfile.d.ts.map +1 -1
  4. package/dist/knexfile.js +7 -0
  5. package/dist/knexfile.js.map +1 -1
  6. package/dist/src/config/global.d.ts.map +1 -1
  7. package/dist/src/config/global.js +5 -2
  8. package/dist/src/config/global.js.map +1 -1
  9. package/dist/src/config/swagger.d.ts.map +1 -1
  10. package/dist/src/config/swagger.js +16 -2
  11. package/dist/src/config/swagger.js.map +1 -1
  12. package/dist/src/server.js +129 -2
  13. package/dist/src/server.js.map +1 -1
  14. package/dist/src/services/AIService.d.ts +0 -1
  15. package/dist/src/services/AIService.d.ts.map +1 -1
  16. package/dist/src/services/AIService.js +0 -30
  17. package/dist/src/services/AIService.js.map +1 -1
  18. package/dist/src/services/MigrationService.d.ts +42 -0
  19. package/dist/src/services/MigrationService.d.ts.map +1 -0
  20. package/dist/src/services/MigrationService.js +227 -0
  21. package/dist/src/services/MigrationService.js.map +1 -0
  22. package/dist/src/storage/MessageRepository.d.ts.map +1 -1
  23. package/dist/src/storage/MessageRepository.js +24 -3
  24. package/dist/src/storage/MessageRepository.js.map +1 -1
  25. package/dist/src/storage/SupabaseStorage.d.ts.map +1 -1
  26. package/dist/src/storage/SupabaseStorage.js +4 -0
  27. package/dist/src/storage/SupabaseStorage.js.map +1 -1
  28. package/dist/src/types/index.d.ts +0 -8
  29. package/dist/src/types/index.d.ts.map +1 -1
  30. package/docker-compose.yml +1 -1
  31. package/env.example +6 -6
  32. package/knexfile.ts +8 -0
  33. package/package.json +16 -15
  34. package/scripts/setup.js +277 -151
  35. package/scripts/validate-db.js +24 -7
package/README.md CHANGED
@@ -32,11 +32,25 @@ cd assistant-server
32
32
  npm install
33
33
  ```
34
34
 
35
+ ## 🏪 Vercel Marketplace Integration
36
+
37
+ **🚀 Recommended for Vercel Users** - Deploy with automated setup:
38
+
39
+ [![Install on Vercel](https://vercel.com/button)](https://vercel.com/marketplace/vezlo-assistant-server)
40
+
41
+ The Vercel Marketplace integration provides:
42
+ - **Guided Configuration** - Step-by-step setup wizard
43
+ - **Automatic Environment Setup** - No manual configuration needed
44
+ - **Database Migration** - Automatic table creation
45
+ - **Production Optimization** - Optimized for Vercel's serverless platform
46
+
47
+ [Learn more about the marketplace integration →](https://vercel.com/marketplace/vezlo-assistant-server)
48
+
35
49
  ## 🚀 Quick Start (Interactive Setup)
36
50
 
37
51
  ### Prerequisites
38
52
  - Node.js 20+ and npm 9+
39
- - Supabase project (or PostgreSQL database)
53
+ - Supabase project
40
54
  - OpenAI API key
41
55
 
42
56
  ### Easy Setup with Interactive Wizard
@@ -55,10 +69,11 @@ npm run setup
55
69
  ```
56
70
 
57
71
  The wizard will guide you through:
58
- 1. **Database Configuration** - Choose Supabase or PostgreSQL
59
- 2. **OpenAI API Setup** - Configure your AI model
60
- 3. **Automatic Table Creation** - Creates all required database tables
61
- 4. **Environment File Generation** - Saves configuration to .env
72
+ 1. **Supabase Configuration** - URL, Service Role Key, DB host/port/name/user/password (with defaults)
73
+ 2. **OpenAI Configuration** - API key, model, temperature, max tokens
74
+ 3. **Validation (non‑blocking)** - Tests Supabase API and DB connectivity
75
+ 4. **Migrations** - Runs Knex migrations if DB validation passes; otherwise shows how to run later
76
+ 5. **Environment** - Generates `.env` (does not overwrite if it already exists)
62
77
 
63
78
  After setup completes, start the server:
64
79
 
@@ -89,27 +104,37 @@ Get your Supabase credentials from:
89
104
  ```env
90
105
  # Supabase Configuration
91
106
  SUPABASE_URL=https://your-project.supabase.co
107
+ SUPABASE_ANON_KEY=your-anon-key
92
108
  SUPABASE_SERVICE_KEY=your-service-role-key
109
+
110
+ # Database Configuration for Migrations
93
111
  SUPABASE_DB_HOST=db.your-project.supabase.co
112
+ SUPABASE_DB_PORT=5432
113
+ SUPABASE_DB_NAME=postgres
114
+ SUPABASE_DB_USER=postgres
94
115
  SUPABASE_DB_PASSWORD=your-database-password
95
116
 
96
117
  # OpenAI Configuration
97
118
  OPENAI_API_KEY=sk-your-api-key
98
- ```
119
+ AI_MODEL=gpt-4o
99
120
 
100
- #### 3. Setup Database Tables
121
+ # Migration Security
122
+ MIGRATION_SECRET_KEY=your-secure-migration-key-here
123
+ ```
101
124
 
102
- **Option A: Automated Setup**
125
+ #### 3. Run Database Migrations (Recommended)
103
126
  ```bash
104
- vezlo-setup # Run wizard and choose option 3 to use existing .env
127
+ # Using Knex migrations (primary method)
128
+ npm run migrate:latest
129
+
130
+ # Or via API after server is running
131
+ curl "http://localhost:3000/api/migrate?key=$MIGRATION_SECRET_KEY"
105
132
  ```
106
133
 
107
- **Option B: Manual SQL**
134
+ Optional fallback (not recommended if using migrations):
108
135
  ```bash
109
- # Copy schema to Supabase SQL Editor
136
+ # Run raw SQL in Supabase Dashboard → SQL Editor
110
137
  cat database-schema.sql
111
-
112
- # Then execute in Supabase Dashboard → SQL Editor
113
138
  ```
114
139
 
115
140
  #### 4. Validate Setup
@@ -138,7 +163,7 @@ npm run build && npm start
138
163
  ### Docker Deployment
139
164
 
140
165
  ```bash
141
- # Start with Docker Compose
166
+ # Start with Docker Compose (uses .env from project root)
142
167
  docker-compose up -d
143
168
 
144
169
  # View logs
@@ -147,19 +172,36 @@ docker-compose logs -f vezlo-server
147
172
 
148
173
  ## ☁️ Vercel Deployment
149
174
 
150
- Deploy to Vercel's serverless platform with one click:
175
+ Deploy to Vercel's serverless platform with multiple options. The Marketplace integration collects your credentials during configuration and sets environment variables automatically.
176
+
177
+ ### Option 1: Vercel Marketplace Integration (Recommended)
151
178
 
152
- ### One-Click Deploy
179
+ **🚀 Deploy via Vercel Marketplace** - Automated setup with guided configuration:
153
180
 
154
- [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/vezlo/assistant-server&env=SUPABASE_URL,SUPABASE_SERVICE_KEY,SUPABASE_DB_HOST,SUPABASE_DB_PASSWORD,OPENAI_API_KEY&envDescription=Required%20environment%20variables&envLink=https://github.com/vezlo/assistant-server/blob/main/.env.vercel.example)
181
+ [![Install on Vercel](https://vercel.com/button)](https://vercel.com/marketplace/vezlo-assistant-server)
182
+
183
+ **Benefits:**
184
+ - ✅ **Guided Setup** - Step-by-step configuration wizard
185
+ - ✅ **Automatic Environment Variables** - No manual env var configuration needed
186
+ - ✅ **Database Migration** - Automatic table creation and schema setup
187
+ - ✅ **Production Ready** - Optimized for Vercel's serverless platform
188
+
189
+ **After Installation:**
190
+ 1. Run the migration URL: `https://your-project.vercel.app/api/migrate?key=YOUR_MIGRATION_SECRET`
191
+ 2. Verify deployment: `https://your-project.vercel.app/health`
192
+ 3. Access API docs: `https://your-project.vercel.app/docs`
193
+
194
+ ### Option 2: One-Click Deploy Button
195
+
196
+ [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/vezlo/assistant-server&integration-ids=oac_f2GcBt8U4FhiVJ4qWv5PYMEZ)
155
197
 
156
198
  This will:
157
199
  - Fork the repository to your GitHub
158
200
  - Create a Vercel project
159
- - Prompt for required environment variables
201
+ - Require marketplace integration setup
160
202
  - Deploy automatically
161
203
 
162
- ### Manual Vercel Deploy
204
+ ### Option 3: Manual Vercel Deploy
163
205
 
164
206
  ```bash
165
207
  # Install Vercel CLI
@@ -173,9 +215,9 @@ vercel
173
215
 
174
216
  ### Prerequisites for Vercel
175
217
 
176
- 1. **Setup Database First**: Run `vezlo-setup` locally or execute `database-schema.sql` in Supabase
177
- 2. **Get Credentials**: Collect Supabase and OpenAI credentials
178
- 3. **Configure Environment Variables** in Vercel project settings
218
+ 1. Supabase project (URL, Service Role key, DB host/port/name/user/password)
219
+ 2. OpenAI API key
220
+ 3. If not using the Marketplace, add environment variables in Vercel project settings
179
221
 
180
222
  See [docs/VERCEL_DEPLOYMENT.md](docs/VERCEL_DEPLOYMENT.md) for detailed deployment guide.
181
223
 
@@ -186,15 +228,24 @@ Edit `.env` file with your credentials:
186
228
  ```bash
187
229
  # REQUIRED - Supabase Configuration
188
230
  SUPABASE_URL=https://your-project-id.supabase.co
189
- SUPABASE_ANON_KEY=your-anon-key
190
231
  SUPABASE_SERVICE_KEY=your-service-role-key
191
232
 
233
+ # REQUIRED - Database Configuration for Knex.js Migrations
234
+ SUPABASE_DB_HOST=db.your-project.supabase.co
235
+ SUPABASE_DB_PORT=5432
236
+ SUPABASE_DB_NAME=postgres
237
+ SUPABASE_DB_USER=postgres
238
+ SUPABASE_DB_PASSWORD=your-database-password
239
+
192
240
  # REQUIRED - OpenAI Configuration
193
241
  OPENAI_API_KEY=sk-your-openai-api-key
194
242
  AI_MODEL=gpt-4o
195
243
  AI_TEMPERATURE=0.7
196
244
  AI_MAX_TOKENS=1000
197
245
 
246
+ # REQUIRED - Database Migration Security
247
+ MIGRATION_SECRET_KEY=your-secure-migration-key-here
248
+
198
249
  # OPTIONAL - Server Configuration
199
250
  PORT=3000
200
251
  NODE_ENV=production
@@ -203,6 +254,9 @@ LOG_LEVEL=info
203
254
  # OPTIONAL - CORS Configuration
204
255
  CORS_ORIGINS=http://localhost:3000,http://localhost:5173
205
256
 
257
+ # OPTIONAL - Swagger Base URL
258
+ BASE_URL=http://localhost:3000
259
+
206
260
  # OPTIONAL - Rate Limiting
207
261
  RATE_LIMIT_WINDOW=60000
208
262
  RATE_LIMIT_MAX=100
@@ -221,7 +275,8 @@ CHUNK_OVERLAP=200
221
275
  The package provides these command-line tools:
222
276
 
223
277
  ### vezlo-setup
224
- Interactive wizard for initial configuration and database setup.
278
+ **Interactive setup wizard** that guides you through the complete configuration process. This CLI tool provides the same functionality as the web-based setup wizard but runs in your terminal.
279
+
225
280
  ```bash
226
281
  vezlo-setup
227
282
  ```
@@ -267,6 +322,39 @@ http://localhost:3000/api
267
322
  - `GET /api/knowledge/items/:uuid` - Get knowledge item
268
323
  - `PUT /api/knowledge/items/:uuid` - Update knowledge item
269
324
  - `DELETE /api/knowledge/items/:uuid` - Delete knowledge item
325
+
326
+ #### Database Migrations
327
+ - `GET /api/migrate?key=<secret>` - Run pending database migrations
328
+ - `GET /api/migrate/status?key=<secret>` - Check migration status
329
+
330
+ **Migration Workflow:**
331
+ 1. **Create Migration**: Use `npm run migrate:make migration_name` to create new migration files
332
+ 2. **Check Status**: Use `/api/migrate/status` to see pending migrations
333
+ 3. **Run Migrations**: Use `/api/migrate` to execute pending migrations remotely
334
+
335
+ **Migration Endpoints Usage:**
336
+ ```bash
337
+ # Check migration status
338
+ curl "http://localhost:3000/api/migrate/status?key=your-migration-secret-key"
339
+
340
+ # Run pending migrations
341
+ curl "http://localhost:3000/api/migrate?key=your-migration-secret-key"
342
+ ```
343
+
344
+ **Required Environment Variable:**
345
+ - `MIGRATION_SECRET_KEY` - Secret key for authenticating migration requests
346
+
347
+ **Migration Creation Example:**
348
+ ```bash
349
+ # Create a new migration
350
+ npm run migrate:make add_users_table
351
+
352
+ # This creates: src/migrations/002_add_users_table.ts
353
+ # Edit the file to add your schema changes
354
+ # Then run via endpoint or command line
355
+ ```
356
+
357
+ #### Knowledge Search
270
358
  - `POST /api/knowledge/search` - Search knowledge base
271
359
 
272
360
  #### Feedback
@@ -333,19 +421,32 @@ curl -X POST /api/messages/msg456/generate \
333
421
 
334
422
  ## 🗄️ Database Setup
335
423
 
336
- Run the SQL schema in your Supabase SQL Editor:
424
+ ### Option A: Run Migrations (Recommended)
425
+
426
+ Use the built‑in migration endpoints to create/upgrade tables:
427
+
428
+ ```bash
429
+ # Run pending migrations
430
+ curl "http://localhost:3000/api/migrate?key=your-migration-secret-key"
431
+
432
+ # Check migration status
433
+ curl "http://localhost:3000/api/migrate/status?key=your-migration-secret-key"
434
+ ```
435
+
436
+ These endpoints execute Knex migrations and keep schema versioned.
437
+
438
+ ### Option B: Manual SQL (Fallback)
439
+
440
+ If you prefer manual setup, run the SQL schema in Supabase SQL Editor:
337
441
 
338
442
  ```bash
339
- # Copy the database schema file
340
- cp database-schema.sql /path/to/your/supabase/sql-editor
443
+ # View the schema SQL locally
444
+ cat database-schema.sql
445
+
446
+ # Copy into Supabase Dashboard → SQL Editor and execute
341
447
  ```
342
448
 
343
- The `database-schema.sql` file contains all necessary tables and functions:
344
- - **conversations** - Chat conversation management
345
- - **messages** - Individual messages within conversations
346
- - **message_feedback** - User feedback on messages
347
- - **knowledge_items** - Knowledge base items with vector embeddings
348
- - **match_knowledge_items()** - Vector similarity search function
449
+ The `database-schema.sql` contains all required tables and functions.
349
450
 
350
451
  ## 🐳 Docker Commands
351
452
 
@@ -418,8 +519,11 @@ npm install
418
519
  # Build TypeScript
419
520
  npm run build
420
521
 
421
- # Start development server
422
- npm run dev
522
+ # Start server (Node)
523
+ npm start
524
+
525
+ # Or start via CLI wrapper
526
+ npx vezlo-server
423
527
 
424
528
  # Run tests
425
529
  npm test
@@ -455,9 +559,12 @@ vezlo/
455
559
  ### Environment Variables
456
560
  Ensure all required environment variables are set:
457
561
  - `SUPABASE_URL` and `SUPABASE_SERVICE_KEY` (required)
562
+ - `SUPABASE_DB_HOST`, `SUPABASE_DB_PASSWORD` (required for migrations)
458
563
  - `OPENAI_API_KEY` (required)
564
+ - `MIGRATION_SECRET_KEY` (required for migration endpoints)
459
565
  - `NODE_ENV=production`
460
566
  - `CORS_ORIGINS` (set to your domain)
567
+ - `BASE_URL` (optional, for custom Swagger server URL)
461
568
 
462
569
  ### Docker Production
463
570
  ```bash
@@ -477,6 +584,15 @@ docker run -d \
477
584
  - Docker health check configured
478
585
  - Logs available in `./logs/` directory
479
586
 
587
+ ### Database Migrations in Production
588
+ ```bash
589
+ # Check migration status
590
+ curl "https://your-domain.com/api/migrate/status?key=your-migration-secret-key"
591
+
592
+ # Run pending migrations
593
+ curl "https://your-domain.com/api/migrate?key=your-migration-secret-key"
594
+ ```
595
+
480
596
  ## 🤝 Contributing
481
597
 
482
598
  ### Development Workflow
@@ -532,4 +648,4 @@ This project is dual-licensed:
532
648
 
533
649
  ---
534
650
 
535
- **Status**: ✅ Production Ready | **Version**: 1.0.0 | **Node.js**: 20+ | **TypeScript**: 5+
651
+ **Status**: ✅ Production Ready | **Version**: 1.4.0 | **Node.js**: 20+ | **TypeScript**: 5+
@@ -9,7 +9,7 @@ const path = require('path');
9
9
  const fs = require('fs');
10
10
 
11
11
  // Check if server is built
12
- const serverPath = path.join(__dirname, '..', 'dist', 'server.js');
12
+ const serverPath = path.join(__dirname, '..', 'dist', 'src', 'server.js');
13
13
 
14
14
  if (!fs.existsSync(serverPath)) {
15
15
  console.error('❌ Error: Server not built. Please run "npm run build" first.');
@@ -1 +1 @@
1
- {"version":3,"file":"knexfile.d.ts","sourceRoot":"","sources":["../knexfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAMjC,QAAA,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;CA4EzC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"knexfile.d.ts","sourceRoot":"","sources":["../knexfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAcjC,QAAA,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;CA4EzC,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/knexfile.js CHANGED
@@ -6,6 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const dotenv_1 = __importDefault(require("dotenv"));
7
7
  // Load environment variables
8
8
  dotenv_1.default.config();
9
+ // Register ts-node for TypeScript support in migrations (works in all environments)
10
+ try {
11
+ require('ts-node/register');
12
+ }
13
+ catch (e) {
14
+ // ts-node not available, that's okay - migrations will use compiled JS
15
+ }
9
16
  const config = {
10
17
  development: {
11
18
  client: 'postgresql',
@@ -1 +1 @@
1
- {"version":3,"file":"knexfile.js","sourceRoot":"","sources":["../knexfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knexfile.js","sourceRoot":"","sources":["../knexfile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IACF,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,UAAU,EAAE;QACV,uBAAuB,EAAE,OAAO,CAAC;QACjC,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,OAAO,CAAC;QAC9B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAGD,eAAO,MAAM,aAAa,EAAE,YAuD3B,CAAC;AAwBF,eAAO,MAAM,MAAM,EAAE,YAYpB,CAAC;AAGF,wBAAgB,cAAc,IAAI,IAAI,CAerC;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IACF,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,UAAU,EAAE;QACV,uBAAuB,EAAE,OAAO,CAAC;QACjC,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,OAAO,CAAC;QAC9B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAGD,eAAO,MAAM,aAAa,EAAE,YAuD3B,CAAC;AAwBF,eAAO,MAAM,MAAM,EAAE,YAYpB,CAAC;AAGF,wBAAgB,cAAc,IAAI,IAAI,CAerC;AAED,eAAe,MAAM,CAAC"}
@@ -6,6 +6,9 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.config = exports.defaultConfig = void 0;
8
8
  exports.validateConfig = validateConfig;
9
+ const dotenv_1 = require("dotenv");
10
+ // Load environment variables first
11
+ (0, dotenv_1.config)();
9
12
  // Default configuration
10
13
  exports.defaultConfig = {
11
14
  app: {
@@ -26,7 +29,7 @@ exports.defaultConfig = {
26
29
  },
27
30
  ai: {
28
31
  provider: 'openai',
29
- model: process.env.OPENAI_MODEL || 'gpt-4o-mini',
32
+ model: process.env.AI_MODEL || 'gpt-4o-mini',
30
33
  embeddingModel: 'text-embedding-ada-002',
31
34
  maxTokens: 4096,
32
35
  temperature: 0.7,
@@ -99,7 +102,7 @@ exports.config = {
99
102
  function validateConfig() {
100
103
  const required = [
101
104
  'SUPABASE_URL',
102
- 'SUPABASE_ANON_KEY',
105
+ 'SUPABASE_SERVICE_KEY',
103
106
  'OPENAI_API_KEY'
104
107
  ];
105
108
  const missing = required.filter(key => !process.env[key]);
@@ -1 +1 @@
1
- {"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../../src/config/swagger.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAgN3C,eAAO,MAAM,KAAK,QAAwB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAoB5B,CAAC"}
1
+ {"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../../src/config/swagger.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAiO3C,eAAO,MAAM,KAAK,QAAwB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAoB5B,CAAC"}
@@ -4,11 +4,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.swaggerUiOptions = exports.swaggerUi = exports.specs = void 0;
7
+ const dotenv_1 = require("dotenv");
7
8
  const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
8
9
  const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
9
10
  exports.swaggerUi = swagger_ui_express_1.default;
10
11
  const global_1 = require("./global");
11
12
  const schemas_1 = require("../schemas");
13
+ // Load environment variables
14
+ (0, dotenv_1.config)();
15
+ const getServerUrl = () => {
16
+ // Always use BASE_URL if set, otherwise fallback to appropriate default
17
+ if (process.env.BASE_URL) {
18
+ return process.env.BASE_URL;
19
+ }
20
+ // Fallback to Vercel URL or localhost
21
+ if (process.env.VERCEL_URL) {
22
+ return `https://${process.env.VERCEL_URL}`;
23
+ }
24
+ return 'http://localhost:3000';
25
+ };
12
26
  const options = {
13
27
  definition: {
14
28
  openapi: '3.0.0',
@@ -19,8 +33,8 @@ const options = {
19
33
  },
20
34
  servers: [
21
35
  {
22
- url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'http://localhost:3000',
23
- description: process.env.VERCEL_URL ? 'Production server' : 'Development server'
36
+ url: getServerUrl(),
37
+ description: process.env.VERCEL_URL ? 'Current deployment' : 'Development server'
24
38
  }
25
39
  ],
26
40
  components: {
@@ -1 +1 @@
1
- {"version":3,"file":"swagger.js","sourceRoot":"","sources":["../../../src/config/swagger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swagger.js","sourceRoot":"","sources":["../../../src/config/swagger.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,37 @@
1
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
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -89,7 +122,6 @@ async function initializeServices() {
89
122
  model: process.env.AI_MODEL || 'gpt-4',
90
123
  temperature: parseFloat(process.env.AI_TEMPERATURE || '0.7'),
91
124
  maxTokens: parseInt(process.env.AI_MAX_TOKENS || '1000'),
92
- enableFeedbackDetection: process.env.ENABLE_FEEDBACK_DETECTION === 'true',
93
125
  knowledgeBaseService: knowledgeBase
94
126
  });
95
127
  // Initialize chat manager
@@ -548,6 +580,102 @@ app.put('/api/knowledge/items/:uuid', (req, res) => knowledgeController.updateIt
548
580
  */
549
581
  app.delete('/api/knowledge/items/:uuid', (req, res) => knowledgeController.deleteItem(req, res));
550
582
  // ============================================================================
583
+ // MIGRATION ENDPOINTS
584
+ // ============================================================================
585
+ /**
586
+ * @swagger
587
+ * /api/migrate:
588
+ * get:
589
+ * summary: Run database migrations
590
+ * description: Executes pending database migrations with API key authentication
591
+ * tags: [System]
592
+ * parameters:
593
+ * - in: query
594
+ * name: key
595
+ * required: true
596
+ * schema:
597
+ * type: string
598
+ * description: Migration API key
599
+ * responses:
600
+ * 200:
601
+ * description: Migrations completed successfully
602
+ * content:
603
+ * application/json:
604
+ * schema:
605
+ * type: object
606
+ * properties:
607
+ * success:
608
+ * type: boolean
609
+ * message:
610
+ * type: string
611
+ * currentVersion:
612
+ * type: string
613
+ * details:
614
+ * type: object
615
+ * 400:
616
+ * description: Bad request (missing API key or environment variables)
617
+ * 401:
618
+ * description: Unauthorized (invalid API key)
619
+ * 500:
620
+ * description: Internal server error
621
+ */
622
+ app.get('/api/migrate', (0, errorHandler_1.asyncHandler)(async (req, res) => {
623
+ const { MigrationService } = await Promise.resolve().then(() => __importStar(require('./services/MigrationService')));
624
+ const apiKey = req.query.key || req.headers['x-migration-key'];
625
+ if (!apiKey) {
626
+ return res.status(400).json({
627
+ success: false,
628
+ message: 'Migration API key is required',
629
+ error: 'MISSING_API_KEY',
630
+ details: {
631
+ usage: 'Add ?key=your-secret-key to the URL or x-migration-key header'
632
+ }
633
+ });
634
+ }
635
+ const result = await MigrationService.runMigrations(apiKey);
636
+ const statusCode = result.success ? 200 :
637
+ result.error === 'UNAUTHORIZED' ? 401 :
638
+ result.error === 'MISSING_ENV_VARS' || result.error === 'DATABASE_CONNECTION_FAILED' ? 400 : 500;
639
+ res.status(statusCode).json(result);
640
+ }));
641
+ /**
642
+ * @swagger
643
+ * /api/migrate/status:
644
+ * get:
645
+ * summary: Get migration status
646
+ * description: Check current migration status without running migrations
647
+ * tags: [System]
648
+ * parameters:
649
+ * - in: query
650
+ * name: key
651
+ * required: true
652
+ * schema:
653
+ * type: string
654
+ * description: Migration API key
655
+ * responses:
656
+ * 200:
657
+ * description: Migration status retrieved
658
+ * 401:
659
+ * description: Unauthorized (invalid API key)
660
+ * 500:
661
+ * description: Internal server error
662
+ */
663
+ app.get('/api/migrate/status', (0, errorHandler_1.asyncHandler)(async (req, res) => {
664
+ const { MigrationService } = await Promise.resolve().then(() => __importStar(require('./services/MigrationService')));
665
+ const apiKey = req.query.key || req.headers['x-migration-key'];
666
+ if (!apiKey) {
667
+ return res.status(400).json({
668
+ success: false,
669
+ message: 'Migration API key is required',
670
+ error: 'MISSING_API_KEY'
671
+ });
672
+ }
673
+ const result = await MigrationService.getStatus(apiKey);
674
+ const statusCode = result.success ? 200 :
675
+ result.error === 'UNAUTHORIZED' ? 401 : 500;
676
+ res.status(statusCode).json(result);
677
+ }));
678
+ // ============================================================================
551
679
  // WEBSOCKET HANDLING
552
680
  // ============================================================================
553
681
  // WebSocket handling
@@ -565,7 +693,6 @@ io.on('connection', (socket) => {
565
693
  message: response.content,
566
694
  conversation_id: response.conversationId,
567
695
  message_id: response.messageId,
568
- feedback_detection: response.feedbackDetection,
569
696
  suggested_links: response.suggestedLinks
570
697
  });
571
698
  // Broadcast to all clients in the conversation