@vezlo/assistant-server 2.2.2 → 2.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.
- package/README.md +21 -15
- package/database-schema.sql +178 -8
- package/dist/src/bootstrap/initializeServices.d.ts.map +1 -1
- package/dist/src/bootstrap/initializeServices.js +2 -0
- package/dist/src/bootstrap/initializeServices.js.map +1 -1
- package/dist/src/config/global.js +1 -1
- package/dist/src/config/global.js.map +1 -1
- package/dist/src/controllers/ChatController.d.ts +12 -1
- package/dist/src/controllers/ChatController.d.ts.map +1 -1
- package/dist/src/controllers/ChatController.js +274 -148
- package/dist/src/controllers/ChatController.js.map +1 -1
- package/dist/src/controllers/KnowledgeController.d.ts.map +1 -1
- package/dist/src/controllers/KnowledgeController.js +0 -4
- package/dist/src/controllers/KnowledgeController.js.map +1 -1
- package/dist/src/migrations/006_add_knowledge_chunks.d.ts +4 -0
- package/dist/src/migrations/006_add_knowledge_chunks.d.ts.map +1 -0
- package/dist/src/migrations/006_add_knowledge_chunks.js +245 -0
- package/dist/src/migrations/006_add_knowledge_chunks.js.map +1 -0
- package/dist/src/migrations/007_add_updated_at_to_feedback.d.ts +4 -0
- package/dist/src/migrations/007_add_updated_at_to_feedback.d.ts.map +1 -0
- package/dist/src/migrations/007_add_updated_at_to_feedback.js +22 -0
- package/dist/src/migrations/007_add_updated_at_to_feedback.js.map +1 -0
- package/dist/src/server.js +42 -8
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/AIService.d.ts +9 -0
- package/dist/src/services/AIService.d.ts.map +1 -1
- package/dist/src/services/AIService.js +111 -3
- package/dist/src/services/AIService.js.map +1 -1
- package/dist/src/services/IntentService.d.ts +2 -1
- package/dist/src/services/IntentService.d.ts.map +1 -1
- package/dist/src/services/IntentService.js +23 -4
- package/dist/src/services/IntentService.js.map +1 -1
- package/dist/src/services/KnowledgeBaseService.d.ts +20 -5
- package/dist/src/services/KnowledgeBaseService.d.ts.map +1 -1
- package/dist/src/services/KnowledgeBaseService.js +203 -137
- package/dist/src/services/KnowledgeBaseService.js.map +1 -1
- package/dist/src/storage/FeedbackRepository.d.ts +1 -0
- package/dist/src/storage/FeedbackRepository.d.ts.map +1 -1
- package/dist/src/storage/FeedbackRepository.js +26 -0
- package/dist/src/storage/FeedbackRepository.js.map +1 -1
- package/dist/src/storage/UnifiedStorage.d.ts +1 -0
- package/dist/src/storage/UnifiedStorage.d.ts.map +1 -1
- package/dist/src/storage/UnifiedStorage.js +3 -0
- package/dist/src/storage/UnifiedStorage.js.map +1 -1
- package/package.json +2 -2
- package/scripts/test-chunks-embeddings.js +190 -0
package/README.md
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
# Vezlo AI Assistant Server
|
|
2
2
|
|
|
3
|
-
🚀 **Production-ready Node.js/TypeScript API server** for the Vezlo AI Assistant platform - Complete backend APIs with Docker deployment and database migrations.
|
|
3
|
+
🚀 **Production-ready Node.js/TypeScript API server** for the Vezlo AI Assistant platform - Complete backend APIs with advanced RAG (chunk-based semantic search + adjacent retrieval), Docker deployment, and database migrations.
|
|
4
4
|
|
|
5
|
-
## 🚨 Breaking Change Notice
|
|
5
|
+
## 🚨 Breaking Change Notice
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### v2.3.0 - Enhanced RAG System (Latest)
|
|
8
|
+
**New chunk-based architecture with adjacent retrieval for better code understanding.**
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
10
|
+
- **Database Schema**: New `vezlo_knowledge_chunks` table and RPC functions
|
|
11
|
+
- **Embedding Model**: Upgraded to `text-embedding-3-large` (3072 dimensions)
|
|
12
|
+
- **Migration**: Automatic via `npm run migrate:latest` (migration 006)
|
|
13
|
+
- **Rollback**: Supported via `npm run migrate:rollback`
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
**Upgrade Steps:**
|
|
16
|
+
```bash
|
|
17
|
+
npm install @vezlo/assistant-server@latest
|
|
18
|
+
npm run migrate:latest
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### v2.0.0 - Multi-tenancy Support
|
|
22
|
+
**Introduced multi-tenancy with authentication. Existing data not auto-migrated.**
|
|
18
23
|
|
|
19
24
|
See [CHANGELOG.md](./CHANGELOG.md) for complete migration guide.
|
|
20
25
|
|
|
@@ -25,7 +30,7 @@ See [CHANGELOG.md](./CHANGELOG.md) for complete migration guide.
|
|
|
25
30
|
- **Backend APIs** - RESTful API endpoints for AI chat and knowledge management
|
|
26
31
|
- **Real-time Communication** - WebSocket support for live chat with Supabase Realtime broadcasting
|
|
27
32
|
- **Human Agent Handoff** - Agent join/leave workflows with realtime status updates and message synchronization
|
|
28
|
-
- **
|
|
33
|
+
- **Advanced RAG System** - Chunk-based semantic search with adjacent retrieval using OpenAI text-embedding-3-large (3072 dims) and pgvector
|
|
29
34
|
- **Conversation Management** - Persistent conversation history with agent support
|
|
30
35
|
- **Feedback System** - Message rating and improvement tracking
|
|
31
36
|
- **Database Migrations** - Knex.js migration system for schema management
|
|
@@ -308,7 +313,7 @@ RATE_LIMIT_MAX=100
|
|
|
308
313
|
ORGANIZATION_NAME=Vezlo
|
|
309
314
|
ASSISTANT_NAME=Vezlo Assistant
|
|
310
315
|
|
|
311
|
-
# OPTIONAL - Knowledge Base
|
|
316
|
+
# OPTIONAL - Knowledge Base (uses text-embedding-3-large, 3072 dims)
|
|
312
317
|
CHUNK_SIZE=1000
|
|
313
318
|
CHUNK_OVERLAP=200
|
|
314
319
|
```
|
|
@@ -420,7 +425,8 @@ npm run migrate:make add_users_table
|
|
|
420
425
|
- `POST /api/knowledge/search` - Search knowledge base
|
|
421
426
|
|
|
422
427
|
#### Feedback
|
|
423
|
-
- `POST /api/feedback` - Submit message feedback
|
|
428
|
+
- `POST /api/feedback` - Submit message feedback (Public API)
|
|
429
|
+
- `DELETE /api/feedback/:uuid` - Delete/undo message feedback (Public API)
|
|
424
430
|
|
|
425
431
|
### WebSocket Events
|
|
426
432
|
- `join-conversation` - Join conversation room
|
|
@@ -712,4 +718,4 @@ This project is dual-licensed:
|
|
|
712
718
|
|
|
713
719
|
---
|
|
714
720
|
|
|
715
|
-
**Status**: ✅ Production Ready | **Version**: 2.
|
|
721
|
+
**Status**: ✅ Production Ready | **Version**: 2.4.0 | **Node.js**: 20+ | **TypeScript**: 5+
|
package/database-schema.sql
CHANGED
|
@@ -42,6 +42,18 @@ INSERT INTO knex_migrations (name, batch, migration_time)
|
|
|
42
42
|
SELECT '004_add_vector_search_rpc.ts', 1, NOW()
|
|
43
43
|
WHERE NOT EXISTS (SELECT 1 FROM knex_migrations WHERE name = '004_add_vector_search_rpc.ts');
|
|
44
44
|
|
|
45
|
+
INSERT INTO knex_migrations (name, batch, migration_time)
|
|
46
|
+
SELECT '005_add_conversation_handoff_columns.ts', 1, NOW()
|
|
47
|
+
WHERE NOT EXISTS (SELECT 1 FROM knex_migrations WHERE name = '005_add_conversation_handoff_columns.ts');
|
|
48
|
+
|
|
49
|
+
INSERT INTO knex_migrations (name, batch, migration_time)
|
|
50
|
+
SELECT '006_add_knowledge_chunks.ts', 1, NOW()
|
|
51
|
+
WHERE NOT EXISTS (SELECT 1 FROM knex_migrations WHERE name = '006_add_knowledge_chunks.ts');
|
|
52
|
+
|
|
53
|
+
INSERT INTO knex_migrations (name, batch, migration_time)
|
|
54
|
+
SELECT '007_add_updated_at_to_feedback.ts', 1, NOW()
|
|
55
|
+
WHERE NOT EXISTS (SELECT 1 FROM knex_migrations WHERE name = '007_add_updated_at_to_feedback.ts');
|
|
56
|
+
|
|
45
57
|
-- Set migration lock to unlocked (0 = unlocked, 1 = locked)
|
|
46
58
|
INSERT INTO knex_migrations_lock (index, is_locked)
|
|
47
59
|
VALUES (1, 0)
|
|
@@ -139,7 +151,8 @@ CREATE TABLE IF NOT EXISTS vezlo_message_feedback (
|
|
|
139
151
|
category TEXT,
|
|
140
152
|
comment TEXT,
|
|
141
153
|
suggested_improvement TEXT,
|
|
142
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
154
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
155
|
+
updated_at TIMESTAMPTZ DEFAULT NOW() -- Added in migration 007
|
|
143
156
|
);
|
|
144
157
|
|
|
145
158
|
-- ============================================================================
|
|
@@ -159,13 +172,36 @@ CREATE TABLE IF NOT EXISTS vezlo_knowledge_items (
|
|
|
159
172
|
file_size BIGINT, -- File size in bytes
|
|
160
173
|
file_type TEXT, -- MIME type for files
|
|
161
174
|
metadata JSONB DEFAULT '{}', -- Flexible metadata storage
|
|
162
|
-
embedding vector(1536), -- OpenAI embeddings for search
|
|
175
|
+
embedding vector(1536), -- OpenAI embeddings for search (legacy, not used with chunks)
|
|
163
176
|
processed_at TIMESTAMPTZ, -- When embedding was generated
|
|
164
177
|
created_by BIGINT NOT NULL,
|
|
165
178
|
created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
|
|
166
179
|
updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
|
|
167
180
|
);
|
|
168
181
|
|
|
182
|
+
-- ============================================================================
|
|
183
|
+
-- KNOWLEDGE CHUNKS TABLE (Migration 006)
|
|
184
|
+
-- ============================================================================
|
|
185
|
+
-- This table stores text chunks from knowledge items with their embeddings.
|
|
186
|
+
-- Each document can have multiple chunks for better semantic search on large content.
|
|
187
|
+
-- Uses text-embedding-3-large model which produces 3072-dimensional vectors.
|
|
188
|
+
|
|
189
|
+
CREATE TABLE IF NOT EXISTS vezlo_knowledge_chunks (
|
|
190
|
+
id BIGSERIAL PRIMARY KEY,
|
|
191
|
+
uuid UUID DEFAULT gen_random_uuid() UNIQUE NOT NULL,
|
|
192
|
+
document_id BIGINT NOT NULL REFERENCES vezlo_knowledge_items(id) ON DELETE CASCADE,
|
|
193
|
+
chunk_text TEXT NOT NULL,
|
|
194
|
+
chunk_index INTEGER NOT NULL,
|
|
195
|
+
start_char INTEGER,
|
|
196
|
+
end_char INTEGER,
|
|
197
|
+
token_count INTEGER,
|
|
198
|
+
embedding vector(3072), -- OpenAI text-embedding-3-large embeddings
|
|
199
|
+
metadata JSONB DEFAULT '{}',
|
|
200
|
+
processed_at TIMESTAMPTZ,
|
|
201
|
+
created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,
|
|
202
|
+
updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
|
|
203
|
+
);
|
|
204
|
+
|
|
169
205
|
-- ============================================================================
|
|
170
206
|
-- ADD FOREIGN KEY CONSTRAINTS (Matching Migration 002)
|
|
171
207
|
-- These constraints use explicit names matching Knex migration naming convention
|
|
@@ -269,15 +305,38 @@ CREATE INDEX IF NOT EXISTS idx_vezlo_knowledge_type ON vezlo_knowledge_items(typ
|
|
|
269
305
|
CREATE INDEX IF NOT EXISTS idx_vezlo_knowledge_created_by ON vezlo_knowledge_items(created_by);
|
|
270
306
|
CREATE INDEX IF NOT EXISTS idx_vezlo_knowledge_created_at ON vezlo_knowledge_items(created_at DESC);
|
|
271
307
|
|
|
308
|
+
-- Knowledge chunks indexes (Migration 006)
|
|
309
|
+
CREATE INDEX IF NOT EXISTS idx_vezlo_chunks_uuid ON vezlo_knowledge_chunks(uuid);
|
|
310
|
+
CREATE INDEX IF NOT EXISTS idx_vezlo_chunks_document_id ON vezlo_knowledge_chunks(document_id);
|
|
311
|
+
CREATE INDEX IF NOT EXISTS idx_vezlo_chunks_chunk_index ON vezlo_knowledge_chunks(document_id, chunk_index);
|
|
312
|
+
|
|
272
313
|
-- Full-text search index for knowledge items
|
|
273
314
|
CREATE INDEX IF NOT EXISTS idx_vezlo_knowledge_search
|
|
274
315
|
ON vezlo_knowledge_items USING gin(to_tsvector('english', title || ' ' || COALESCE(description, '') || ' ' || COALESCE(content, '')));
|
|
275
316
|
|
|
276
|
-
-- Vector similarity index for semantic search (only for items with content)
|
|
317
|
+
-- Vector similarity index for semantic search (only for items with content - legacy)
|
|
277
318
|
CREATE INDEX IF NOT EXISTS idx_vezlo_knowledge_embedding
|
|
278
319
|
ON vezlo_knowledge_items USING ivfflat (embedding vector_cosine_ops)
|
|
279
320
|
WHERE embedding IS NOT NULL;
|
|
280
321
|
|
|
322
|
+
-- Vector similarity index for chunks (Migration 006)
|
|
323
|
+
-- HNSW index for 3072-dimensional vectors (text-embedding-3-large)
|
|
324
|
+
-- Note: May fail on older pgvector versions, vector search will use sequential scan
|
|
325
|
+
DO $$
|
|
326
|
+
BEGIN
|
|
327
|
+
BEGIN
|
|
328
|
+
CREATE INDEX IF NOT EXISTS idx_vezlo_chunks_embedding
|
|
329
|
+
ON vezlo_knowledge_chunks USING hnsw (embedding vector_cosine_ops)
|
|
330
|
+
WHERE embedding IS NOT NULL;
|
|
331
|
+
EXCEPTION WHEN OTHERS THEN
|
|
332
|
+
RAISE NOTICE 'HNSW index creation skipped: % (Vector search will use sequential scan)', SQLERRM;
|
|
333
|
+
END;
|
|
334
|
+
END $$;
|
|
335
|
+
|
|
336
|
+
-- GIN index for full-text keyword search on chunks (Migration 006)
|
|
337
|
+
CREATE INDEX IF NOT EXISTS idx_vezlo_chunks_chunk_text_gin
|
|
338
|
+
ON vezlo_knowledge_chunks USING gin (to_tsvector('english', chunk_text));
|
|
339
|
+
|
|
281
340
|
-- Sparse indexes for better performance
|
|
282
341
|
-- Note: idx_vezlo_knowledge_content was removed in migration 003
|
|
283
342
|
-- because btree indexes fail on large content (>2704 bytes).
|
|
@@ -299,6 +358,7 @@ ALTER TABLE vezlo_conversations ENABLE ROW LEVEL SECURITY;
|
|
|
299
358
|
ALTER TABLE vezlo_messages ENABLE ROW LEVEL SECURITY;
|
|
300
359
|
ALTER TABLE vezlo_message_feedback ENABLE ROW LEVEL SECURITY;
|
|
301
360
|
ALTER TABLE vezlo_knowledge_items ENABLE ROW LEVEL SECURITY;
|
|
361
|
+
ALTER TABLE vezlo_knowledge_chunks ENABLE ROW LEVEL SECURITY;
|
|
302
362
|
|
|
303
363
|
-- Policies for service role access (full access)
|
|
304
364
|
CREATE POLICY "Service role can access all users" ON vezlo_users
|
|
@@ -325,6 +385,9 @@ CREATE POLICY "Service role can access all feedback" ON vezlo_message_feedback
|
|
|
325
385
|
CREATE POLICY "Service role can access all knowledge items" ON vezlo_knowledge_items
|
|
326
386
|
FOR ALL USING (auth.role() = 'service_role');
|
|
327
387
|
|
|
388
|
+
CREATE POLICY "Service role can access all knowledge chunks" ON vezlo_knowledge_chunks
|
|
389
|
+
FOR ALL USING (auth.role() = 'service_role');
|
|
390
|
+
|
|
328
391
|
-- Example company-based policies (uncomment and modify as needed)
|
|
329
392
|
-- CREATE POLICY "Users can access their company conversations" ON vezlo_conversations
|
|
330
393
|
-- FOR ALL USING (company_id = auth.jwt() ->> 'company_id');
|
|
@@ -333,13 +396,120 @@ CREATE POLICY "Service role can access all knowledge items" ON vezlo_knowledge_i
|
|
|
333
396
|
-- FOR ALL USING (company_id = auth.jwt() ->> 'company_id');
|
|
334
397
|
|
|
335
398
|
-- ============================================================================
|
|
336
|
-
-- RPC
|
|
399
|
+
-- RPC FUNCTIONS FOR VECTOR SEARCH
|
|
337
400
|
-- ============================================================================
|
|
338
401
|
|
|
339
|
-
--
|
|
340
|
-
--
|
|
341
|
-
--
|
|
342
|
-
--
|
|
402
|
+
-- ============================================================================
|
|
403
|
+
-- INSERT RPC FUNCTION FOR CHUNKS (Migration 006)
|
|
404
|
+
-- ============================================================================
|
|
405
|
+
-- Ensures embeddings are stored as proper vector(3072) type
|
|
406
|
+
CREATE OR REPLACE FUNCTION vezlo_insert_knowledge_chunk(
|
|
407
|
+
p_document_id bigint,
|
|
408
|
+
p_chunk_text text,
|
|
409
|
+
p_chunk_index int,
|
|
410
|
+
p_start_char int,
|
|
411
|
+
p_end_char int,
|
|
412
|
+
p_token_count int,
|
|
413
|
+
p_embedding text,
|
|
414
|
+
p_processed_at timestamptz
|
|
415
|
+
)
|
|
416
|
+
RETURNS bigint
|
|
417
|
+
LANGUAGE plpgsql
|
|
418
|
+
AS $$
|
|
419
|
+
DECLARE
|
|
420
|
+
new_id bigint;
|
|
421
|
+
BEGIN
|
|
422
|
+
INSERT INTO vezlo_knowledge_chunks (
|
|
423
|
+
document_id,
|
|
424
|
+
chunk_text,
|
|
425
|
+
chunk_index,
|
|
426
|
+
start_char,
|
|
427
|
+
end_char,
|
|
428
|
+
token_count,
|
|
429
|
+
embedding,
|
|
430
|
+
processed_at,
|
|
431
|
+
metadata
|
|
432
|
+
) VALUES (
|
|
433
|
+
p_document_id,
|
|
434
|
+
p_chunk_text,
|
|
435
|
+
p_chunk_index,
|
|
436
|
+
p_start_char,
|
|
437
|
+
p_end_char,
|
|
438
|
+
p_token_count,
|
|
439
|
+
p_embedding::vector(3072),
|
|
440
|
+
p_processed_at,
|
|
441
|
+
'{}'::jsonb
|
|
442
|
+
)
|
|
443
|
+
RETURNING id INTO new_id;
|
|
444
|
+
|
|
445
|
+
RETURN new_id;
|
|
446
|
+
END;
|
|
447
|
+
$$;
|
|
448
|
+
|
|
449
|
+
-- ============================================================================
|
|
450
|
+
-- CHUNK-BASED VECTOR SEARCH RPC FUNCTION (Migration 006)
|
|
451
|
+
-- ============================================================================
|
|
452
|
+
-- Searches through chunks and joins back to parent documents for metadata.
|
|
453
|
+
-- Uses 3072-dimensional vectors for text-embedding-3-large.
|
|
454
|
+
CREATE OR REPLACE FUNCTION vezlo_match_knowledge_chunks(
|
|
455
|
+
query_embedding text,
|
|
456
|
+
match_threshold float DEFAULT 0.5,
|
|
457
|
+
match_count int DEFAULT 10,
|
|
458
|
+
filter_company_id bigint DEFAULT NULL
|
|
459
|
+
)
|
|
460
|
+
RETURNS TABLE (
|
|
461
|
+
chunk_id bigint,
|
|
462
|
+
chunk_uuid uuid,
|
|
463
|
+
document_id bigint,
|
|
464
|
+
document_uuid uuid,
|
|
465
|
+
chunk_text text,
|
|
466
|
+
chunk_index int,
|
|
467
|
+
start_char int,
|
|
468
|
+
end_char int,
|
|
469
|
+
token_count int,
|
|
470
|
+
document_title text,
|
|
471
|
+
document_description text,
|
|
472
|
+
document_type text,
|
|
473
|
+
document_metadata jsonb,
|
|
474
|
+
chunk_metadata jsonb,
|
|
475
|
+
company_id bigint,
|
|
476
|
+
similarity float
|
|
477
|
+
)
|
|
478
|
+
LANGUAGE plpgsql
|
|
479
|
+
AS $$
|
|
480
|
+
BEGIN
|
|
481
|
+
RETURN QUERY
|
|
482
|
+
SELECT
|
|
483
|
+
c.id AS chunk_id,
|
|
484
|
+
c.uuid AS chunk_uuid,
|
|
485
|
+
c.document_id,
|
|
486
|
+
ki.uuid AS document_uuid,
|
|
487
|
+
c.chunk_text,
|
|
488
|
+
c.chunk_index,
|
|
489
|
+
c.start_char,
|
|
490
|
+
c.end_char,
|
|
491
|
+
c.token_count,
|
|
492
|
+
ki.title AS document_title,
|
|
493
|
+
ki.description AS document_description,
|
|
494
|
+
ki.type AS document_type,
|
|
495
|
+
ki.metadata AS document_metadata,
|
|
496
|
+
c.metadata AS chunk_metadata,
|
|
497
|
+
ki.company_id,
|
|
498
|
+
1 - (c.embedding <=> query_embedding::vector(3072)) AS similarity
|
|
499
|
+
FROM vezlo_knowledge_chunks c
|
|
500
|
+
INNER JOIN vezlo_knowledge_items ki ON c.document_id = ki.id
|
|
501
|
+
WHERE c.embedding IS NOT NULL
|
|
502
|
+
AND (filter_company_id IS NULL OR ki.company_id = filter_company_id)
|
|
503
|
+
AND (1 - (c.embedding <=> query_embedding::vector(3072))) >= match_threshold
|
|
504
|
+
ORDER BY c.embedding <=> query_embedding::vector(3072)
|
|
505
|
+
LIMIT match_count;
|
|
506
|
+
END;
|
|
507
|
+
$$;
|
|
508
|
+
|
|
509
|
+
-- ============================================================================
|
|
510
|
+
-- LEGACY RPC FUNCTION (Pre-Migration 006)
|
|
511
|
+
-- ============================================================================
|
|
512
|
+
-- This function searches the parent table directly (legacy, not used with chunks)
|
|
343
513
|
CREATE OR REPLACE FUNCTION match_vezlo_knowledge(
|
|
344
514
|
query_embedding vector(1536),
|
|
345
515
|
match_threshold float DEFAULT 0.5,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeServices.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/initializeServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE;QACR,OAAO,EAAE,cAAc,CAAC;QACxB,aAAa,EAAE,oBAAoB,CAAC;QACpC,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,aAAa,CAAC;KAC9B,CAAC;IACF,WAAW,EAAE;QACX,cAAc,EAAE,cAAc,CAAC;QAC/B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,cAAc,EAAE,cAAc,CAAC;QAC/B,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,CAAC;IACF,MAAM,EAAE;QACN,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAKD,wBAAgB,oBAAoB,IAAI,MAAM,CAa7C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"initializeServices.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/initializeServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE;QACR,OAAO,EAAE,cAAc,CAAC;QACxB,aAAa,EAAE,oBAAoB,CAAC;QACpC,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,aAAa,CAAC;KAC9B,CAAC;IACF,WAAW,EAAE;QACX,cAAc,EAAE,cAAc,CAAC;QAC/B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,cAAc,EAAE,cAAc,CAAC;QAC/B,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,CAAC;IACF,MAAM,EAAE;QACN,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAKD,wBAAgB,oBAAoB,IAAI,MAAM,CAa7C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,uBAAuB,CA0G3F"}
|
|
@@ -42,6 +42,7 @@ function initializeCoreServices(options) {
|
|
|
42
42
|
supabase,
|
|
43
43
|
tableName: knowledgeTableName
|
|
44
44
|
});
|
|
45
|
+
// Initialize V2 service for adjacent chunk retrieval
|
|
45
46
|
// Read AI configuration from environment
|
|
46
47
|
// Use AI_MODEL for all OpenAI calls (intent classification + response generation)
|
|
47
48
|
const aiModel = process.env.AI_MODEL || 'gpt-4o-mini';
|
|
@@ -62,6 +63,7 @@ function initializeCoreServices(options) {
|
|
|
62
63
|
maxTokens: aiMaxTokens,
|
|
63
64
|
knowledgeBaseService: knowledgeBase
|
|
64
65
|
});
|
|
66
|
+
// Set V2 service for adjacent chunk retrieval
|
|
65
67
|
const chatManager = new ChatManager_1.ChatManager({
|
|
66
68
|
aiService,
|
|
67
69
|
storage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeServices.js","sourceRoot":"","sources":["../../../src/bootstrap/initializeServices.ts"],"names":[],"mappings":";;;;;AA4CA,oDAaC;AAED,
|
|
1
|
+
{"version":3,"file":"initializeServices.js","sourceRoot":"","sources":["../../../src/bootstrap/initializeServices.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ exports.defaultConfig = {
|
|
|
30
30
|
api: {
|
|
31
31
|
prefix: '/api',
|
|
32
32
|
version: 'v1',
|
|
33
|
-
timeout:
|
|
33
|
+
timeout: 60000, // 60 seconds (matches Vercel Pro plan limit)
|
|
34
34
|
rateLimiting: {
|
|
35
35
|
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW || '900000'), // Default 15 minutes
|
|
36
36
|
maxRequests: parseInt(process.env.RATE_LIMIT_MAX || '100') // per window
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA2KH,wCAeC;AAxLD,mCAAgD;AAEhD,mCAAmC;AACnC,IAAA,eAAY,GAAE,CAAC;AA2Df,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;SACtD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,wBAAwB;AACX,QAAA,aAAa,GAAiB;IACzC,GAAG,EAAE;QACH,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,qHAAqH;QAClI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;QAC1C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;KACnD;IACD,GAAG,EAAE;QACH,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/config/global.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,9 +27,20 @@ export declare class ChatController {
|
|
|
27
27
|
sendAgentMessage(req: AuthenticatedRequest, res: Response): Promise<void>;
|
|
28
28
|
getUserConversations(req: AuthenticatedRequest, res: Response): Promise<void>;
|
|
29
29
|
deleteConversation(req: Request, res: Response): Promise<void>;
|
|
30
|
-
submitFeedback(req: AuthenticatedRequest, res: Response): Promise<void>;
|
|
30
|
+
submitFeedback(req: Request | AuthenticatedRequest, res: Response): Promise<void>;
|
|
31
|
+
deleteFeedback(req: Request | AuthenticatedRequest, res: Response): Promise<void>;
|
|
31
32
|
private classifyIntent;
|
|
33
|
+
/**
|
|
34
|
+
* Handle intent classification result
|
|
35
|
+
* Returns response content if non-knowledge intent, null if knowledge intent
|
|
36
|
+
*/
|
|
32
37
|
private handleIntentResult;
|
|
38
|
+
/**
|
|
39
|
+
* Stream text content word by word to simulate streaming
|
|
40
|
+
* This ensures consistent SSE format for all responses
|
|
41
|
+
*/
|
|
42
|
+
private streamTextContent;
|
|
43
|
+
private getFallbackResponse;
|
|
33
44
|
private respondWithAssistantMessage;
|
|
34
45
|
private saveAssistantMessage;
|
|
35
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatController.d.ts","sourceRoot":"","sources":["../../../src/controllers/ChatController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAA8B,MAAM,2BAA2B,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAG5C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAC;QAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;KAAO;IAY1G,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4I3E,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF7D,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatController.d.ts","sourceRoot":"","sources":["../../../src/controllers/ChatController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAA8B,MAAM,2BAA2B,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAG5C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAC;QAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;KAAO;IAY1G,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4I3E,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF7D,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsPzE,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDxE,uBAAuB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DhF,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuGzE,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAoG1E,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmGzE,oBAAoB,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D7E,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9D,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDjF,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAkCzE,cAAc;IAmB5B;;;OAGG;YACW,kBAAkB;IAwBhC;;;OAGG;YACW,iBAAiB;IA2B/B,OAAO,CAAC,mBAAmB;YAeb,2BAA2B;YA4B3B,oBAAoB;CA4EnC"}
|