@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
package/dist/knexfile.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
7
|
+
// Load environment variables
|
|
8
|
+
dotenv_1.default.config();
|
|
9
|
+
const config = {
|
|
10
|
+
development: {
|
|
11
|
+
client: 'postgresql',
|
|
12
|
+
connection: {
|
|
13
|
+
host: process.env.SUPABASE_DB_HOST || 'localhost',
|
|
14
|
+
port: parseInt(process.env.SUPABASE_DB_PORT || '5432'),
|
|
15
|
+
database: process.env.SUPABASE_DB_NAME || 'postgres',
|
|
16
|
+
user: process.env.SUPABASE_DB_USER || 'postgres',
|
|
17
|
+
password: process.env.SUPABASE_DB_PASSWORD || '',
|
|
18
|
+
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
|
|
19
|
+
},
|
|
20
|
+
pool: {
|
|
21
|
+
min: 2,
|
|
22
|
+
max: 10
|
|
23
|
+
},
|
|
24
|
+
migrations: {
|
|
25
|
+
directory: './src/migrations',
|
|
26
|
+
tableName: 'knex_migrations',
|
|
27
|
+
extension: 'ts'
|
|
28
|
+
},
|
|
29
|
+
seeds: {
|
|
30
|
+
directory: './src/seeds',
|
|
31
|
+
extension: 'ts'
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
production: {
|
|
35
|
+
client: 'postgresql',
|
|
36
|
+
connection: {
|
|
37
|
+
host: process.env.SUPABASE_DB_HOST || 'localhost',
|
|
38
|
+
port: parseInt(process.env.SUPABASE_DB_PORT || '5432'),
|
|
39
|
+
database: process.env.SUPABASE_DB_NAME || 'postgres',
|
|
40
|
+
user: process.env.SUPABASE_DB_USER || 'postgres',
|
|
41
|
+
password: process.env.SUPABASE_DB_PASSWORD || '',
|
|
42
|
+
ssl: { rejectUnauthorized: false }
|
|
43
|
+
},
|
|
44
|
+
pool: {
|
|
45
|
+
min: 2,
|
|
46
|
+
max: 20
|
|
47
|
+
},
|
|
48
|
+
migrations: {
|
|
49
|
+
directory: './src/migrations',
|
|
50
|
+
tableName: 'knex_migrations',
|
|
51
|
+
extension: 'ts'
|
|
52
|
+
},
|
|
53
|
+
seeds: {
|
|
54
|
+
directory: './src/seeds',
|
|
55
|
+
extension: 'ts'
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
// For Supabase connection using connection string
|
|
59
|
+
supabase: {
|
|
60
|
+
client: 'postgresql',
|
|
61
|
+
connection: process.env.SUPABASE_DB_URL || process.env.DATABASE_URL || {
|
|
62
|
+
host: process.env.SUPABASE_DB_HOST || 'localhost',
|
|
63
|
+
port: parseInt(process.env.SUPABASE_DB_PORT || '5432'),
|
|
64
|
+
database: process.env.SUPABASE_DB_NAME || 'postgres',
|
|
65
|
+
user: process.env.SUPABASE_DB_USER || 'postgres',
|
|
66
|
+
password: process.env.SUPABASE_DB_PASSWORD || '',
|
|
67
|
+
ssl: { rejectUnauthorized: false }
|
|
68
|
+
},
|
|
69
|
+
pool: {
|
|
70
|
+
min: 2,
|
|
71
|
+
max: 10
|
|
72
|
+
},
|
|
73
|
+
migrations: {
|
|
74
|
+
directory: './src/migrations',
|
|
75
|
+
tableName: 'knex_migrations',
|
|
76
|
+
extension: 'ts'
|
|
77
|
+
},
|
|
78
|
+
seeds: {
|
|
79
|
+
directory: './src/seeds',
|
|
80
|
+
extension: 'ts'
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.default = config;
|
|
85
|
+
//# sourceMappingURL=knexfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knexfile.js","sourceRoot":"","sources":["../knexfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/config/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIrE,wBAAgB,kBAAkB,IAAI,cAAc,CAoBnD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initializeSupabase = initializeSupabase;
|
|
4
|
+
exports.getSupabaseClient = getSupabaseClient;
|
|
5
|
+
const supabase_js_1 = require("@supabase/supabase-js");
|
|
6
|
+
let supabaseClient = null;
|
|
7
|
+
function initializeSupabase() {
|
|
8
|
+
if (supabaseClient) {
|
|
9
|
+
return supabaseClient;
|
|
10
|
+
}
|
|
11
|
+
const supabaseUrl = process.env.SUPABASE_URL;
|
|
12
|
+
const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY;
|
|
13
|
+
if (!supabaseUrl || !supabaseKey) {
|
|
14
|
+
throw new Error('SUPABASE_URL and SUPABASE_SERVICE_KEY environment variables are required');
|
|
15
|
+
}
|
|
16
|
+
supabaseClient = (0, supabase_js_1.createClient)(supabaseUrl, supabaseKey, {
|
|
17
|
+
auth: {
|
|
18
|
+
autoRefreshToken: false,
|
|
19
|
+
persistSession: false
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return supabaseClient;
|
|
23
|
+
}
|
|
24
|
+
function getSupabaseClient() {
|
|
25
|
+
if (!supabaseClient) {
|
|
26
|
+
return initializeSupabase();
|
|
27
|
+
}
|
|
28
|
+
return supabaseClient;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/config/database.ts"],"names":[],"mappings":";;AAIA,gDAoBC;AAED,8CAKC;AA/BD,uDAAqE;AAErE,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD,SAAgB,kBAAkB;IAChC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAEtF,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IAED,cAAc,GAAG,IAAA,0BAAY,EAAC,WAAW,EAAE,WAAW,EAAE;QACtD,IAAI,EAAE;YACJ,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,KAAK;SACtB;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global Configuration File
|
|
3
|
+
* Centralized configuration for the AI Assistant API
|
|
4
|
+
*/
|
|
5
|
+
export interface GlobalConfig {
|
|
6
|
+
app: {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
description: string;
|
|
10
|
+
port: number;
|
|
11
|
+
environment: string;
|
|
12
|
+
};
|
|
13
|
+
api: {
|
|
14
|
+
prefix: string;
|
|
15
|
+
version: string;
|
|
16
|
+
timeout: number;
|
|
17
|
+
rateLimiting: {
|
|
18
|
+
windowMs: number;
|
|
19
|
+
maxRequests: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
ai: {
|
|
23
|
+
provider: string;
|
|
24
|
+
model: string;
|
|
25
|
+
embeddingModel: string;
|
|
26
|
+
maxTokens: number;
|
|
27
|
+
temperature: number;
|
|
28
|
+
timeout: number;
|
|
29
|
+
};
|
|
30
|
+
knowledge: {
|
|
31
|
+
chunkSize: number;
|
|
32
|
+
chunkOverlap: number;
|
|
33
|
+
similarityThreshold: number;
|
|
34
|
+
maxSearchResults: number;
|
|
35
|
+
embeddingDimensions: number;
|
|
36
|
+
};
|
|
37
|
+
validation: {
|
|
38
|
+
enableRequestValidation: boolean;
|
|
39
|
+
enableResponseValidation: boolean;
|
|
40
|
+
returnDetailedErrors: boolean;
|
|
41
|
+
};
|
|
42
|
+
swagger: {
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
title: string;
|
|
45
|
+
description: string;
|
|
46
|
+
version: string;
|
|
47
|
+
path: string;
|
|
48
|
+
};
|
|
49
|
+
cors: {
|
|
50
|
+
enabled: boolean;
|
|
51
|
+
origins: string[];
|
|
52
|
+
methods: string[];
|
|
53
|
+
credentials: boolean;
|
|
54
|
+
};
|
|
55
|
+
logging: {
|
|
56
|
+
level: string;
|
|
57
|
+
enableRequestLogging: boolean;
|
|
58
|
+
enableErrorLogging: boolean;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export declare const defaultConfig: GlobalConfig;
|
|
62
|
+
export declare const config: GlobalConfig;
|
|
63
|
+
export declare function validateConfig(): void;
|
|
64
|
+
export default config;
|
|
65
|
+
//# sourceMappingURL=global.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Global Configuration File
|
|
4
|
+
* Centralized configuration for the AI Assistant API
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.config = exports.defaultConfig = void 0;
|
|
8
|
+
exports.validateConfig = validateConfig;
|
|
9
|
+
// Default configuration
|
|
10
|
+
exports.defaultConfig = {
|
|
11
|
+
app: {
|
|
12
|
+
name: 'AI Assistant API',
|
|
13
|
+
version: '1.0.0',
|
|
14
|
+
description: 'Intelligent AI Assistant API with conversation management, knowledge base integration, and advanced feedback system',
|
|
15
|
+
port: parseInt(process.env.PORT || '3000'),
|
|
16
|
+
environment: process.env.NODE_ENV || 'development'
|
|
17
|
+
},
|
|
18
|
+
api: {
|
|
19
|
+
prefix: '/api',
|
|
20
|
+
version: 'v1',
|
|
21
|
+
timeout: 30000, // 30 seconds
|
|
22
|
+
rateLimiting: {
|
|
23
|
+
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW || '900000'), // Default 15 minutes
|
|
24
|
+
maxRequests: parseInt(process.env.RATE_LIMIT_MAX || '100') // per window
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
ai: {
|
|
28
|
+
provider: 'openai',
|
|
29
|
+
model: process.env.OPENAI_MODEL || 'gpt-4o-mini',
|
|
30
|
+
embeddingModel: 'text-embedding-ada-002',
|
|
31
|
+
maxTokens: 4096,
|
|
32
|
+
temperature: 0.7,
|
|
33
|
+
timeout: 60000 // 60 seconds
|
|
34
|
+
},
|
|
35
|
+
knowledge: {
|
|
36
|
+
chunkSize: parseInt(process.env.CHUNK_SIZE || '1000'),
|
|
37
|
+
chunkOverlap: parseInt(process.env.CHUNK_OVERLAP || '200'),
|
|
38
|
+
similarityThreshold: 0.7,
|
|
39
|
+
maxSearchResults: 10,
|
|
40
|
+
embeddingDimensions: 1536 // OpenAI ada-002 dimensions
|
|
41
|
+
},
|
|
42
|
+
validation: {
|
|
43
|
+
enableRequestValidation: true,
|
|
44
|
+
enableResponseValidation: process.env.NODE_ENV === 'development',
|
|
45
|
+
returnDetailedErrors: process.env.NODE_ENV !== 'production'
|
|
46
|
+
},
|
|
47
|
+
swagger: {
|
|
48
|
+
enabled: process.env.NODE_ENV !== 'production',
|
|
49
|
+
title: 'AI Assistant API',
|
|
50
|
+
description: 'Intelligent AI Assistant API with conversation management, knowledge base integration, and advanced feedback system',
|
|
51
|
+
version: '1.0.0',
|
|
52
|
+
path: '/docs'
|
|
53
|
+
},
|
|
54
|
+
cors: {
|
|
55
|
+
enabled: true,
|
|
56
|
+
origins: process.env.CORS_ORIGINS?.split(',') || ['http://localhost:3000', 'http://localhost:3001'],
|
|
57
|
+
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
|
|
58
|
+
credentials: true
|
|
59
|
+
},
|
|
60
|
+
logging: {
|
|
61
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
62
|
+
enableRequestLogging: true,
|
|
63
|
+
enableErrorLogging: true
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
// Environment-specific overrides
|
|
67
|
+
const envConfig = {};
|
|
68
|
+
if (process.env.NODE_ENV === 'production') {
|
|
69
|
+
envConfig.swagger = { ...exports.defaultConfig.swagger, enabled: false };
|
|
70
|
+
envConfig.validation = {
|
|
71
|
+
...exports.defaultConfig.validation,
|
|
72
|
+
returnDetailedErrors: false,
|
|
73
|
+
enableResponseValidation: false
|
|
74
|
+
};
|
|
75
|
+
envConfig.logging = { ...exports.defaultConfig.logging, level: 'warn' };
|
|
76
|
+
}
|
|
77
|
+
if (process.env.NODE_ENV === 'test') {
|
|
78
|
+
envConfig.logging = { ...exports.defaultConfig.logging, level: 'error' };
|
|
79
|
+
envConfig.api = {
|
|
80
|
+
...exports.defaultConfig.api,
|
|
81
|
+
rateLimiting: { windowMs: 1000, maxRequests: 1000 }
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Merge configurations
|
|
85
|
+
exports.config = {
|
|
86
|
+
...exports.defaultConfig,
|
|
87
|
+
...envConfig,
|
|
88
|
+
// Deep merge nested objects
|
|
89
|
+
app: { ...exports.defaultConfig.app, ...envConfig.app },
|
|
90
|
+
api: { ...exports.defaultConfig.api, ...envConfig.api },
|
|
91
|
+
ai: { ...exports.defaultConfig.ai, ...envConfig.ai },
|
|
92
|
+
knowledge: { ...exports.defaultConfig.knowledge, ...envConfig.knowledge },
|
|
93
|
+
validation: { ...exports.defaultConfig.validation, ...envConfig.validation },
|
|
94
|
+
swagger: { ...exports.defaultConfig.swagger, ...envConfig.swagger },
|
|
95
|
+
cors: { ...exports.defaultConfig.cors, ...envConfig.cors },
|
|
96
|
+
logging: { ...exports.defaultConfig.logging, ...envConfig.logging }
|
|
97
|
+
};
|
|
98
|
+
// Validation helper
|
|
99
|
+
function validateConfig() {
|
|
100
|
+
const required = [
|
|
101
|
+
'SUPABASE_URL',
|
|
102
|
+
'SUPABASE_ANON_KEY',
|
|
103
|
+
'OPENAI_API_KEY'
|
|
104
|
+
];
|
|
105
|
+
const missing = required.filter(key => !process.env[key]);
|
|
106
|
+
if (missing.length > 0) {
|
|
107
|
+
throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
|
|
108
|
+
}
|
|
109
|
+
console.log('✅ Configuration validated successfully');
|
|
110
|
+
console.log(`🚀 Starting ${exports.config.app.name} v${exports.config.app.version} in ${exports.config.app.environment} mode`);
|
|
111
|
+
}
|
|
112
|
+
exports.default = exports.config;
|
|
113
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
declare const db: Knex;
|
|
3
|
+
export default db;
|
|
4
|
+
export type { Knex };
|
|
5
|
+
export declare const runMigrations: () => Promise<void>;
|
|
6
|
+
export declare const rollbackMigrations: () => Promise<void>;
|
|
7
|
+
export declare const getMigrationStatus: () => Promise<number>;
|
|
8
|
+
export declare const closeConnection: () => Promise<void>;
|
|
9
|
+
//# sourceMappingURL=knex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knex.d.ts","sourceRoot":"","sources":["../../../src/config/knex.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAgBlC,QAAA,MAAM,EAAE,EAAE,IAAwB,CAAC;AAGnC,eAAe,EAAE,CAAC;AAGlB,YAAY,EAAE,IAAI,EAAE,CAAC;AAGrB,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,IAAI,CAQlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CAQvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,MAAM,CAQzD,CAAC;AAGF,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,IAAI,CAOpD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.closeConnection = exports.getMigrationStatus = exports.rollbackMigrations = exports.runMigrations = void 0;
|
|
7
|
+
const knex_1 = __importDefault(require("knex"));
|
|
8
|
+
const knexfile_1 = __importDefault(require("../../knexfile"));
|
|
9
|
+
// Get the appropriate configuration based on environment
|
|
10
|
+
const getConfig = () => {
|
|
11
|
+
const env = process.env.NODE_ENV || 'development';
|
|
12
|
+
// For Supabase, we can use the supabase config or fall back to environment-based config
|
|
13
|
+
if (process.env.SUPABASE_URL) {
|
|
14
|
+
return knexfile_1.default.supabase;
|
|
15
|
+
}
|
|
16
|
+
return knexfile_1.default[env] || knexfile_1.default.development;
|
|
17
|
+
};
|
|
18
|
+
// Create Knex instance
|
|
19
|
+
const db = (0, knex_1.default)(getConfig());
|
|
20
|
+
// Export the Knex instance
|
|
21
|
+
exports.default = db;
|
|
22
|
+
// Utility functions for migrations
|
|
23
|
+
const runMigrations = async () => {
|
|
24
|
+
try {
|
|
25
|
+
await db.migrate.latest();
|
|
26
|
+
console.log('✅ Database migrations completed successfully');
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error('❌ Migration failed:', error);
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.runMigrations = runMigrations;
|
|
34
|
+
const rollbackMigrations = async () => {
|
|
35
|
+
try {
|
|
36
|
+
await db.migrate.rollback();
|
|
37
|
+
console.log('✅ Database rollback completed successfully');
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('❌ Rollback failed:', error);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.rollbackMigrations = rollbackMigrations;
|
|
45
|
+
const getMigrationStatus = async () => {
|
|
46
|
+
try {
|
|
47
|
+
const status = await db.migrate.status();
|
|
48
|
+
return status;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error('❌ Failed to get migration status:', error);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.getMigrationStatus = getMigrationStatus;
|
|
56
|
+
// Graceful shutdown
|
|
57
|
+
const closeConnection = async () => {
|
|
58
|
+
try {
|
|
59
|
+
await db.destroy();
|
|
60
|
+
console.log('✅ Database connection closed');
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error('❌ Error closing database connection:', error);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.closeConnection = closeConnection;
|
|
67
|
+
//# sourceMappingURL=knex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knex.js","sourceRoot":"","sources":["../../../src/config/knex.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAkC;AAClC,8DAAoC;AAEpC,yDAAyD;AACzD,MAAM,SAAS,GAAG,GAAgB,EAAE;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;IAElD,wFAAwF;IACxF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,kBAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO,kBAAM,CAAC,GAAG,CAAC,IAAI,kBAAM,CAAC,WAAW,CAAC;AAC3C,CAAC,CAAC;AAEF,uBAAuB;AACvB,MAAM,EAAE,GAAS,IAAA,cAAI,EAAC,SAAS,EAAE,CAAC,CAAC;AAEnC,2BAA2B;AAC3B,kBAAe,EAAE,CAAC;AAKlB,mCAAmC;AAC5B,MAAM,aAAa,GAAG,KAAK,IAAmB,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;AAEK,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B;AAEK,MAAM,kBAAkB,GAAG,KAAK,IAAqB,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B;AAEF,oBAAoB;AACb,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,eAAe,mBAO1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/config/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,QAAA,MAAM,MAAM,gBAuBV,CAAC;AAQH,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const winston_1 = __importDefault(require("winston"));
|
|
7
|
+
const logger = winston_1.default.createLogger({
|
|
8
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
9
|
+
format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()),
|
|
10
|
+
defaultMeta: { service: 'vezlo-server' },
|
|
11
|
+
transports: [
|
|
12
|
+
new winston_1.default.transports.Console({
|
|
13
|
+
format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple())
|
|
14
|
+
}),
|
|
15
|
+
new winston_1.default.transports.File({
|
|
16
|
+
filename: 'logs/error.log',
|
|
17
|
+
level: 'error'
|
|
18
|
+
}),
|
|
19
|
+
new winston_1.default.transports.File({
|
|
20
|
+
filename: 'logs/combined.log'
|
|
21
|
+
})
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
|
+
// Create logs directory if it doesn't exist
|
|
25
|
+
const fs_1 = require("fs");
|
|
26
|
+
if (!(0, fs_1.existsSync)('logs')) {
|
|
27
|
+
(0, fs_1.mkdirSync)('logs');
|
|
28
|
+
}
|
|
29
|
+
exports.default = logger;
|
|
30
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/config/logger.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAE9B,MAAM,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IACtC,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;IACD,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;IACxC,UAAU,EAAE;QACV,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,iBAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CACxB;SACF,CAAC;QACF,IAAI,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,OAAO;SACf,CAAC;QACF,IAAI,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,mBAAmB;SAC9B,CAAC;KACH;CACF,CAAC,CAAC;AAEH,4CAA4C;AAC5C,2BAA2C;AAC3C,IAAI,CAAC,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;IACxB,IAAA,cAAS,EAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import swaggerUi from 'swagger-ui-express';
|
|
2
|
+
export declare const specs: object;
|
|
3
|
+
export { swaggerUi };
|
|
4
|
+
export declare const swaggerUiOptions: {
|
|
5
|
+
explorer: boolean;
|
|
6
|
+
customSiteTitle: string;
|
|
7
|
+
customCss: string;
|
|
8
|
+
swaggerOptions: {
|
|
9
|
+
docExpansion: string;
|
|
10
|
+
filter: boolean;
|
|
11
|
+
showRequestDuration: boolean;
|
|
12
|
+
defaultModelsExpandDepth: number;
|
|
13
|
+
defaultModelExpandDepth: number;
|
|
14
|
+
displayOperationId: boolean;
|
|
15
|
+
displayRequestDuration: boolean;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=swagger.d.ts.map
|
|
@@ -0,0 +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"}
|