@multiplayer-app/ai-agent-node 0.1.0-beta.12 → 0.1.0-beta.15
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/dist/cjs/config.cjs +88 -50
- package/dist/cjs/config.cjs.map +1 -1
- package/dist/cjs/config.d.ts +58 -31
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/helpers/AIHelper.cjs +36 -38
- package/dist/cjs/helpers/AIHelper.cjs.map +1 -1
- package/dist/cjs/helpers/AIHelper.d.ts +16 -11
- package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
- package/dist/cjs/helpers/AIHelper.test.cjs +19 -12
- package/dist/cjs/helpers/AIHelper.test.cjs.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 +108 -26
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.ts +37 -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/ChatProcessor.cjs +40 -37
- package/dist/cjs/processors/ChatProcessor.cjs.map +1 -1
- package/dist/cjs/processors/ChatProcessor.d.ts +17 -1
- package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
- package/dist/cjs/services/AIService.cjs +8 -8
- package/dist/cjs/services/AIService.cjs.map +1 -1
- package/dist/cjs/services/AIService.d.ts +3 -1
- 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 +6 -8
- package/dist/cjs/services/SocketService.cjs.map +1 -1
- package/dist/cjs/services/SocketService.d.ts +6 -3
- 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 +1 -3
- package/dist/cjs/store/ConfigStore.cjs.map +1 -1
- package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
- package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/config.d.ts +58 -31
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +88 -48
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/helpers/AIHelper.d.ts +16 -11
- package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
- package/dist/esm/helpers/AIHelper.js +38 -38
- package/dist/esm/helpers/AIHelper.js.map +1 -1
- package/dist/esm/helpers/AIHelper.test.js +19 -12
- package/dist/esm/helpers/AIHelper.test.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 +37 -10
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +78 -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/ChatProcessor.d.ts +17 -1
- package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
- package/dist/esm/processors/ChatProcessor.js +46 -39
- package/dist/esm/processors/ChatProcessor.js.map +1 -1
- package/dist/esm/services/AIService.d.ts +3 -1
- package/dist/esm/services/AIService.d.ts.map +1 -1
- package/dist/esm/services/AIService.js +12 -11
- 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 +6 -3
- package/dist/esm/services/SocketService.d.ts.map +1 -1
- package/dist/esm/services/SocketService.js +8 -6
- 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.map +1 -1
- package/dist/esm/store/ConfigStore.js +1 -3
- package/dist/esm/store/ConfigStore.js.map +1 -1
- package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +3 -3
- 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
|
@@ -2,17 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const AIHelper_1 = require("./AIHelper.cjs");
|
|
5
|
+
const FileHelper_1 = require("./FileHelper.cjs");
|
|
5
6
|
const ModelStore_1 = require("../store/ModelStore.cjs");
|
|
7
|
+
const config_1 = require("../config.cjs");
|
|
8
|
+
const s3_1 = require("../libs/s3/index.cjs");
|
|
6
9
|
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
7
10
|
(0, vitest_1.describe)('AIHelper.getAssistantResponse', () => {
|
|
8
11
|
let modelStore;
|
|
9
|
-
let
|
|
12
|
+
let aiHelper;
|
|
10
13
|
(0, vitest_1.beforeAll)(() => {
|
|
11
14
|
// Setup real ModelStore instance
|
|
12
15
|
modelStore = ModelStore_1.ModelStore.getInstance();
|
|
13
16
|
modelStore.setModels([
|
|
14
17
|
{ id: 'openai/gpt-4o', label: 'GPT-4o Mini', provider: 'openrouter' }
|
|
15
18
|
]);
|
|
19
|
+
const config = config_1.ConfigProvider.getInstance().getConfig();
|
|
20
|
+
const s3Lib = new s3_1.S3Lib(config.s3);
|
|
21
|
+
const fileHelper = new FileHelper_1.FileHelper(s3Lib, config);
|
|
22
|
+
aiHelper = new AIHelper_1.AIHelper(fileHelper, config);
|
|
16
23
|
});
|
|
17
24
|
(0, vitest_1.describe)('with tool approval responses', () => {
|
|
18
25
|
(0, vitest_1.it)('should handle approved tool with successful execution', async () => {
|
|
@@ -38,7 +45,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
38
45
|
]
|
|
39
46
|
}
|
|
40
47
|
];
|
|
41
|
-
const response = await
|
|
48
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
42
49
|
// Verify we get a response (actual model call)
|
|
43
50
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
44
51
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -71,7 +78,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
71
78
|
]
|
|
72
79
|
}
|
|
73
80
|
];
|
|
74
|
-
const response = await
|
|
81
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
75
82
|
// Verify we get a response acknowledging the denial
|
|
76
83
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
77
84
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -111,7 +118,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
111
118
|
]
|
|
112
119
|
}
|
|
113
120
|
];
|
|
114
|
-
const response = await
|
|
121
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
115
122
|
// Verify we get a response handling both tool results
|
|
116
123
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
117
124
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -139,7 +146,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
139
146
|
]
|
|
140
147
|
}
|
|
141
148
|
];
|
|
142
|
-
const response = await
|
|
149
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
143
150
|
// Verify we get a response even when tool execution failed
|
|
144
151
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
145
152
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -169,7 +176,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
169
176
|
]
|
|
170
177
|
}
|
|
171
178
|
];
|
|
172
|
-
const response = await
|
|
179
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
173
180
|
// Verify we get a response when tool was not found
|
|
174
181
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
175
182
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -199,7 +206,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
199
206
|
]
|
|
200
207
|
}
|
|
201
208
|
];
|
|
202
|
-
const response = await
|
|
209
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
203
210
|
// Verify we get a response when tool execution had an error
|
|
204
211
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
205
212
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -216,7 +223,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
216
223
|
content: 'I am doing well, thank you!'
|
|
217
224
|
}
|
|
218
225
|
];
|
|
219
|
-
const response = await
|
|
226
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
220
227
|
// Verify we get a response for normal conversation
|
|
221
228
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
222
229
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -243,7 +250,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
243
250
|
]
|
|
244
251
|
}
|
|
245
252
|
];
|
|
246
|
-
const response = await
|
|
253
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
247
254
|
// Verify we get a response even when tool is pending approval
|
|
248
255
|
// (tool calls without output should not include tool-result in messages)
|
|
249
256
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
@@ -289,7 +296,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
289
296
|
]
|
|
290
297
|
}
|
|
291
298
|
];
|
|
292
|
-
const response = await
|
|
299
|
+
const response = await aiHelper.getAssistantResponse(messages);
|
|
293
300
|
// Verify we get a response for sequential tool calls
|
|
294
301
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
295
302
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -303,7 +310,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
303
310
|
content: 'Test message'
|
|
304
311
|
}
|
|
305
312
|
];
|
|
306
|
-
const response = await
|
|
313
|
+
const response = await aiHelper.getAssistantResponse(messages, undefined, {
|
|
307
314
|
temperature: 0.9,
|
|
308
315
|
maxOutputTokens: 1000
|
|
309
316
|
});
|
|
@@ -322,7 +329,7 @@ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
|
322
329
|
];
|
|
323
330
|
const abortController = new AbortController();
|
|
324
331
|
const signal = abortController.signal;
|
|
325
|
-
const response = await
|
|
332
|
+
const response = await aiHelper.getAssistantResponse(messages, signal);
|
|
326
333
|
// Verify we get a response with abort signal passed through
|
|
327
334
|
(0, vitest_1.expect)(response).toBeDefined();
|
|
328
335
|
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIHelper.test.js","sourceRoot":"","sources":["../../../src/helpers/AIHelper.test.ts"],"names":[],"mappings":";;AAAA,mCAAyD;AACzD,yCAAsC;AACtC,oDAAiD;
|
|
1
|
+
{"version":3,"file":"AIHelper.test.js","sourceRoot":"","sources":["../../../src/helpers/AIHelper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|