@multiplayer-app/ai-agent-node 0.1.0-beta.7 → 0.1.0-beta.70
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 +2 -2
- package/dist/cjs/config.cjs +87 -45
- package/dist/cjs/config.cjs.map +1 -1
- package/dist/cjs/config.d.ts +60 -29
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/helpers/AIHelper.cjs +127 -65
- package/dist/cjs/helpers/AIHelper.cjs.map +1 -1
- package/dist/cjs/helpers/AIHelper.d.ts +22 -16
- package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
- package/dist/cjs/helpers/AIHelper.test.cjs +22 -15
- package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -1
- package/dist/cjs/helpers/ConfigHelper.cjs +15 -6
- package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -1
- package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -1
- package/dist/cjs/helpers/FileHelper.cjs +131 -151
- package/dist/cjs/helpers/FileHelper.cjs.map +1 -1
- package/dist/cjs/helpers/FileHelper.d.ts +19 -25
- package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
- package/dist/cjs/helpers/index.cjs +0 -1
- package/dist/cjs/helpers/index.cjs.map +1 -1
- package/dist/cjs/helpers/index.d.ts +0 -1
- package/dist/cjs/helpers/index.d.ts.map +1 -1
- package/dist/cjs/index.cjs +120 -26
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.ts +43 -10
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/libs/s3/index.cjs +3 -39
- package/dist/cjs/libs/s3/index.cjs.map +1 -1
- package/dist/cjs/libs/s3/index.d.ts +1 -2
- package/dist/cjs/libs/s3/index.d.ts.map +1 -1
- package/dist/cjs/libs/s3/s3.lib.cjs +173 -186
- package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -1
- package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
- package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
- package/dist/cjs/processors/ActivityProcessor.cjs +39 -0
- package/dist/cjs/processors/ActivityProcessor.cjs.map +1 -0
- package/dist/cjs/processors/ActivityProcessor.d.ts +32 -0
- package/dist/cjs/processors/ActivityProcessor.d.ts.map +1 -0
- package/dist/cjs/processors/ActivityProcessor.test.cjs +84 -0
- package/dist/cjs/processors/ActivityProcessor.test.cjs.map +1 -0
- package/dist/cjs/processors/ActivityProcessor.test.d.ts +2 -0
- package/dist/cjs/processors/ActivityProcessor.test.d.ts.map +1 -0
- package/dist/cjs/processors/AgentProcessor.cjs +46 -0
- package/dist/cjs/processors/AgentProcessor.cjs.map +1 -0
- package/dist/cjs/processors/AgentProcessor.d.ts +25 -0
- package/dist/cjs/processors/AgentProcessor.d.ts.map +1 -0
- package/dist/cjs/processors/AgentProcessor.test.cjs +103 -0
- package/dist/cjs/processors/AgentProcessor.test.cjs.map +1 -0
- package/dist/cjs/processors/AgentProcessor.test.d.ts +2 -0
- package/dist/cjs/processors/AgentProcessor.test.d.ts.map +1 -0
- package/dist/cjs/processors/ChatProcessor.cjs +348 -126
- package/dist/cjs/processors/ChatProcessor.cjs.map +1 -1
- package/dist/cjs/processors/ChatProcessor.d.ts +70 -11
- package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
- package/dist/cjs/processors/ChatProcessor.test.cjs +762 -0
- package/dist/cjs/processors/ChatProcessor.test.cjs.map +1 -0
- package/dist/cjs/processors/ChatProcessor.test.d.ts +2 -0
- package/dist/cjs/processors/ChatProcessor.test.d.ts.map +1 -0
- package/dist/cjs/processors/index.cjs +2 -0
- package/dist/cjs/processors/index.cjs.map +1 -1
- package/dist/cjs/processors/index.d.ts +2 -0
- package/dist/cjs/processors/index.d.ts.map +1 -1
- package/dist/cjs/services/AIService.cjs +87 -21
- package/dist/cjs/services/AIService.cjs.map +1 -1
- package/dist/cjs/services/AIService.d.ts +19 -7
- package/dist/cjs/services/AIService.d.ts.map +1 -1
- package/dist/cjs/services/InternalEventsHandler.cjs +3 -3
- package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -1
- package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
- package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
- package/dist/cjs/services/ModelFetcher.cjs +2 -8
- package/dist/cjs/services/ModelFetcher.cjs.map +1 -1
- package/dist/cjs/services/ModelFetcher.d.ts +2 -7
- package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
- package/dist/cjs/services/RedisService.cjs +20 -16
- package/dist/cjs/services/RedisService.cjs.map +1 -1
- package/dist/cjs/services/RedisService.d.ts +5 -2
- package/dist/cjs/services/RedisService.d.ts.map +1 -1
- package/dist/cjs/services/SocketService.cjs +7 -7
- package/dist/cjs/services/SocketService.cjs.map +1 -1
- package/dist/cjs/services/SocketService.d.ts +9 -6
- package/dist/cjs/services/SocketService.d.ts.map +1 -1
- package/dist/cjs/store/AgentStore.cjs +3 -4
- package/dist/cjs/store/AgentStore.cjs.map +1 -1
- package/dist/cjs/store/AgentStore.d.ts +2 -1
- package/dist/cjs/store/AgentStore.d.ts.map +1 -1
- package/dist/cjs/store/ConfigStore.cjs +7 -3
- package/dist/cjs/store/ConfigStore.cjs.map +1 -1
- package/dist/cjs/store/ConfigStore.d.ts +1 -0
- package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
- package/dist/cjs/tools/generateChartTool.d.ts +2 -2
- package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/config.d.ts +60 -29
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +87 -43
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/helpers/AIHelper.d.ts +22 -16
- package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
- package/dist/esm/helpers/AIHelper.js +134 -70
- package/dist/esm/helpers/AIHelper.js.map +1 -1
- package/dist/esm/helpers/AIHelper.test.js +22 -15
- package/dist/esm/helpers/AIHelper.test.js.map +1 -1
- package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -1
- package/dist/esm/helpers/ConfigHelper.js +15 -6
- package/dist/esm/helpers/ConfigHelper.js.map +1 -1
- package/dist/esm/helpers/FileHelper.d.ts +19 -25
- package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
- package/dist/esm/helpers/FileHelper.js +131 -146
- package/dist/esm/helpers/FileHelper.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +0 -1
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +0 -1
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/index.d.ts +43 -10
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +92 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/libs/s3/index.d.ts +1 -2
- package/dist/esm/libs/s3/index.d.ts.map +1 -1
- package/dist/esm/libs/s3/index.js +1 -2
- package/dist/esm/libs/s3/index.js.map +1 -1
- package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
- package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
- package/dist/esm/libs/s3/s3.lib.js +177 -172
- package/dist/esm/libs/s3/s3.lib.js.map +1 -1
- package/dist/esm/processors/ActivityProcessor.d.ts +32 -0
- package/dist/esm/processors/ActivityProcessor.d.ts.map +1 -0
- package/dist/esm/processors/ActivityProcessor.js +36 -0
- package/dist/esm/processors/ActivityProcessor.js.map +1 -0
- package/dist/esm/processors/ActivityProcessor.test.d.ts +2 -0
- package/dist/esm/processors/ActivityProcessor.test.d.ts.map +1 -0
- package/dist/esm/processors/ActivityProcessor.test.js +82 -0
- package/dist/esm/processors/ActivityProcessor.test.js.map +1 -0
- package/dist/esm/processors/AgentProcessor.d.ts +25 -0
- package/dist/esm/processors/AgentProcessor.d.ts.map +1 -0
- package/dist/esm/processors/AgentProcessor.js +43 -0
- package/dist/esm/processors/AgentProcessor.js.map +1 -0
- package/dist/esm/processors/AgentProcessor.test.d.ts +2 -0
- package/dist/esm/processors/AgentProcessor.test.d.ts.map +1 -0
- package/dist/esm/processors/AgentProcessor.test.js +101 -0
- package/dist/esm/processors/AgentProcessor.test.js.map +1 -0
- package/dist/esm/processors/ChatProcessor.d.ts +70 -11
- package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
- package/dist/esm/processors/ChatProcessor.js +359 -130
- package/dist/esm/processors/ChatProcessor.js.map +1 -1
- package/dist/esm/processors/ChatProcessor.test.d.ts +2 -0
- package/dist/esm/processors/ChatProcessor.test.d.ts.map +1 -0
- package/dist/esm/processors/ChatProcessor.test.js +760 -0
- package/dist/esm/processors/ChatProcessor.test.js.map +1 -0
- package/dist/esm/processors/index.d.ts +2 -0
- package/dist/esm/processors/index.d.ts.map +1 -1
- package/dist/esm/processors/index.js +2 -0
- package/dist/esm/processors/index.js.map +1 -1
- package/dist/esm/services/AIService.d.ts +19 -7
- package/dist/esm/services/AIService.d.ts.map +1 -1
- package/dist/esm/services/AIService.js +91 -24
- package/dist/esm/services/AIService.js.map +1 -1
- package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
- package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
- package/dist/esm/services/InternalEventsHandler.js +4 -3
- package/dist/esm/services/InternalEventsHandler.js.map +1 -1
- package/dist/esm/services/ModelFetcher.d.ts +2 -7
- package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
- package/dist/esm/services/ModelFetcher.js +2 -8
- package/dist/esm/services/ModelFetcher.js.map +1 -1
- package/dist/esm/services/RedisService.d.ts +5 -2
- package/dist/esm/services/RedisService.d.ts.map +1 -1
- package/dist/esm/services/RedisService.js +21 -14
- package/dist/esm/services/RedisService.js.map +1 -1
- package/dist/esm/services/SocketService.d.ts +9 -6
- package/dist/esm/services/SocketService.d.ts.map +1 -1
- package/dist/esm/services/SocketService.js +9 -5
- package/dist/esm/services/SocketService.js.map +1 -1
- package/dist/esm/store/AgentStore.d.ts +2 -1
- package/dist/esm/store/AgentStore.d.ts.map +1 -1
- package/dist/esm/store/AgentStore.js +4 -2
- package/dist/esm/store/AgentStore.js.map +1 -1
- package/dist/esm/store/ConfigStore.d.ts +1 -0
- package/dist/esm/store/ConfigStore.d.ts.map +1 -1
- package/dist/esm/store/ConfigStore.js +7 -3
- package/dist/esm/store/ConfigStore.js.map +1 -1
- package/dist/esm/tools/generateChartTool.d.ts +2 -2
- package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +12 -11
- package/dist/cjs/helpers/SetupHelper.cjs +0 -34
- package/dist/cjs/helpers/SetupHelper.cjs.map +0 -1
- package/dist/cjs/helpers/SetupHelper.d.ts +0 -4
- package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
- package/dist/cjs/libs/logger/config.cjs +0 -9
- package/dist/cjs/libs/logger/config.cjs.map +0 -1
- package/dist/cjs/libs/logger/config.d.ts +0 -5
- package/dist/cjs/libs/logger/config.d.ts.map +0 -1
- package/dist/cjs/libs/s3/config.cjs +0 -8
- package/dist/cjs/libs/s3/config.cjs.map +0 -1
- package/dist/cjs/libs/s3/config.d.ts +0 -4
- package/dist/cjs/libs/s3/config.d.ts.map +0 -1
- package/dist/esm/helpers/SetupHelper.d.ts +0 -4
- package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
- package/dist/esm/helpers/SetupHelper.js +0 -29
- package/dist/esm/helpers/SetupHelper.js.map +0 -1
- package/dist/esm/libs/logger/config.d.ts +0 -5
- package/dist/esm/libs/logger/config.d.ts.map +0 -1
- package/dist/esm/libs/logger/config.js +0 -6
- package/dist/esm/libs/logger/config.js.map +0 -1
- package/dist/esm/libs/s3/config.d.ts +0 -4
- package/dist/esm/libs/s3/config.d.ts.map +0 -1
- package/dist/esm/libs/s3/config.js +0 -5
- package/dist/esm/libs/s3/config.js.map +0 -1
|
@@ -33,181 +33,161 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.isDocument = isDocument;
|
|
38
|
-
exports.extractTextFromDocument = extractTextFromDocument;
|
|
39
|
-
exports.processAttachment = processAttachment;
|
|
40
|
-
exports.prepareImageForVisionAPI = prepareImageForVisionAPI;
|
|
36
|
+
exports.FileHelper = void 0;
|
|
41
37
|
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
42
|
-
const s3_1 = require("../libs/s3/index.cjs");
|
|
43
38
|
const logger_1 = require("../libs/logger/index.cjs");
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
function isImage(attachment) {
|
|
49
|
-
if (attachment.type !== ai_agent_types_1.AgentAttachmentType.File)
|
|
50
|
-
return false;
|
|
51
|
-
const mimeType = attachment.mimeType || '';
|
|
52
|
-
return mimeType.startsWith('image/');
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Checks if an attachment is a document that can have text extracted
|
|
56
|
-
*/
|
|
57
|
-
function isDocument(attachment) {
|
|
58
|
-
if (attachment.type !== ai_agent_types_1.AgentAttachmentType.File)
|
|
59
|
-
return false;
|
|
60
|
-
const mimeType = attachment.mimeType || '';
|
|
61
|
-
return mimeType.startsWith('text/') || mimeType.startsWith('application/');
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Extracts text from a document attachment
|
|
65
|
-
*/
|
|
66
|
-
async function extractTextFromDocument(attachment) {
|
|
67
|
-
if (!isDocument(attachment) || attachment.type !== ai_agent_types_1.AgentAttachmentType.File) {
|
|
68
|
-
logger_1.logger.debug('Attachment is not a document or not a file type', {
|
|
69
|
-
attachmentId: attachment.id,
|
|
70
|
-
type: attachment.type,
|
|
71
|
-
mimeType: attachment.mimeType
|
|
72
|
-
});
|
|
73
|
-
return undefined;
|
|
39
|
+
class FileHelper {
|
|
40
|
+
constructor(s3, config) {
|
|
41
|
+
this.s3 = s3;
|
|
42
|
+
this.config = config;
|
|
74
43
|
}
|
|
75
|
-
|
|
44
|
+
isImage(attachment) {
|
|
45
|
+
if (attachment.type !== ai_agent_types_1.AgentAttachmentType.File)
|
|
46
|
+
return false;
|
|
76
47
|
const mimeType = attachment.mimeType || '';
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
48
|
+
return mimeType.startsWith('image/');
|
|
49
|
+
}
|
|
50
|
+
isDocument(attachment) {
|
|
51
|
+
if (attachment.type !== ai_agent_types_1.AgentAttachmentType.File)
|
|
52
|
+
return false;
|
|
53
|
+
const mimeType = attachment.mimeType || '';
|
|
54
|
+
return mimeType.startsWith('text/') || mimeType.startsWith('application/');
|
|
55
|
+
}
|
|
56
|
+
async extractTextFromDocument(attachment) {
|
|
57
|
+
if (!this.isDocument(attachment) || attachment.type !== ai_agent_types_1.AgentAttachmentType.File) {
|
|
58
|
+
logger_1.logger.debug('Attachment is not a document or not a file type', {
|
|
59
|
+
attachmentId: attachment.id,
|
|
60
|
+
type: attachment.type,
|
|
61
|
+
mimeType: attachment.mimeType
|
|
62
|
+
});
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const mimeType = attachment.mimeType || '';
|
|
67
|
+
// All files are stored in S3 (s3Key is in metadata)
|
|
68
|
+
if (attachment.metadata?.s3Key) {
|
|
69
|
+
const s3Key = attachment.metadata.s3Key;
|
|
70
|
+
const bucket = this.config.s3.bucket ?? '';
|
|
71
|
+
if (mimeType === 'application/pdf') {
|
|
72
|
+
const buffer = await this.s3.downloadFileAsByteArray(s3Key, bucket);
|
|
73
|
+
if (buffer) {
|
|
74
|
+
// Convert Uint8Array to Buffer
|
|
75
|
+
const nodeBuffer = Buffer.from(buffer);
|
|
76
|
+
return await this.extractTextFromPDF(nodeBuffer);
|
|
77
|
+
}
|
|
87
78
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
79
|
+
else if (mimeType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {
|
|
80
|
+
const buffer = await this.s3.downloadFileAsByteArray(s3Key, bucket);
|
|
81
|
+
if (buffer) {
|
|
82
|
+
// Convert Uint8Array to Buffer
|
|
83
|
+
const nodeBuffer = Buffer.from(buffer);
|
|
84
|
+
return await this.extractTextFromDOCX(nodeBuffer);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const text = await this.s3.downloadFileAsString(s3Key, bucket);
|
|
89
|
+
return text || undefined;
|
|
95
90
|
}
|
|
96
91
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
logger_1.logger.error('Failed to extract text from document', { error, attachmentId: attachment.id });
|
|
96
|
+
return undefined;
|
|
101
97
|
}
|
|
102
|
-
return undefined;
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
logger_1.logger.error('Failed to extract text from document', { error, attachmentId: attachment.id });
|
|
106
|
-
return undefined;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Extracts text from PDF buffer
|
|
111
|
-
*/
|
|
112
|
-
async function extractTextFromPDF(buffer) {
|
|
113
|
-
try {
|
|
114
|
-
const { PDFParse } = await Promise.resolve().then(() => __importStar(require('pdf-parse')));
|
|
115
|
-
const parser = new PDFParse({ data: buffer });
|
|
116
|
-
const text = (await parser.getText()).text || '';
|
|
117
|
-
// Limit extracted text size
|
|
118
|
-
const maxSize = config_1.config.fileProcessing.maxExtractedTextSize;
|
|
119
|
-
return text.length > maxSize ? text.substring(0, maxSize) + '...' : text;
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
logger_1.logger.warn('PDF text extraction failed (pdf-parse may not be installed)', { error });
|
|
123
|
-
return undefined;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Extracts text from DOCX buffer
|
|
128
|
-
*/
|
|
129
|
-
async function extractTextFromDOCX(buffer) {
|
|
130
|
-
try {
|
|
131
|
-
const mammoth = await Promise.resolve().then(() => __importStar(require('mammoth')));
|
|
132
|
-
const result = await mammoth.extractRawText({ buffer });
|
|
133
|
-
const text = result.value || '';
|
|
134
|
-
// Limit extracted text size
|
|
135
|
-
const maxSize = config_1.config.fileProcessing.maxExtractedTextSize;
|
|
136
|
-
return text.length > maxSize ? text.substring(0, maxSize) + '...' : text;
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
logger_1.logger.warn('DOCX text extraction failed (mammoth may not be installed)', { error });
|
|
140
|
-
return undefined;
|
|
141
98
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
99
|
+
async extractTextFromPDF(buffer) {
|
|
100
|
+
try {
|
|
101
|
+
const { PDFParse } = await Promise.resolve().then(() => __importStar(require('pdf-parse')));
|
|
102
|
+
const parser = new PDFParse({ data: buffer });
|
|
103
|
+
const text = (await parser.getText()).text || '';
|
|
104
|
+
// Limit extracted text size
|
|
105
|
+
const maxSize = this.config.fileProcessing.maxExtractedTextSize ?? 10000;
|
|
106
|
+
return text.length > maxSize ? text.substring(0, maxSize) + '...' : text;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
logger_1.logger.warn('PDF text extraction failed (pdf-parse may not be installed)', { error });
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
151
112
|
}
|
|
152
|
-
|
|
153
|
-
const enableTextExtraction = config_1.config.fileProcessing.enableTextExtraction;
|
|
154
|
-
if (enableTextExtraction && isDocument(attachment)) {
|
|
113
|
+
async extractTextFromDOCX(buffer) {
|
|
155
114
|
try {
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
else {
|
|
163
|
-
processed.processingStatus = 'failed';
|
|
164
|
-
}
|
|
115
|
+
const mammoth = await Promise.resolve().then(() => __importStar(require('mammoth')));
|
|
116
|
+
const result = await mammoth.extractRawText({ buffer });
|
|
117
|
+
const text = result.value || '';
|
|
118
|
+
// Limit extracted text size
|
|
119
|
+
const maxSize = this.config.fileProcessing.maxExtractedTextSize ?? 10000;
|
|
120
|
+
return text.length > maxSize ? text.substring(0, maxSize) + '...' : text;
|
|
165
121
|
}
|
|
166
122
|
catch (error) {
|
|
167
|
-
logger_1.logger.
|
|
168
|
-
|
|
123
|
+
logger_1.logger.warn('DOCX text extraction failed (mammoth may not be installed)', { error });
|
|
124
|
+
return undefined;
|
|
169
125
|
}
|
|
170
126
|
}
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
127
|
+
async processAttachment(attachment) {
|
|
128
|
+
const processed = { ...attachment };
|
|
129
|
+
// Only process file attachments
|
|
130
|
+
if (attachment.type !== ai_agent_types_1.AgentAttachmentType.File) {
|
|
131
|
+
return processed;
|
|
132
|
+
}
|
|
133
|
+
// Check if text extraction is enabled
|
|
134
|
+
const enableTextExtraction = this.config.fileProcessing.enableTextExtraction;
|
|
135
|
+
if (enableTextExtraction && this.isDocument(attachment)) {
|
|
136
|
+
try {
|
|
137
|
+
processed.processingStatus = 'pending';
|
|
138
|
+
const extractedText = await this.extractTextFromDocument(attachment);
|
|
139
|
+
if (extractedText) {
|
|
140
|
+
processed.extractedText = extractedText;
|
|
141
|
+
processed.processingStatus = 'processed';
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
processed.processingStatus = 'failed';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
logger_1.logger.error('Failed to process document attachment', { error, attachmentId: attachment.id });
|
|
149
|
+
processed.processingStatus = 'failed';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return processed;
|
|
179
153
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
154
|
+
async prepareImageForVisionAPI(attachment) {
|
|
155
|
+
if (!this.isImage(attachment) || attachment.type !== ai_agent_types_1.AgentAttachmentType.File) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
// All files are stored in S3 - generate presigned download URL
|
|
159
|
+
if (attachment.metadata?.s3Key) {
|
|
160
|
+
try {
|
|
161
|
+
const s3Key = attachment.metadata.s3Key;
|
|
162
|
+
const bucket = this.config.s3.bucket ?? '';
|
|
163
|
+
const buffer = await this.s3.downloadFileAsByteArray(s3Key, bucket);
|
|
164
|
+
if (!buffer) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const mimeType = attachment.mimeType || 'image/png';
|
|
168
|
+
return {
|
|
169
|
+
type: 'image_url',
|
|
170
|
+
image_url: {
|
|
171
|
+
url: `data:${mimeType};base64,${Buffer.from(buffer).toString('base64')}`,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
logger_1.logger.error('Failed to generate presigned URL for S3 image', { error, attachmentId: attachment.id });
|
|
187
177
|
return null;
|
|
188
178
|
}
|
|
189
|
-
|
|
179
|
+
}
|
|
180
|
+
// Fallback: If we have a URL (backward compatibility)
|
|
181
|
+
if (attachment.url) {
|
|
190
182
|
return {
|
|
191
183
|
type: 'image_url',
|
|
192
184
|
image_url: {
|
|
193
|
-
url:
|
|
185
|
+
url: attachment.url,
|
|
194
186
|
},
|
|
195
187
|
};
|
|
196
188
|
}
|
|
197
|
-
|
|
198
|
-
logger_1.logger.error('Failed to generate presigned URL for S3 image', { error, attachmentId: attachment.id });
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
// Fallback: If we have a URL (backward compatibility)
|
|
203
|
-
if (attachment.url) {
|
|
204
|
-
return {
|
|
205
|
-
type: 'image_url',
|
|
206
|
-
image_url: {
|
|
207
|
-
url: attachment.url,
|
|
208
|
-
},
|
|
209
|
-
};
|
|
189
|
+
return null;
|
|
210
190
|
}
|
|
211
|
-
return null;
|
|
212
191
|
}
|
|
192
|
+
exports.FileHelper = FileHelper;
|
|
213
193
|
//# sourceMappingURL=FileHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileHelper.js","sourceRoot":"","sources":["../../../src/helpers/FileHelper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileHelper.js","sourceRoot":"","sources":["../../../src/helpers/FileHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,25 @@
|
|
|
1
1
|
import type { AgentAttachment } from '@multiplayer-app/ai-agent-types';
|
|
2
|
+
import { S3Lib } from '../libs/s3';
|
|
3
|
+
import { Config } from '../config';
|
|
2
4
|
export interface ProcessedAttachment extends AgentAttachment {
|
|
3
5
|
extractedText?: string;
|
|
4
6
|
processingStatus?: 'pending' | 'processed' | 'failed';
|
|
5
7
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
* Prepares an image attachment for vision API
|
|
24
|
-
*/
|
|
25
|
-
export declare function prepareImageForVisionAPI(attachment: AgentAttachment): Promise<{
|
|
26
|
-
type: 'image_url';
|
|
27
|
-
image_url: {
|
|
28
|
-
url: string;
|
|
29
|
-
};
|
|
30
|
-
} | null>;
|
|
8
|
+
export declare class FileHelper {
|
|
9
|
+
private s3;
|
|
10
|
+
private config;
|
|
11
|
+
constructor(s3: S3Lib, config: Config);
|
|
12
|
+
isImage(attachment: AgentAttachment): boolean;
|
|
13
|
+
private isDocument;
|
|
14
|
+
extractTextFromDocument(attachment: AgentAttachment): Promise<string | undefined>;
|
|
15
|
+
private extractTextFromPDF;
|
|
16
|
+
private extractTextFromDOCX;
|
|
17
|
+
processAttachment(attachment: AgentAttachment): Promise<ProcessedAttachment>;
|
|
18
|
+
prepareImageForVisionAPI(attachment: AgentAttachment): Promise<{
|
|
19
|
+
type: 'image_url';
|
|
20
|
+
image_url: {
|
|
21
|
+
url: string;
|
|
22
|
+
};
|
|
23
|
+
} | null>;
|
|
24
|
+
}
|
|
31
25
|
//# sourceMappingURL=FileHelper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileHelper.d.ts","sourceRoot":"","sources":["../../../src/helpers/FileHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"FileHelper.d.ts","sourceRoot":"","sources":["../../../src/helpers/FileHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CACvD;AAED,qBAAa,UAAU;IAErB,OAAO,CAAC,EAAE,CAAQ;IAClB,OAAO,CAAC,MAAM,CAAS;gBAEX,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAKrC,OAAO,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO;IAM7C,OAAO,CAAC,UAAU;IAMZ,uBAAuB,CAC3B,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YA8ChB,kBAAkB;YAelB,mBAAmB;IAe3B,iBAAiB,CACrB,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IA8BzB,wBAAwB,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC;QACnE,IAAI,EAAE,WAAW,CAAC;QAClB,SAAS,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5B,GAAG,IAAI,CAAC;CAuCV"}
|
|
@@ -18,5 +18,4 @@ __exportStar(require("./AIHelper.cjs"), exports);
|
|
|
18
18
|
__exportStar(require("./ConfigHelper.cjs"), exports);
|
|
19
19
|
__exportStar(require("./ContextLimiter.cjs"), exports);
|
|
20
20
|
__exportStar(require("./FileHelper.cjs"), exports);
|
|
21
|
-
__exportStar(require("./SetupHelper.cjs"), exports);
|
|
22
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,32 +1,126 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var RedisService_1 = require("./services/RedisService.cjs");
|
|
5
|
-
Object.defineProperty(exports, "redisService", { enumerable: true, get: function () { return RedisService_1.redisService; } });
|
|
6
|
-
var SocketService_1 = require("./services/SocketService.cjs");
|
|
7
|
-
Object.defineProperty(exports, "socketService", { enumerable: true, get: function () { return SocketService_1.socketService; } });
|
|
8
|
-
var AgentStore_1 = require("./store/AgentStore.cjs");
|
|
9
|
-
Object.defineProperty(exports, "agentStore", { enumerable: true, get: function () { return AgentStore_1.agentStore; } });
|
|
10
|
-
Object.defineProperty(exports, "AgentProcessEventType", { enumerable: true, get: function () { return AgentStore_1.AgentProcessEventType; } });
|
|
11
|
-
var ConfigStore_1 = require("./store/ConfigStore.cjs");
|
|
12
|
-
Object.defineProperty(exports, "ConfigStore", { enumerable: true, get: function () { return ConfigStore_1.ConfigStore; } });
|
|
13
|
-
var ModelStore_1 = require("./store/ModelStore.cjs");
|
|
14
|
-
Object.defineProperty(exports, "ModelStore", { enumerable: true, get: function () { return ModelStore_1.ModelStore; } });
|
|
15
|
-
var ArtifactStore_1 = require("./store/ArtifactStore.cjs");
|
|
16
|
-
Object.defineProperty(exports, "ArtifactStore", { enumerable: true, get: function () { return ArtifactStore_1.ArtifactStore; } });
|
|
17
|
-
var processors_1 = require("./processors/index.cjs");
|
|
18
|
-
Object.defineProperty(exports, "ChatProcessor", { enumerable: true, get: function () { return processors_1.ChatProcessor; } });
|
|
19
|
-
Object.defineProperty(exports, "ModelsProcessor", { enumerable: true, get: function () { return processors_1.ModelsProcessor; } });
|
|
20
|
-
var SetupHelper_1 = require("./helpers/SetupHelper.cjs");
|
|
21
|
-
Object.defineProperty(exports, "startServices", { enumerable: true, get: function () { return SetupHelper_1.startServices; } });
|
|
22
|
-
Object.defineProperty(exports, "stopServices", { enumerable: true, get: function () { return SetupHelper_1.stopServices; } });
|
|
36
|
+
exports.AIAgentService = exports.ConfigStore = exports.proposeFormValuesToolName = exports.createProposeFormValuesTool = void 0;
|
|
23
37
|
var proposeFormValuesTool_1 = require("./tools/proposeFormValuesTool.cjs");
|
|
24
38
|
Object.defineProperty(exports, "createProposeFormValuesTool", { enumerable: true, get: function () { return proposeFormValuesTool_1.createProposeFormValuesTool; } });
|
|
25
39
|
Object.defineProperty(exports, "proposeFormValuesToolName", { enumerable: true, get: function () { return proposeFormValuesTool_1.proposeFormValuesToolName; } });
|
|
26
|
-
var
|
|
27
|
-
Object.defineProperty(exports, "
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
40
|
+
var ConfigStore_1 = require("./store/ConfigStore.cjs");
|
|
41
|
+
Object.defineProperty(exports, "ConfigStore", { enumerable: true, get: function () { return ConfigStore_1.ConfigStore; } });
|
|
42
|
+
const config_1 = require("./config.cjs");
|
|
43
|
+
const libs_1 = require("./libs/index.cjs");
|
|
44
|
+
const services_1 = require("./services/index.cjs");
|
|
45
|
+
const store_1 = require("./store/index.cjs");
|
|
46
|
+
const store_2 = require("./store/index.cjs");
|
|
47
|
+
const logger_1 = __importStar(require("./libs/logger/index.cjs"));
|
|
48
|
+
const services_2 = require("./services/index.cjs");
|
|
49
|
+
const store_3 = require("./store/index.cjs");
|
|
50
|
+
const processors_1 = require("./processors/index.cjs");
|
|
51
|
+
const store_4 = require("./store/index.cjs");
|
|
52
|
+
const services_3 = require("./services/index.cjs");
|
|
53
|
+
class AIAgentService {
|
|
54
|
+
constructor(options) {
|
|
55
|
+
if (options.config) {
|
|
56
|
+
config_1.ConfigProvider.getInstance().setConfig(options.config);
|
|
57
|
+
}
|
|
58
|
+
this.s3 = new libs_1.S3Lib(config_1.ConfigProvider.getInstance().getConfig().s3);
|
|
59
|
+
this.redisService = new services_2.RedisService(config_1.ConfigProvider.getInstance().getConfig().redis);
|
|
60
|
+
this.socketService = new services_1.SocketService(config_1.ConfigProvider.getInstance().getConfig().socket, this.redisService);
|
|
61
|
+
options.setupAgents(store_2.ConfigStore.getInstance());
|
|
62
|
+
this.agentStore = new store_1.AgentStore(this.redisService);
|
|
63
|
+
if (options.logger)
|
|
64
|
+
(0, logger_1.setLogger)(options.logger);
|
|
65
|
+
this.modelsProcessor = new processors_1.ModelsProcessor();
|
|
66
|
+
this.agentProcessor = new processors_1.AgentProcessor({ agentConfigRepository: options.agentConfigRepository });
|
|
67
|
+
this.activityProcessor = new processors_1.ActivityProcessor({
|
|
68
|
+
activityRepository: options.activityRepository
|
|
69
|
+
});
|
|
70
|
+
this.chatProcessor = new processors_1.ChatProcessor({
|
|
71
|
+
agentStore: this.agentStore,
|
|
72
|
+
chatRepository: options.chatRepository,
|
|
73
|
+
messageRepository: options.messageRepository,
|
|
74
|
+
activityRepository: options.activityRepository,
|
|
75
|
+
artifactStore: options.artifactStore || new store_3.ArtifactStore(),
|
|
76
|
+
agentConfigRepository: options.agentConfigRepository,
|
|
77
|
+
s3Lib: this.s3,
|
|
78
|
+
config: config_1.ConfigProvider.getInstance().getConfig(),
|
|
79
|
+
socketService: this.socketService
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
start() {
|
|
83
|
+
return Promise.all([
|
|
84
|
+
this.agentStore.initialize(),
|
|
85
|
+
this.fetchModels(config_1.ConfigProvider.getInstance().getConfig().ai),
|
|
86
|
+
this.s3.ensureBucketExists(config_1.ConfigProvider.getInstance().getConfig().s3.bucket ?? '').catch((err) => logger_1.default.error("Unable to auto create s3 bucket")),
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
stop() {
|
|
90
|
+
return Promise.all([this.redisService.disconnect()]);
|
|
91
|
+
}
|
|
92
|
+
getS3() {
|
|
93
|
+
return this.s3;
|
|
94
|
+
}
|
|
95
|
+
async stopAgentProcess(chatId) {
|
|
96
|
+
await this.agentStore.shareAgentProcessEvent(chatId, { type: store_1.AgentProcessEventType.Stop, data: undefined });
|
|
97
|
+
}
|
|
98
|
+
initSocketSupport(httpServer, authorizationMiddleware) {
|
|
99
|
+
return this.socketService.initialize(httpServer, authorizationMiddleware);
|
|
100
|
+
}
|
|
101
|
+
getChatProcessor() {
|
|
102
|
+
return this.chatProcessor;
|
|
103
|
+
}
|
|
104
|
+
getModelProcessor() {
|
|
105
|
+
return this.modelsProcessor;
|
|
106
|
+
}
|
|
107
|
+
getActivityProcessor() {
|
|
108
|
+
return this.activityProcessor;
|
|
109
|
+
}
|
|
110
|
+
getAgentProcessor() {
|
|
111
|
+
return this.agentProcessor;
|
|
112
|
+
}
|
|
113
|
+
async fetchModels(config) {
|
|
114
|
+
try {
|
|
115
|
+
const modelFetcher = new services_3.ModelFetcher(config);
|
|
116
|
+
const models = await modelFetcher.fetchAllModels();
|
|
117
|
+
store_4.ModelStore.getInstance().setModels(models);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
logger_1.default.error('Failed to fetch models on startup:', error);
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.AIAgentService = AIAgentService;
|
|
32
126
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|