@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.
Files changed (113) hide show
  1. package/Dockerfile +64 -0
  2. package/LICENSE +661 -0
  3. package/README.md +432 -0
  4. package/bin/vezlo-server.js +36 -0
  5. package/database-schema.sql +154 -0
  6. package/dist/knexfile.d.ts +6 -0
  7. package/dist/knexfile.d.ts.map +1 -0
  8. package/dist/knexfile.js +85 -0
  9. package/dist/knexfile.js.map +1 -0
  10. package/dist/src/config/database.d.ts +4 -0
  11. package/dist/src/config/database.d.ts.map +1 -0
  12. package/dist/src/config/database.js +30 -0
  13. package/dist/src/config/database.js.map +1 -0
  14. package/dist/src/config/global.d.ts +65 -0
  15. package/dist/src/config/global.d.ts.map +1 -0
  16. package/dist/src/config/global.js +113 -0
  17. package/dist/src/config/global.js.map +1 -0
  18. package/dist/src/config/knex.d.ts +9 -0
  19. package/dist/src/config/knex.d.ts.map +1 -0
  20. package/dist/src/config/knex.js +67 -0
  21. package/dist/src/config/knex.js.map +1 -0
  22. package/dist/src/config/logger.d.ts +4 -0
  23. package/dist/src/config/logger.d.ts.map +1 -0
  24. package/dist/src/config/logger.js +30 -0
  25. package/dist/src/config/logger.js.map +1 -0
  26. package/dist/src/config/swagger.d.ts +18 -0
  27. package/dist/src/config/swagger.d.ts.map +1 -0
  28. package/dist/src/config/swagger.js +230 -0
  29. package/dist/src/config/swagger.js.map +1 -0
  30. package/dist/src/controllers/ChatController.d.ts +16 -0
  31. package/dist/src/controllers/ChatController.d.ts.map +1 -0
  32. package/dist/src/controllers/ChatController.js +281 -0
  33. package/dist/src/controllers/ChatController.js.map +1 -0
  34. package/dist/src/controllers/KnowledgeController.d.ts +13 -0
  35. package/dist/src/controllers/KnowledgeController.d.ts.map +1 -0
  36. package/dist/src/controllers/KnowledgeController.js +210 -0
  37. package/dist/src/controllers/KnowledgeController.js.map +1 -0
  38. package/dist/src/middleware/errorHandler.d.ts +63 -0
  39. package/dist/src/middleware/errorHandler.d.ts.map +1 -0
  40. package/dist/src/middleware/errorHandler.js +226 -0
  41. package/dist/src/middleware/errorHandler.js.map +1 -0
  42. package/dist/src/migrations/001_initial_schema.d.ts +4 -0
  43. package/dist/src/migrations/001_initial_schema.d.ts.map +1 -0
  44. package/dist/src/migrations/001_initial_schema.js +144 -0
  45. package/dist/src/migrations/001_initial_schema.js.map +1 -0
  46. package/dist/src/schemas/ConversationSchemas.d.ts +132 -0
  47. package/dist/src/schemas/ConversationSchemas.d.ts.map +1 -0
  48. package/dist/src/schemas/ConversationSchemas.js +71 -0
  49. package/dist/src/schemas/ConversationSchemas.js.map +1 -0
  50. package/dist/src/schemas/FeedbackSchemas.d.ts +222 -0
  51. package/dist/src/schemas/FeedbackSchemas.d.ts.map +1 -0
  52. package/dist/src/schemas/FeedbackSchemas.js +116 -0
  53. package/dist/src/schemas/FeedbackSchemas.js.map +1 -0
  54. package/dist/src/schemas/KnowledgeSchemas.d.ts +266 -0
  55. package/dist/src/schemas/KnowledgeSchemas.d.ts.map +1 -0
  56. package/dist/src/schemas/KnowledgeSchemas.js +115 -0
  57. package/dist/src/schemas/KnowledgeSchemas.js.map +1 -0
  58. package/dist/src/schemas/MessageSchemas.d.ts +145 -0
  59. package/dist/src/schemas/MessageSchemas.d.ts.map +1 -0
  60. package/dist/src/schemas/MessageSchemas.js +79 -0
  61. package/dist/src/schemas/MessageSchemas.js.map +1 -0
  62. package/dist/src/schemas/index.d.ts +752 -0
  63. package/dist/src/schemas/index.d.ts.map +1 -0
  64. package/dist/src/schemas/index.js +31 -0
  65. package/dist/src/schemas/index.js.map +1 -0
  66. package/dist/src/server.d.ts +2 -0
  67. package/dist/src/server.d.ts.map +1 -0
  68. package/dist/src/server.js +609 -0
  69. package/dist/src/server.js.map +1 -0
  70. package/dist/src/services/AIService.d.ts +17 -0
  71. package/dist/src/services/AIService.d.ts.map +1 -0
  72. package/dist/src/services/AIService.js +174 -0
  73. package/dist/src/services/AIService.js.map +1 -0
  74. package/dist/src/services/ChatManager.d.ts +18 -0
  75. package/dist/src/services/ChatManager.d.ts.map +1 -0
  76. package/dist/src/services/ChatManager.js +174 -0
  77. package/dist/src/services/ChatManager.js.map +1 -0
  78. package/dist/src/services/KnowledgeBaseService.d.ts +72 -0
  79. package/dist/src/services/KnowledgeBaseService.d.ts.map +1 -0
  80. package/dist/src/services/KnowledgeBaseService.js +442 -0
  81. package/dist/src/services/KnowledgeBaseService.js.map +1 -0
  82. package/dist/src/storage/ConversationRepository.d.ts +15 -0
  83. package/dist/src/storage/ConversationRepository.d.ts.map +1 -0
  84. package/dist/src/storage/ConversationRepository.js +123 -0
  85. package/dist/src/storage/ConversationRepository.js.map +1 -0
  86. package/dist/src/storage/FeedbackRepository.d.ts +15 -0
  87. package/dist/src/storage/FeedbackRepository.d.ts.map +1 -0
  88. package/dist/src/storage/FeedbackRepository.js +141 -0
  89. package/dist/src/storage/FeedbackRepository.js.map +1 -0
  90. package/dist/src/storage/MessageRepository.d.ts +13 -0
  91. package/dist/src/storage/MessageRepository.d.ts.map +1 -0
  92. package/dist/src/storage/MessageRepository.js +165 -0
  93. package/dist/src/storage/MessageRepository.js.map +1 -0
  94. package/dist/src/storage/SupabaseStorage.d.ts +20 -0
  95. package/dist/src/storage/SupabaseStorage.d.ts.map +1 -0
  96. package/dist/src/storage/SupabaseStorage.js +347 -0
  97. package/dist/src/storage/SupabaseStorage.js.map +1 -0
  98. package/dist/src/storage/UnifiedStorage.d.ts +45 -0
  99. package/dist/src/storage/UnifiedStorage.d.ts.map +1 -0
  100. package/dist/src/storage/UnifiedStorage.js +94 -0
  101. package/dist/src/storage/UnifiedStorage.js.map +1 -0
  102. package/dist/src/storage/index.d.ts +11 -0
  103. package/dist/src/storage/index.d.ts.map +1 -0
  104. package/dist/src/storage/index.js +21 -0
  105. package/dist/src/storage/index.js.map +1 -0
  106. package/dist/src/types/index.d.ts +163 -0
  107. package/dist/src/types/index.d.ts.map +1 -0
  108. package/dist/src/types/index.js +3 -0
  109. package/dist/src/types/index.js.map +1 -0
  110. package/docker-compose.yml +32 -0
  111. package/env.example +46 -0
  112. package/knexfile.ts +86 -0
  113. package/package.json +92 -0
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.up = up;
4
+ exports.down = down;
5
+ async function up(knex) {
6
+ // Enable required extensions
7
+ await knex.raw('CREATE EXTENSION IF NOT EXISTS vector');
8
+ // ============================================================================
9
+ // CONVERSATIONS & MESSAGES SCHEMA (Modern 2-API Flow)
10
+ // ============================================================================
11
+ // Conversations table (renamed from chat_sessions)
12
+ await knex.schema.createTable('conversations', (table) => {
13
+ table.bigIncrements('id').primary();
14
+ table.uuid('uuid').defaultTo(knex.raw('gen_random_uuid()')).unique().notNullable();
15
+ table.bigInteger('company_id').comment('Multi-tenancy support');
16
+ table.bigInteger('creator_id').notNullable().comment('User who created conversation');
17
+ table.text('title').notNullable();
18
+ table.integer('message_count').defaultTo(0);
19
+ table.timestamps(true, true); // created_at, updated_at with timezone
20
+ table.timestamp('deleted_at', { useTz: true }).comment('Soft delete');
21
+ });
22
+ // Messages table (supports parent-child relationships for regeneration)
23
+ await knex.schema.createTable('messages', (table) => {
24
+ table.bigIncrements('id').primary();
25
+ table.uuid('uuid').defaultTo(knex.raw('gen_random_uuid()')).unique().notNullable();
26
+ table.bigInteger('conversation_id').notNullable().references('id').inTable('conversations').onDelete('CASCADE');
27
+ table.bigInteger('parent_message_id').references('id').inTable('messages').comment('For regeneration chains');
28
+ table.text('type').notNullable().comment('user, assistant, system');
29
+ table.text('content').notNullable();
30
+ table.text('status').defaultTo('completed').comment('generating, completed, stopped, failed');
31
+ table.jsonb('metadata').defaultTo('{}').comment('For tool_calls, tool_results, etc.');
32
+ table.timestamps(true, true); // created_at, updated_at with timezone
33
+ });
34
+ // Message feedback table
35
+ await knex.schema.createTable('message_feedback', (table) => {
36
+ table.bigIncrements('id').primary();
37
+ table.uuid('uuid').defaultTo(knex.raw('gen_random_uuid()')).unique().notNullable();
38
+ table.bigInteger('message_id').notNullable().references('id').inTable('messages').onDelete('CASCADE');
39
+ table.bigInteger('user_id').notNullable();
40
+ table.text('rating').notNullable().comment('positive, negative');
41
+ table.text('category');
42
+ table.text('comment');
43
+ table.text('suggested_improvement');
44
+ table.timestamp('created_at', { useTz: true }).defaultTo(knex.fn.now());
45
+ });
46
+ // ============================================================================
47
+ // KNOWLEDGE BASE SCHEMA (Unified Single Table)
48
+ // ============================================================================
49
+ // Knowledge items table (folders, documents, files, URLs - everything)
50
+ await knex.schema.createTable('knowledge_items', (table) => {
51
+ table.bigIncrements('id').primary();
52
+ table.uuid('uuid').defaultTo(knex.raw('gen_random_uuid()')).unique().notNullable();
53
+ table.bigInteger('parent_id').references('id').inTable('knowledge_items').comment('Hierarchical structure');
54
+ table.bigInteger('company_id').comment('Multi-tenancy support');
55
+ table.text('title').notNullable();
56
+ table.text('description');
57
+ table.text('type').notNullable().comment('folder, document, file, url, url_directory');
58
+ table.text('content').comment('For document type');
59
+ table.text('file_url').comment('For file/url types');
60
+ table.bigInteger('file_size').comment('File size in bytes');
61
+ table.text('file_type').comment('MIME type for files');
62
+ table.jsonb('metadata').defaultTo('{}').comment('Flexible metadata storage');
63
+ table.specificType('embedding', 'vector(1536)').comment('OpenAI embeddings for search');
64
+ table.timestamp('processed_at', { useTz: true }).comment('When embedding was generated');
65
+ table.bigInteger('created_by').notNullable();
66
+ table.timestamps(true, true); // created_at, updated_at with timezone
67
+ });
68
+ // ============================================================================
69
+ // INDEXES FOR PERFORMANCE
70
+ // ============================================================================
71
+ // Conversations indexes
72
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_conversations_uuid ON conversations(uuid)');
73
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_conversations_company_id ON conversations(company_id)');
74
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_conversations_creator_id ON conversations(creator_id)');
75
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_conversations_deleted ON conversations(deleted_at) WHERE deleted_at IS NULL');
76
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_conversations_updated_at ON conversations(updated_at DESC)');
77
+ // Messages indexes
78
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_messages_uuid ON messages(uuid)');
79
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_messages_conversation_id ON messages(conversation_id)');
80
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_messages_parent_id ON messages(parent_message_id)');
81
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_messages_type ON messages(type)');
82
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_messages_status ON messages(status)');
83
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_messages_created_at ON messages(created_at DESC)');
84
+ // Message feedback indexes
85
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_feedback_uuid ON message_feedback(uuid)');
86
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_feedback_message_id ON message_feedback(message_id)');
87
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_feedback_user_id ON message_feedback(user_id)');
88
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_feedback_rating ON message_feedback(rating)');
89
+ // Knowledge items indexes
90
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_uuid ON knowledge_items(uuid)');
91
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_company_id ON knowledge_items(company_id)');
92
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_parent_id ON knowledge_items(parent_id)');
93
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_type ON knowledge_items(type)');
94
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_created_by ON knowledge_items(created_by)');
95
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_created_at ON knowledge_items(created_at DESC)');
96
+ // Full-text search index for knowledge items
97
+ await knex.schema.raw(`
98
+ CREATE INDEX IF NOT EXISTS idx_knowledge_search
99
+ ON knowledge_items USING gin(to_tsvector('english', title || ' ' || COALESCE(description, '') || ' ' || COALESCE(content, '')))
100
+ `);
101
+ // Vector similarity index for semantic search (only for items with content)
102
+ await knex.schema.raw(`
103
+ CREATE INDEX IF NOT EXISTS idx_knowledge_embedding
104
+ ON knowledge_items USING ivfflat (embedding vector_cosine_ops)
105
+ WHERE embedding IS NOT NULL
106
+ `);
107
+ // Sparse indexes for better performance
108
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_content ON knowledge_items(content) WHERE content IS NOT NULL');
109
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_knowledge_file_url ON knowledge_items(file_url) WHERE file_url IS NOT NULL');
110
+ // ============================================================================
111
+ // ROW LEVEL SECURITY (Optional but Recommended)
112
+ // ============================================================================
113
+ // Enable RLS on all tables
114
+ await knex.schema.raw('ALTER TABLE conversations ENABLE ROW LEVEL SECURITY');
115
+ await knex.schema.raw('ALTER TABLE messages ENABLE ROW LEVEL SECURITY');
116
+ await knex.schema.raw('ALTER TABLE message_feedback ENABLE ROW LEVEL SECURITY');
117
+ await knex.schema.raw('ALTER TABLE knowledge_items ENABLE ROW LEVEL SECURITY');
118
+ // Policies for service role access (full access)
119
+ await knex.schema.raw(`
120
+ CREATE POLICY "Service role can access all conversations" ON conversations
121
+ FOR ALL USING (auth.role() = 'service_role')
122
+ `);
123
+ await knex.schema.raw(`
124
+ CREATE POLICY "Service role can access all messages" ON messages
125
+ FOR ALL USING (auth.role() = 'service_role')
126
+ `);
127
+ await knex.schema.raw(`
128
+ CREATE POLICY "Service role can access all feedback" ON message_feedback
129
+ FOR ALL USING (auth.role() = 'service_role')
130
+ `);
131
+ await knex.schema.raw(`
132
+ CREATE POLICY "Service role can access all knowledge items" ON knowledge_items
133
+ FOR ALL USING (auth.role() = 'service_role')
134
+ `);
135
+ }
136
+ async function down(knex) {
137
+ // Drop tables in reverse order due to foreign key constraints
138
+ await knex.schema.dropTableIfExists('message_feedback');
139
+ await knex.schema.dropTableIfExists('messages');
140
+ await knex.schema.dropTableIfExists('knowledge_items');
141
+ await knex.schema.dropTableIfExists('conversations');
142
+ // Note: We don't drop the vector extension as it might be used by other tables
143
+ }
144
+ //# sourceMappingURL=001_initial_schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"001_initial_schema.js","sourceRoot":"","sources":["../../../src/migrations/001_initial_schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Conversation API Schemas
3
+ * All request/response schemas for conversation-related endpoints
4
+ */
5
+ export declare const ConversationSchemas: {
6
+ CreateConversationRequest: {
7
+ type: string;
8
+ required: string[];
9
+ properties: {
10
+ title: {
11
+ type: string;
12
+ description: string;
13
+ default: string;
14
+ };
15
+ user_uuid: {
16
+ type: string;
17
+ description: string;
18
+ default: number;
19
+ };
20
+ company_uuid: {
21
+ type: string;
22
+ description: string;
23
+ default: number;
24
+ };
25
+ };
26
+ };
27
+ UpdateConversationRequest: {
28
+ type: string;
29
+ properties: {
30
+ title: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ };
35
+ };
36
+ ConversationResponse: {
37
+ type: string;
38
+ properties: {
39
+ uuid: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ title: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ user_uuid: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ company_uuid: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ message_count: {
56
+ type: string;
57
+ description: string;
58
+ };
59
+ created_at: {
60
+ type: string;
61
+ format: string;
62
+ };
63
+ updated_at: {
64
+ type: string;
65
+ format: string;
66
+ };
67
+ };
68
+ };
69
+ ConversationWithMessages: {
70
+ type: string;
71
+ properties: {
72
+ uuid: {
73
+ type: string;
74
+ description: string;
75
+ };
76
+ title: {
77
+ type: string;
78
+ description: string;
79
+ };
80
+ user_uuid: {
81
+ type: string;
82
+ description: string;
83
+ };
84
+ company_uuid: {
85
+ type: string;
86
+ description: string;
87
+ };
88
+ message_count: {
89
+ type: string;
90
+ description: string;
91
+ };
92
+ created_at: {
93
+ type: string;
94
+ format: string;
95
+ };
96
+ updated_at: {
97
+ type: string;
98
+ format: string;
99
+ };
100
+ messages: {
101
+ type: string;
102
+ items: {
103
+ $ref: string;
104
+ };
105
+ };
106
+ };
107
+ };
108
+ ConversationListResponse: {
109
+ type: string;
110
+ properties: {
111
+ conversations: {
112
+ type: string;
113
+ items: {
114
+ $ref: string;
115
+ };
116
+ };
117
+ total: {
118
+ type: string;
119
+ description: string;
120
+ };
121
+ limit: {
122
+ type: string;
123
+ description: string;
124
+ };
125
+ offset: {
126
+ type: string;
127
+ description: string;
128
+ };
129
+ };
130
+ };
131
+ };
132
+ //# sourceMappingURL=ConversationSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationSchemas.d.ts","sourceRoot":"","sources":["../../../src/schemas/ConversationSchemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkE/B,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Conversation API Schemas
4
+ * All request/response schemas for conversation-related endpoints
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ConversationSchemas = void 0;
8
+ exports.ConversationSchemas = {
9
+ // ============================================================================
10
+ // CONVERSATION REQUEST SCHEMAS
11
+ // ============================================================================
12
+ CreateConversationRequest: {
13
+ type: 'object',
14
+ required: ['user_uuid'],
15
+ properties: {
16
+ title: { type: 'string', description: 'Conversation title', default: 'New Conversation' },
17
+ user_uuid: { type: 'integer', description: 'User UUID who creates the conversation', default: 12345 },
18
+ company_uuid: { type: 'integer', description: 'Optional company UUID', default: 67890 }
19
+ }
20
+ },
21
+ UpdateConversationRequest: {
22
+ type: 'object',
23
+ properties: {
24
+ title: { type: 'string', description: 'Updated conversation title' }
25
+ }
26
+ },
27
+ // ============================================================================
28
+ // CONVERSATION RESPONSE SCHEMAS
29
+ // ============================================================================
30
+ ConversationResponse: {
31
+ type: 'object',
32
+ properties: {
33
+ uuid: { type: 'string', description: 'Conversation UUID' },
34
+ title: { type: 'string', description: 'Conversation title' },
35
+ user_uuid: { type: 'string', description: 'User UUID' },
36
+ company_uuid: { type: 'string', description: 'Company UUID' },
37
+ message_count: { type: 'integer', description: 'Number of messages' },
38
+ created_at: { type: 'string', format: 'date-time' },
39
+ updated_at: { type: 'string', format: 'date-time' }
40
+ }
41
+ },
42
+ ConversationWithMessages: {
43
+ type: 'object',
44
+ properties: {
45
+ uuid: { type: 'string', description: 'Conversation UUID' },
46
+ title: { type: 'string', description: 'Conversation title' },
47
+ user_uuid: { type: 'string', description: 'User UUID' },
48
+ company_uuid: { type: 'string', description: 'Company UUID' },
49
+ message_count: { type: 'integer', description: 'Number of messages' },
50
+ created_at: { type: 'string', format: 'date-time' },
51
+ updated_at: { type: 'string', format: 'date-time' },
52
+ messages: {
53
+ type: 'array',
54
+ items: { $ref: '#/components/schemas/MessageResponse' }
55
+ }
56
+ }
57
+ },
58
+ ConversationListResponse: {
59
+ type: 'object',
60
+ properties: {
61
+ conversations: {
62
+ type: 'array',
63
+ items: { $ref: '#/components/schemas/ConversationResponse' }
64
+ },
65
+ total: { type: 'integer', description: 'Total number of conversations' },
66
+ limit: { type: 'integer', description: 'Conversations per page' },
67
+ offset: { type: 'integer', description: 'Conversations skipped' }
68
+ }
69
+ }
70
+ };
71
+ //# sourceMappingURL=ConversationSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationSchemas.js","sourceRoot":"","sources":["../../../src/schemas/ConversationSchemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Feedback API Schemas
3
+ * All request/response schemas for feedback-related endpoints
4
+ */
5
+ export declare const FeedbackSchemas: {
6
+ FeedbackRequest: {
7
+ type: string;
8
+ required: string[];
9
+ properties: {
10
+ message_uuid: {
11
+ type: string;
12
+ description: string;
13
+ };
14
+ user_uuid: {
15
+ type: string;
16
+ description: string;
17
+ default: number;
18
+ };
19
+ rating: {
20
+ type: string;
21
+ enum: string[];
22
+ description: string;
23
+ };
24
+ category: {
25
+ type: string;
26
+ enum: string[];
27
+ description: string;
28
+ };
29
+ comment: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ suggested_improvement: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ };
38
+ };
39
+ UpdateFeedbackRequest: {
40
+ type: string;
41
+ properties: {
42
+ rating: {
43
+ type: string;
44
+ enum: string[];
45
+ description: string;
46
+ };
47
+ category: {
48
+ type: string;
49
+ enum: string[];
50
+ description: string;
51
+ };
52
+ comment: {
53
+ type: string;
54
+ description: string;
55
+ };
56
+ suggested_improvement: {
57
+ type: string;
58
+ description: string;
59
+ };
60
+ };
61
+ };
62
+ FeedbackResponse: {
63
+ type: string;
64
+ properties: {
65
+ success: {
66
+ type: string;
67
+ };
68
+ feedback: {
69
+ type: string;
70
+ properties: {
71
+ uuid: {
72
+ type: string;
73
+ description: string;
74
+ };
75
+ message_uuid: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ user_uuid: {
80
+ type: string;
81
+ description: string;
82
+ };
83
+ rating: {
84
+ type: string;
85
+ description: string;
86
+ };
87
+ category: {
88
+ type: string;
89
+ description: string;
90
+ };
91
+ comment: {
92
+ type: string;
93
+ description: string;
94
+ };
95
+ suggested_improvement: {
96
+ type: string;
97
+ description: string;
98
+ };
99
+ created_at: {
100
+ type: string;
101
+ format: string;
102
+ };
103
+ updated_at: {
104
+ type: string;
105
+ format: string;
106
+ };
107
+ };
108
+ };
109
+ };
110
+ };
111
+ FeedbackListResponse: {
112
+ type: string;
113
+ properties: {
114
+ feedback: {
115
+ type: string;
116
+ items: {
117
+ type: string;
118
+ properties: {
119
+ uuid: {
120
+ type: string;
121
+ description: string;
122
+ };
123
+ message_uuid: {
124
+ type: string;
125
+ description: string;
126
+ };
127
+ user_uuid: {
128
+ type: string;
129
+ description: string;
130
+ };
131
+ rating: {
132
+ type: string;
133
+ description: string;
134
+ };
135
+ category: {
136
+ type: string;
137
+ description: string;
138
+ };
139
+ comment: {
140
+ type: string;
141
+ description: string;
142
+ };
143
+ suggested_improvement: {
144
+ type: string;
145
+ description: string;
146
+ };
147
+ created_at: {
148
+ type: string;
149
+ format: string;
150
+ };
151
+ updated_at: {
152
+ type: string;
153
+ format: string;
154
+ };
155
+ };
156
+ };
157
+ };
158
+ total: {
159
+ type: string;
160
+ description: string;
161
+ };
162
+ limit: {
163
+ type: string;
164
+ description: string;
165
+ };
166
+ offset: {
167
+ type: string;
168
+ description: string;
169
+ };
170
+ };
171
+ };
172
+ FeedbackStatsResponse: {
173
+ type: string;
174
+ properties: {
175
+ total_feedback: {
176
+ type: string;
177
+ description: string;
178
+ };
179
+ positive_count: {
180
+ type: string;
181
+ description: string;
182
+ };
183
+ negative_count: {
184
+ type: string;
185
+ description: string;
186
+ };
187
+ positive_percentage: {
188
+ type: string;
189
+ description: string;
190
+ };
191
+ categories: {
192
+ type: string;
193
+ description: string;
194
+ additionalProperties: {
195
+ type: string;
196
+ };
197
+ };
198
+ recent_feedback: {
199
+ type: string;
200
+ items: {
201
+ type: string;
202
+ properties: {
203
+ uuid: {
204
+ type: string;
205
+ };
206
+ rating: {
207
+ type: string;
208
+ };
209
+ category: {
210
+ type: string;
211
+ };
212
+ created_at: {
213
+ type: string;
214
+ format: string;
215
+ };
216
+ };
217
+ };
218
+ };
219
+ };
220
+ };
221
+ };
222
+ //# sourceMappingURL=FeedbackSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackSchemas.d.ts","sourceRoot":"","sources":["../../../src/schemas/FeedbackSchemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+G3B,CAAC"}