@vezlo/assistant-server 2.10.0 โ†’ 2.11.1

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 (43) hide show
  1. package/README.md +2 -1
  2. package/database-schema.sql +48 -0
  3. package/dist/src/bootstrap/initializeServices.d.ts +5 -0
  4. package/dist/src/bootstrap/initializeServices.d.ts.map +1 -1
  5. package/dist/src/bootstrap/initializeServices.js +18 -3
  6. package/dist/src/bootstrap/initializeServices.js.map +1 -1
  7. package/dist/src/controllers/ChatController.d.ts +3 -0
  8. package/dist/src/controllers/ChatController.d.ts.map +1 -1
  9. package/dist/src/controllers/ChatController.js +75 -15
  10. package/dist/src/controllers/ChatController.js.map +1 -1
  11. package/dist/src/controllers/DatabaseToolConfigController.d.ts +81 -0
  12. package/dist/src/controllers/DatabaseToolConfigController.d.ts.map +1 -0
  13. package/dist/src/controllers/DatabaseToolConfigController.js +573 -0
  14. package/dist/src/controllers/DatabaseToolConfigController.js.map +1 -0
  15. package/dist/src/controllers/KnowledgeController.js +4 -4
  16. package/dist/src/controllers/KnowledgeController.js.map +1 -1
  17. package/dist/src/migrations/011_create_database_tool_configs.d.ts +4 -0
  18. package/dist/src/migrations/011_create_database_tool_configs.d.ts.map +1 -0
  19. package/dist/src/migrations/011_create_database_tool_configs.js +51 -0
  20. package/dist/src/migrations/011_create_database_tool_configs.js.map +1 -0
  21. package/dist/src/server.js +399 -0
  22. package/dist/src/server.js.map +1 -1
  23. package/dist/src/services/AIService.d.ts +3 -0
  24. package/dist/src/services/AIService.d.ts.map +1 -1
  25. package/dist/src/services/AIService.js +5 -0
  26. package/dist/src/services/AIService.js.map +1 -1
  27. package/dist/src/services/DatabaseToolConfigService.d.ts +135 -0
  28. package/dist/src/services/DatabaseToolConfigService.d.ts.map +1 -0
  29. package/dist/src/services/DatabaseToolConfigService.js +451 -0
  30. package/dist/src/services/DatabaseToolConfigService.js.map +1 -0
  31. package/dist/src/services/DatabaseToolService.d.ts +75 -0
  32. package/dist/src/services/DatabaseToolService.d.ts.map +1 -0
  33. package/dist/src/services/DatabaseToolService.js +299 -0
  34. package/dist/src/services/DatabaseToolService.js.map +1 -0
  35. package/dist/src/services/IntentService.d.ts +10 -1
  36. package/dist/src/services/IntentService.d.ts.map +1 -1
  37. package/dist/src/services/IntentService.js +34 -5
  38. package/dist/src/services/IntentService.js.map +1 -1
  39. package/dist/src/services/ResponseGenerationService.d.ts +5 -3
  40. package/dist/src/services/ResponseGenerationService.d.ts.map +1 -1
  41. package/dist/src/services/ResponseGenerationService.js +29 -4
  42. package/dist/src/services/ResponseGenerationService.js.map +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ /**
3
+ * DatabaseToolService - Dynamic External Database Integration
4
+ *
5
+ * This service enables tool-based queries to external databases (e.g., Supabase)
6
+ * Dynamically loads tool configurations from database and executes queries
7
+ *
8
+ * NOTE: This is a separate experimental feature for direct database integration
9
+ * Can be easily removed without affecting core functionality
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DatabaseToolService = void 0;
16
+ const supabase_js_1 = require("@supabase/supabase-js");
17
+ const logger_1 = __importDefault(require("../config/logger"));
18
+ class DatabaseToolService {
19
+ constructor(mainSupabase, configService) {
20
+ this.tableSchemas = new Map();
21
+ // Cache for external database clients per company
22
+ this.clientCache = new Map();
23
+ this.mainSupabase = mainSupabase;
24
+ this.configService = configService;
25
+ logger_1.default.info('๐Ÿ”Œ Dynamic Database Tool Service initialized');
26
+ }
27
+ /**
28
+ * Get or create external database client for a company
29
+ */
30
+ async getExternalClient(companyId) {
31
+ // Check cache
32
+ if (this.clientCache.has(companyId)) {
33
+ return this.clientCache.get(companyId);
34
+ }
35
+ // Fetch credentials
36
+ const credentials = await this.configService.getDecryptedCredentials(companyId);
37
+ if (!credentials) {
38
+ return null;
39
+ }
40
+ // Create client
41
+ try {
42
+ const client = (0, supabase_js_1.createClient)(credentials.url, credentials.key);
43
+ this.clientCache.set(companyId, client);
44
+ logger_1.default.info(`โœ… Created external database client for company ${companyId}`);
45
+ return client;
46
+ }
47
+ catch (error) {
48
+ logger_1.default.error(`Failed to create external client for company ${companyId}:`, error);
49
+ return null;
50
+ }
51
+ }
52
+ /**
53
+ * Clear client cache (e.g., after config update)
54
+ */
55
+ clearClientCache(companyId) {
56
+ if (companyId) {
57
+ this.clientCache.delete(companyId);
58
+ logger_1.default.info(`๐Ÿงน Cleared client cache for company ${companyId}`);
59
+ }
60
+ else {
61
+ this.clientCache.clear();
62
+ logger_1.default.info('๐Ÿงน Cleared all client caches');
63
+ }
64
+ }
65
+ /**
66
+ * Get table schema by introspecting the database
67
+ */
68
+ async getTableSchema(client, tableName, companyId) {
69
+ const cacheKey = `${companyId}:${tableName}`;
70
+ // Check cache
71
+ if (this.tableSchemas.has(cacheKey)) {
72
+ return this.tableSchemas.get(cacheKey);
73
+ }
74
+ try {
75
+ // Fetch a single row to understand structure
76
+ const { data, error } = await client
77
+ .from(tableName)
78
+ .select('*')
79
+ .limit(1);
80
+ if (error) {
81
+ logger_1.default.warn(`Failed to introspect table ${tableName}:`, error);
82
+ return [];
83
+ }
84
+ const schema = data && data.length > 0 ? Object.keys(data[0]) : [];
85
+ this.tableSchemas.set(cacheKey, schema);
86
+ logger_1.default.info(`๐Ÿ“Š Introspected table ${tableName}: ${schema.length} columns`);
87
+ return schema;
88
+ }
89
+ catch (error) {
90
+ logger_1.default.error(`Error introspecting table ${tableName}:`, error);
91
+ return [];
92
+ }
93
+ }
94
+ /**
95
+ * Get available tools for a company for LLM function calling
96
+ */
97
+ async getToolsForCompany(companyId) {
98
+ try {
99
+ const tools = await this.configService.getEnabledToolsByCompany(companyId);
100
+ if (!tools || tools.length === 0) {
101
+ return [];
102
+ }
103
+ // Convert database tool configs to LLM tool definitions
104
+ return tools.map(tool => this.convertToToolDefinition(tool));
105
+ }
106
+ catch (error) {
107
+ logger_1.default.error(`Failed to get tools for company ${companyId}:`, error);
108
+ return [];
109
+ }
110
+ }
111
+ /**
112
+ * Convert database tool config to LLM tool definition
113
+ */
114
+ convertToToolDefinition(tool) {
115
+ const columns = typeof tool.columns === 'string' ? JSON.parse(tool.columns) : tool.columns;
116
+ // If user context filtering is enabled, ID becomes optional
117
+ const required = tool.requires_user_context ? [] : [tool.id_column];
118
+ return {
119
+ type: 'function',
120
+ function: {
121
+ name: tool.tool_name,
122
+ description: tool.tool_description || `Fetch data from ${tool.table_name} table`,
123
+ parameters: {
124
+ type: 'object',
125
+ properties: {
126
+ [tool.id_column]: {
127
+ type: tool.id_column_type === 'integer' ? 'integer' : 'string',
128
+ description: `The ${tool.id_column} to query (optional if user context is used)`
129
+ }
130
+ },
131
+ required
132
+ }
133
+ }
134
+ };
135
+ }
136
+ /**
137
+ * Execute a dynamic tool call
138
+ */
139
+ async executeTool(toolName, parameters, companyId, userContext) {
140
+ logger_1.default.info(`๐Ÿ”ง Executing dynamic tool: ${toolName} for company ${companyId} with params:`, parameters);
141
+ if (userContext) {
142
+ logger_1.default.info(`๐Ÿ”ง User context provided:`, userContext);
143
+ }
144
+ try {
145
+ // Get the tool configuration
146
+ const tools = await this.configService.getEnabledToolsByCompany(companyId);
147
+ const tool = tools.find(t => t.tool_name === toolName);
148
+ if (!tool) {
149
+ return {
150
+ success: false,
151
+ error: `Tool '${toolName}' not found or not enabled`
152
+ };
153
+ }
154
+ // Get external database client
155
+ const client = await this.getExternalClient(companyId);
156
+ if (!client) {
157
+ return {
158
+ success: false,
159
+ error: 'External database not configured for this company'
160
+ };
161
+ }
162
+ // Execute the query
163
+ return await this.executeToolQuery(client, tool, parameters, companyId, userContext);
164
+ }
165
+ catch (error) {
166
+ logger_1.default.error(`Error executing tool ${toolName}:`, error);
167
+ return {
168
+ success: false,
169
+ error: error.message || 'Tool execution failed'
170
+ };
171
+ }
172
+ }
173
+ /**
174
+ * Execute a query for a specific tool
175
+ */
176
+ async executeToolQuery(client, tool, parameters, companyId, userContext) {
177
+ try {
178
+ // Parse columns from tool config
179
+ const columns = typeof tool.columns === 'string' ? JSON.parse(tool.columns) : tool.columns;
180
+ // Introspect table to verify columns exist
181
+ const schema = await this.getTableSchema(client, tool.table_name, companyId);
182
+ if (!schema || schema.length === 0) {
183
+ return {
184
+ success: false,
185
+ error: `Unable to access table '${tool.table_name}'`
186
+ };
187
+ }
188
+ // Filter columns to only those that exist in the schema
189
+ const validColumns = columns.filter((col) => schema.includes(col));
190
+ if (validColumns.length === 0) {
191
+ return {
192
+ success: false,
193
+ error: 'No valid columns configured for this tool'
194
+ };
195
+ }
196
+ // Ensure ID column is included (if configured)
197
+ if (tool.id_column && !validColumns.includes(tool.id_column)) {
198
+ validColumns.unshift(tool.id_column);
199
+ }
200
+ logger_1.default.info(`๐Ÿ” Querying ${tool.table_name} with fields: ${validColumns.join(', ')}`);
201
+ // Build READ-ONLY query (only SELECT, no INSERT/UPDATE/DELETE)
202
+ let query = client
203
+ .from(tool.table_name)
204
+ .select(validColumns.join(','));
205
+ // Apply user context filter FIRST (if configured)
206
+ if (tool.requires_user_context && tool.user_filter_column && tool.user_context_key) {
207
+ if (!userContext || !userContext[tool.user_context_key]) {
208
+ logger_1.default.warn(`โš ๏ธ Tool requires user context but '${tool.user_context_key}' not provided`);
209
+ // Don't fail - just return empty result gracefully
210
+ return {
211
+ success: true,
212
+ data: null,
213
+ message: 'User context not available'
214
+ };
215
+ }
216
+ const filterValue = userContext[tool.user_context_key];
217
+ logger_1.default.info(`๐Ÿ” Applying user filter: ${tool.user_filter_column} = ${filterValue}`);
218
+ // Apply filter based on type
219
+ if (tool.user_filter_type === 'integer') {
220
+ const numericValue = parseInt(String(filterValue), 10);
221
+ if (!isNaN(numericValue)) {
222
+ query = query.eq(tool.user_filter_column, numericValue);
223
+ }
224
+ }
225
+ else {
226
+ query = query.eq(tool.user_filter_column, String(filterValue));
227
+ }
228
+ }
229
+ // Apply ID filter (if provided in parameters and valid)
230
+ if (tool.id_column && parameters[tool.id_column] !== undefined && parameters[tool.id_column] !== null) {
231
+ const idValue = parameters[tool.id_column];
232
+ // Skip if ID is 0 or empty (invalid values)
233
+ const isValidId = tool.id_column_type === 'integer'
234
+ ? (typeof idValue === 'number' && idValue > 0) || (typeof idValue === 'string' && parseInt(idValue) > 0)
235
+ : (typeof idValue === 'string' && idValue.trim() !== '');
236
+ if (isValidId) {
237
+ // Apply ID filter based on type
238
+ if (tool.id_column_type === 'integer') {
239
+ const numericId = parseInt(String(idValue), 10);
240
+ if (isNaN(numericId)) {
241
+ return {
242
+ success: false,
243
+ error: `Invalid ${tool.id_column} format - expected integer`
244
+ };
245
+ }
246
+ query = query.eq(tool.id_column, numericId);
247
+ }
248
+ else {
249
+ query = query.eq(tool.id_column, String(idValue));
250
+ }
251
+ }
252
+ }
253
+ // Execute query - use .single() if ID provided, otherwise return array
254
+ const hasIdFilter = tool.id_column && parameters[tool.id_column] !== undefined;
255
+ const { data, error } = hasIdFilter ? await query.single() : await query;
256
+ if (error) {
257
+ // If single() fails, try returning as array (might be multiple results)
258
+ if (error.code === 'PGRST116') {
259
+ return {
260
+ success: false,
261
+ error: 'No data found'
262
+ };
263
+ }
264
+ logger_1.default.error(`Database query error for ${tool.table_name}:`, error);
265
+ return {
266
+ success: false,
267
+ error: `Query failed: ${error.message}`
268
+ };
269
+ }
270
+ if (!data) {
271
+ return {
272
+ success: false,
273
+ error: 'No data found'
274
+ };
275
+ }
276
+ logger_1.default.info(`โœ… Successfully executed tool ${tool.tool_name}`);
277
+ return {
278
+ success: true,
279
+ data
280
+ };
281
+ }
282
+ catch (error) {
283
+ logger_1.default.error(`Error in executeToolQuery for ${tool.table_name}:`, error);
284
+ return {
285
+ success: false,
286
+ error: error.message || 'Unknown error occurred'
287
+ };
288
+ }
289
+ }
290
+ /**
291
+ * Clear schema cache (useful for testing)
292
+ */
293
+ clearSchemaCache() {
294
+ this.tableSchemas.clear();
295
+ logger_1.default.info('๐Ÿงน Schema cache cleared');
296
+ }
297
+ }
298
+ exports.DatabaseToolService = DatabaseToolService;
299
+ //# sourceMappingURL=DatabaseToolService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseToolService.js","sourceRoot":"","sources":["../../../src/services/DatabaseToolService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ChatMessage } from '../types';
2
- type IntentLabel = 'knowledge' | 'greeting' | 'acknowledgment' | 'personality' | 'clarification' | 'guardrail' | 'human_support_request' | 'human_support_email';
2
+ type IntentLabel = 'knowledge' | 'greeting' | 'acknowledgment' | 'personality' | 'clarification' | 'guardrail' | 'human_support_request' | 'human_support_email' | 'database_tool';
3
3
  interface IntentServiceConfig {
4
4
  openaiApiKey: string;
5
5
  model?: string;
@@ -12,10 +12,19 @@ export interface IntentClassificationResult {
12
12
  response?: string;
13
13
  needsGuardrail?: boolean;
14
14
  contactEmail?: string | null;
15
+ toolCall?: {
16
+ toolName: string;
17
+ parameters: Record<string, any>;
18
+ };
15
19
  }
16
20
  interface ClassificationInput {
17
21
  message: string;
18
22
  conversationHistory?: ChatMessage[];
23
+ availableTools?: Array<{
24
+ name: string;
25
+ description: string;
26
+ parameters: Record<string, any>;
27
+ }>;
19
28
  }
20
29
  export declare class IntentService {
21
30
  private openai;
@@ -1 +1 @@
1
- {"version":3,"file":"IntentService.d.ts","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,KAAK,WAAW,GACZ,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,WAAW,GACX,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC;CACrC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,mBAAmB;IASjC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAmC/E,OAAO,CAAC,qBAAqB;IAyE7B,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"IntentService.d.ts","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,KAAK,WAAW,GACZ,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,WAAW,GACX,uBAAuB,GACvB,qBAAqB,GACrB,eAAe,CAAC;AAEpB,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjC,CAAC;CACH;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjC,CAAC,CAAC;CACJ;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,mBAAmB;IASjC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAuC/E,OAAO,CAAC,qBAAqB;IAqG7B,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,aAAa;CAOtB"}
@@ -36,7 +36,11 @@ class IntentService {
36
36
  reason: parsed.reason,
37
37
  response: parsed.response || undefined,
38
38
  needsGuardrail: Boolean(parsed.needs_guardrail),
39
- contactEmail: parsed.contact_email || null
39
+ contactEmail: parsed.contact_email || null,
40
+ toolCall: parsed.tool_call ? {
41
+ toolName: parsed.tool_call.tool_name,
42
+ parameters: parsed.tool_call.parameters || {}
43
+ } : undefined
40
44
  };
41
45
  }
42
46
  catch (error) {
@@ -46,9 +50,30 @@ class IntentService {
46
50
  }
47
51
  buildClassifierPrompt(input) {
48
52
  const history = input.conversationHistory || [];
53
+ const availableTools = input.availableTools || [];
49
54
  // Use all provided history (already limited by CHAT_HISTORY_LENGTH in ChatController)
50
55
  // No need to trim further - respect the configured limit
51
- const intentList = '["knowledge","greeting","acknowledgment","personality","clarification","guardrail","human_support_request","human_support_email"]';
56
+ // Build dynamic tool section
57
+ let databaseToolSection = '';
58
+ if (availableTools.length > 0) {
59
+ const toolDescriptions = availableTools.map(tool => `- ${tool.name}: ${tool.description}. Parameters: ${JSON.stringify(tool.parameters)}`).join('\n');
60
+ databaseToolSection = `
61
+ - "database_tool": user asks for data from the connected database. This includes requests for personal data, records, lists, or any information stored in the database. Examples: "show my profile", "get my orders", "list my messages", "what are my companies", "my account details". When detected, provide tool_call in this format:
62
+ - tool_call: { "tool_name": "<tool_name>", "parameters": { "<param_name>": "<value>" } }
63
+
64
+ Available Database Tools:
65
+ ${toolDescriptions}
66
+
67
+ Tool Selection:
68
+ - Match user's request to the most appropriate tool based on tool name and description
69
+ - Use "database_tool" intent for ANY query requesting data from the database (user data, records, lists, etc.)
70
+ - Use "knowledge" intent only for questions about PLATFORM features, documentation, or how-to questions
71
+ - "database_tool" takes priority over "knowledge" for data retrieval queries
72
+ - Extract parameter values from user message or use empty object {} if no specific parameters provided`;
73
+ }
74
+ const intentList = availableTools.length > 0
75
+ ? '["knowledge","greeting","acknowledgment","personality","clarification","guardrail","human_support_request","human_support_email","database_tool"]'
76
+ : '["knowledge","greeting","acknowledgment","personality","clarification","guardrail","human_support_request","human_support_email"]';
52
77
  const systemMessage = {
53
78
  role: 'system',
54
79
  content: `You are an intent classifier for ${this.assistantName}, the AI assistant for ${this.organizationName}.
@@ -57,12 +82,13 @@ Your job is to analyse the latest user message (with short conversation history)
57
82
  Return a JSON object with:
58
83
  - intent: one of ${intentList}
59
84
  - reason: brief justification
60
- - response: a natural, contextual assistant response appropriate for this intent (ONLY for non-knowledge intents; leave empty for "knowledge")
85
+ - response: a natural, contextual assistant response appropriate for this intent (ONLY for non-knowledge/non-database_tool intents; leave empty for "knowledge" and "database_tool")
61
86
  - needs_guardrail: true if the user is requesting sensitive credentials or configuration
62
87
  - contact_email: email address provided by the user, if present, otherwise null
88
+ - tool_call: (only for "database_tool" intent) { "tool_name": string, "parameters": object }
63
89
 
64
90
  Definitions:
65
- - "knowledge": ANY question, query, or request about the platform, product, documentation, technical details, features, usage, troubleshooting, or any topic that could potentially be in the knowledge base. This is the DEFAULT for any substantive questionโ€”even if you're unsure if it exists in the knowledge base, classify it as "knowledge" so it can be searched. Also includes follow-up questions like "what about X?", "can you explain more?", or topic expansions.
91
+ - "knowledge": ANY question, query, or request about the platform, product, documentation, technical details, features, usage, troubleshooting, or any topic that could potentially be in the knowledge base. This is the DEFAULT for any substantive questionโ€”even if you're unsure if it exists in the knowledge base, classify it as "knowledge" so it can be searched. Also includes follow-up questions like "what about X?", "can you explain more?", or topic expansions.${databaseToolSection}
66
92
  - "greeting": ONLY simple greetings like "hi", "hello", "good morning", "hey" when they appear as the FIRST message in the conversation or as a clear conversation opener. If conversation history exists and contains assistant responses, this is likely NOT a greeting but an acknowledgment or knowledge query.
67
93
  - "acknowledgment": expressions of gratitude, confirmation, or acknowledgment like "thank you", "thanks", "got it", "perfect", "appreciate it", "okay", "alright". These show the user received the information and may or may not need further help.
68
94
  - "personality": questions about the assistant's identity, name, who they are, what they do, or introduction. Examples: "what's your name?", "who are you?", "tell me about yourself".
@@ -73,6 +99,7 @@ Definitions:
73
99
 
74
100
  Important:
75
101
  - DEFAULT to "knowledge" for any substantive questionโ€”let the knowledge base search determine if information exists.
102
+ - Use "database_tool" for user-specific data queries (my profile, my email, my orders).
76
103
  - Use "greeting" ONLY for conversation openers. If history shows prior exchanges, "hi" or "hello" is likely just acknowledgment or transition.
77
104
  - Use "acknowledgment" for gratitude expressionsโ€”these are NOT greetings.
78
105
  - Use "personality" ONLY for questions about the assistant's identity/name, NOT for general conversation.
@@ -84,6 +111,7 @@ Important:
84
111
 
85
112
  Response Generation Guidelines:
86
113
  - For "knowledge" intent: leave "response" empty (it will be handled by knowledge base search)
114
+ - For "database_tool" intent: leave "response" empty (tool will be executed and LLM will format result)
87
115
  - For all other intents: generate a natural, professional, contextually appropriate response
88
116
  - Consider conversation history when crafting the response (e.g., if user says "I changed my mind" after a support request, acknowledge the change)
89
117
  - For "greeting": welcome the user warmly
@@ -119,7 +147,8 @@ Response Generation Guidelines:
119
147
  'clarification',
120
148
  'guardrail',
121
149
  'human_support_request',
122
- 'human_support_email'
150
+ 'human_support_email',
151
+ 'database_tool'
123
152
  ];
124
153
  if (allowed.includes(intent)) {
125
154
  return intent;
@@ -1 +1 @@
1
- {"version":3,"file":"IntentService.js","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntentService.js","sourceRoot":"","sources":["../../../src/services/IntentService.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,8DAAsC;AA0CtC,MAAa,aAAa;IAMxB,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,YAAY;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,cAAc,CAAC;QAC5D,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,mBAAmB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAA0B;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAEjD,gBAAM,CAAC,IAAI,CAAC,yCAAyC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,MAAM;gBAChB,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,GAAG;gBACf,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aACzC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;YAE3D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEtC,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;gBACtC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC/C,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;gBAC1C,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC3B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;oBACpC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE;iBAC9C,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,KAAK,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAA0B;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;QAClD,sFAAsF;QACtF,yDAAyD;QAEzD,6BAA6B;QAC7B,IAAI,mBAAmB,GAAG,EAAE,CAAC;QAC7B,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACjD,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,mBAAmB,GAAG;;;;;EAK1B,gBAAgB;;;;;;;uGAOqF,CAAC;QACpG,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;YAC1C,CAAC,CAAC,mJAAmJ;YACrJ,CAAC,CAAC,mIAAmI,CAAC;QAExI,MAAM,aAAa,GAAuD;YACxE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,oCAAoC,IAAI,CAAC,aAAa,0BAA0B,IAAI,CAAC,gBAAgB;;;;mBAIjG,UAAU;;;;;;;;kdAQqb,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAiCjb;SAC/C,CAAC;QAEF,MAAM,QAAQ,GAAyD,CAAC,aAAa,CAAC,CAAC;QAEvF,oEAAoE;QACpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAqD,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9F,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;gBAC9E,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QACpC,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,cAAc,CAAC,MAAW;QAChC,MAAM,OAAO,GAAkB;YAC7B,WAAW;YACX,UAAU;YACV,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,WAAW;YACX,uBAAuB;YACvB,qBAAqB;YACrB,eAAe;SAChB,CAAC;QAEF,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,mDAAmD;QACnD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;CACF;AAvLD,sCAuLC"}
@@ -1,5 +1,6 @@
1
1
  import { IntentService, IntentClassificationResult } from './IntentService';
2
2
  import { AIService } from './AIService';
3
+ import { DatabaseToolService } from './DatabaseToolService';
3
4
  import { ChatMessage } from '../types';
4
5
  export interface KnowledgeSearchResult {
5
6
  knowledgeResults: string | null;
@@ -33,12 +34,13 @@ export interface GenerationResult {
33
34
  export declare class ResponseGenerationService {
34
35
  private intentService?;
35
36
  private aiService?;
37
+ private databaseToolService?;
36
38
  private chatHistoryLength;
37
- constructor(intentService: IntentService | undefined, aiService: AIService | undefined, chatHistoryLength: number);
39
+ constructor(intentService: IntentService | undefined, aiService: AIService | undefined, chatHistoryLength: number, databaseToolService?: DatabaseToolService);
38
40
  /**
39
- * Classify user intent
41
+ * Classify user intent with dynamic tool support
40
42
  */
41
- classifyIntent(message: string, history: ChatMessage[]): Promise<IntentClassificationResult>;
43
+ classifyIntent(message: string, history: ChatMessage[], companyId?: number): Promise<IntentClassificationResult>;
42
44
  /**
43
45
  * Handle intent classification result
44
46
  * Returns response content if non-knowledge intent, null if knowledge/tool intent
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseGenerationService.d.ts","sourceRoot":"","sources":["../../../src/services/ResponseGenerationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE;QACjB,mBAAmB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;CACJ;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,iBAAiB,CAAS;gBAGhC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,iBAAiB,EAAE,MAAM;IAO3B;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAkBlG;;;OAGG;IACH,kBAAkB,CAChB,MAAM,EAAE,0BAA0B,EAClC,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI;IAmBhB;;OAEG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,CAAC;IA6GjC;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,WAAW,EAAE,EACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B;QACD,mBAAmB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAUD;;OAEG;IACH,YAAY,IAAI,SAAS,GAAG,SAAS;IAIrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAa5B"}
1
+ {"version":3,"file":"ResponseGenerationService.d.ts","sourceRoot":"","sources":["../../../src/services/ResponseGenerationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE;QACjB,mBAAmB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;CACJ;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,iBAAiB,CAAS;gBAGhC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,iBAAiB,EAAE,MAAM,EACzB,mBAAmB,CAAC,EAAE,mBAAmB;IAQ3C;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAuCtH;;;OAGG;IACH,kBAAkB,CAChB,MAAM,EAAE,0BAA0B,EAClC,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI;IAyBhB;;OAEG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,CAAC;IA6GjC;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,WAAW,EAAE,EACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B;QACD,mBAAmB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAUD;;OAEG;IACH,YAAY,IAAI,SAAS,GAAG,SAAS;IAIrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAa5B"}
@@ -6,15 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ResponseGenerationService = void 0;
7
7
  const logger_1 = __importDefault(require("../config/logger"));
8
8
  class ResponseGenerationService {
9
- constructor(intentService, aiService, chatHistoryLength) {
9
+ constructor(intentService, aiService, chatHistoryLength, databaseToolService) {
10
10
  this.intentService = intentService;
11
11
  this.aiService = aiService;
12
+ this.databaseToolService = databaseToolService;
12
13
  this.chatHistoryLength = chatHistoryLength;
13
14
  }
14
15
  /**
15
- * Classify user intent
16
+ * Classify user intent with dynamic tool support
16
17
  */
17
- async classifyIntent(message, history) {
18
+ async classifyIntent(message, history, companyId) {
18
19
  if (!this.intentService) {
19
20
  return {
20
21
  intent: 'knowledge',
@@ -24,9 +25,28 @@ class ResponseGenerationService {
24
25
  }
25
26
  const resolvedHistory = Array.isArray(history) ? history : [];
26
27
  logger_1.default.info('๐Ÿงญ Classifying user intent...');
28
+ // Fetch available tools if companyId provided and databaseToolService exists
29
+ let availableTools = [];
30
+ if (companyId && this.databaseToolService) {
31
+ try {
32
+ const toolDefinitions = await this.databaseToolService.getToolsForCompany(companyId);
33
+ availableTools = toolDefinitions.map((tool) => ({
34
+ name: tool.function.name,
35
+ description: tool.function.description,
36
+ parameters: tool.function.parameters
37
+ }));
38
+ if (availableTools.length > 0) {
39
+ logger_1.default.info(`๐Ÿ”ง Loaded ${availableTools.length} dynamic tools for company ${companyId}`);
40
+ }
41
+ }
42
+ catch (error) {
43
+ logger_1.default.error('Failed to load dynamic tools:', error);
44
+ }
45
+ }
27
46
  return this.intentService.classify({
28
47
  message,
29
- conversationHistory: resolvedHistory
48
+ conversationHistory: resolvedHistory,
49
+ availableTools: availableTools.length > 0 ? availableTools : undefined
30
50
  });
31
51
  }
32
52
  /**
@@ -39,6 +59,11 @@ class ResponseGenerationService {
39
59
  return `I can help with documentation or implementation guidance, but I can't share credentials or confidential configuration. Please contact your system administrator or support for access.`;
40
60
  }
41
61
  logger_1.default.info(`๐Ÿงพ Intent result: ${result.intent}${result.needsGuardrail ? ' (guardrail triggered)' : ''}`);
62
+ // Database tool intent - return null (handled by ChatController)
63
+ if (result.intent === 'database_tool') {
64
+ logger_1.default.info('๐Ÿ”ง Database tool intent detected; will be handled separately.');
65
+ return null;
66
+ }
42
67
  // For non-knowledge intents, return the response content to be streamed
43
68
  if (result.intent !== 'knowledge') {
44
69
  const responseContent = result.response || this.getFallbackResponse(result.intent);
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseGenerationService.js","sourceRoot":"","sources":["../../../src/services/ResponseGenerationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResponseGenerationService.js","sourceRoot":"","sources":["../../../src/services/ResponseGenerationService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vezlo/assistant-server",
3
- "version": "2.10.0",
3
+ "version": "2.11.1",
4
4
  "description": "Production-ready AI Assistant Server with advanced RAG (chunk-based semantic search + adjacent retrieval), conversation management, real-time communication, and human agent handoff",
5
5
  "main": "dist/src/server.js",
6
6
  "types": "dist/src/server.d.ts",