@hed-hog/core 0.0.233 → 0.0.234

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.
@@ -22,6 +22,7 @@ export declare class AiService {
22
22
  private readonly prismaService;
23
23
  private readonly settingService;
24
24
  private readonly fileService;
25
+ private readonly logger;
25
26
  constructor(prismaService: PrismaService, settingService: SettingService, fileService: FileService);
26
27
  chat(data: ChatDTO, file?: MulterFile): Promise<{
27
28
  provider: "openai";
@@ -57,6 +58,19 @@ export declare class AiService {
57
58
  content: any;
58
59
  }>;
59
60
  getAgentBySlug(slug: string): Promise<AiAgentRecord>;
61
+ extractAttachmentText(file?: MulterFile, fileId?: number): Promise<string>;
62
+ debugAttachmentForLlm(file?: MulterFile, fileId?: number): Promise<{
63
+ hasAttachment: boolean;
64
+ filename: string;
65
+ mimeType: string;
66
+ bytes: number;
67
+ mode: "binary" | "text" | "image" | "pdf-text";
68
+ textLength: number;
69
+ textSample: string;
70
+ sha256: string;
71
+ } | {
72
+ hasAttachment: boolean;
73
+ }>;
60
74
  private findAgentBySlug;
61
75
  private findAgentById;
62
76
  private getDefaultModel;
@@ -70,6 +84,9 @@ export declare class AiService {
70
84
  private buildOpenAiUserContent;
71
85
  private isImageMime;
72
86
  private isTextMime;
87
+ private isPdfMime;
88
+ private normalizeAttachmentMimeType;
89
+ private extractPdfText;
73
90
  private toUtf8Text;
74
91
  }
75
92
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ai.service.d.ts","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtC,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAQF,qBACa,SAAS;IAGlB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAJX,aAAa,EAAE,aAAa,EAE5B,cAAc,EAAE,cAAc,EAE9B,WAAW,EAAE,WAAW;IAGrC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU;;;;;;;;;IAmCrC,WAAW,CAAC,IAAI,EAAE,cAAc;IA6BhC,UAAU,CAAC,gBAAgB,EAAE,aAAa;;;;;;;IAuC1C,YAAY,CAAC,OAAO,EAAE,MAAM;IAU5B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;IA6CjD,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS;;;IAyB/B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;IAqDjE,cAAc,CAAC,IAAI,EAAE,MAAM;YAUnB,eAAe;YAWf,aAAa;IAW3B,OAAO,CAAC,eAAe;YAQT,UAAU;YAYV,cAAc;YA6Cd,qBAAqB;YA0CrB,uBAAuB;YAiGvB,cAAc;YA0Dd,KAAK;YAIL,iBAAiB;IAwB/B,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"ai.service.d.ts","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAapD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtC,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAQF,qBACa,SAAS;IAKlB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;gBAIlC,aAAa,EAAE,aAAa,EAE5B,cAAc,EAAE,cAAc,EAE9B,WAAW,EAAE,WAAW;IAGrC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU;;;;;;;;;IAmCrC,WAAW,CAAC,IAAI,EAAE,cAAc;IAmChC,UAAU,CAAC,gBAAgB,EAAE,aAAa;;;;;;;IAuC1C,YAAY,CAAC,OAAO,EAAE,MAAM;IAU5B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;IA6CjD,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS;;;IAyB/B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;IAqDjE,cAAc,CAAC,IAAI,EAAE,MAAM;IAU3B,qBAAqB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB1E,qBAAqB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;;;YAwChD,eAAe;YAWf,aAAa;IAW3B,OAAO,CAAC,eAAe;YAQT,UAAU;YAYV,cAAc;YA6Cd,qBAAqB;YA0CrB,uBAAuB;YAiGvB,cAAc;YAwEd,KAAK;YAIL,iBAAiB;YAgCjB,sBAAsB;IA+BpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,2BAA2B;YAmBrB,cAAc;IAkB5B,OAAO,CAAC,UAAU;CAGnB"}
@@ -14,19 +14,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  return (mod && mod.__esModule) ? mod : { "default": mod };
16
16
  };
17
+ var AiService_1;
17
18
  Object.defineProperty(exports, "__esModule", { value: true });
18
19
  exports.AiService = void 0;
19
20
  const api_prisma_1 = require("@hed-hog/api-prisma");
20
21
  const common_1 = require("@nestjs/common");
21
22
  const client_1 = require("@prisma/client");
22
23
  const axios_1 = __importDefault(require("axios"));
24
+ const crypto_1 = require("crypto");
25
+ const pdf_parse_1 = __importDefault(require("pdf-parse"));
23
26
  const file_service_1 = require("../file/file.service");
24
27
  const setting_service_1 = require("../setting/setting.service");
25
- let AiService = class AiService {
28
+ let AiService = AiService_1 = class AiService {
26
29
  constructor(prismaService, settingService, fileService) {
27
30
  this.prismaService = prismaService;
28
31
  this.settingService = settingService;
29
32
  this.fileService = fileService;
33
+ this.logger = new common_1.Logger(AiService_1.name);
30
34
  }
31
35
  async chat(data, file) {
32
36
  const provider = data.provider || 'openai';
@@ -78,7 +82,13 @@ let AiService = class AiService {
78
82
  }
79
83
  await this.prismaService.$executeRaw `
80
84
  INSERT INTO ai_agent (slug, provider, model, instructions, external_agent_id)
81
- VALUES (${slug}, ${provider}, ${model}, ${instructions}, ${externalAgentId})
85
+ VALUES (
86
+ ${slug},
87
+ CAST(${provider} AS ai_agent_provider_enum),
88
+ ${model},
89
+ ${instructions},
90
+ ${externalAgentId}
91
+ )
82
92
  `;
83
93
  return this.findAgentBySlug(slug);
84
94
  }
@@ -150,7 +160,7 @@ let AiService = class AiService {
150
160
  await this.prismaService.$executeRaw `
151
161
  UPDATE ai_agent
152
162
  SET slug = ${slug},
153
- provider = ${provider},
163
+ provider = CAST(${provider} AS ai_agent_provider_enum),
154
164
  model = ${model},
155
165
  instructions = ${instructions},
156
166
  external_agent_id = ${externalAgentId},
@@ -227,6 +237,52 @@ let AiService = class AiService {
227
237
  }
228
238
  return agent;
229
239
  }
240
+ async extractAttachmentText(file, fileId) {
241
+ const attachment = await this.resolveAttachment(file, fileId);
242
+ if (!attachment) {
243
+ return '';
244
+ }
245
+ if (this.isPdfMime(attachment.mimeType)) {
246
+ return this.extractPdfText(attachment.buffer);
247
+ }
248
+ if (this.isTextMime(attachment.mimeType)) {
249
+ return this.toUtf8Text(attachment.buffer);
250
+ }
251
+ return '';
252
+ }
253
+ async debugAttachmentForLlm(file, fileId) {
254
+ const attachment = await this.resolveAttachment(file, fileId);
255
+ if (!attachment) {
256
+ return {
257
+ hasAttachment: false,
258
+ };
259
+ }
260
+ let mode = 'binary';
261
+ let extractedText = '';
262
+ if (this.isImageMime(attachment.mimeType)) {
263
+ mode = 'image';
264
+ }
265
+ else if (this.isPdfMime(attachment.mimeType)) {
266
+ mode = 'pdf-text';
267
+ extractedText = await this.extractPdfText(attachment.buffer);
268
+ }
269
+ else if (this.isTextMime(attachment.mimeType)) {
270
+ mode = 'text';
271
+ extractedText = this.toUtf8Text(attachment.buffer);
272
+ }
273
+ const result = {
274
+ hasAttachment: true,
275
+ filename: attachment.filename,
276
+ mimeType: attachment.mimeType,
277
+ bytes: attachment.buffer.length,
278
+ mode,
279
+ textLength: extractedText.length,
280
+ textSample: extractedText.slice(0, 600),
281
+ sha256: (0, crypto_1.createHash)('sha256').update(attachment.buffer).digest('hex'),
282
+ };
283
+ this.logger.warn(`[AI-ATTACHMENT-DEBUG] fileId=${fileId || 'upload'} filename="${result.filename}" mime=${result.mimeType} mode=${result.mode} bytes=${result.bytes} textLength=${result.textLength}`);
284
+ return result;
285
+ }
230
286
  async findAgentBySlug(slug) {
231
287
  const result = await this.prismaService.$queryRaw `
232
288
  SELECT id, slug, provider, model, instructions, external_agent_id, created_at, updated_at
@@ -271,7 +327,7 @@ let AiService = class AiService {
271
327
  if (systemPrompt) {
272
328
  messages.push({ role: 'system', content: systemPrompt });
273
329
  }
274
- const userContent = this.buildOpenAiUserContent(message, attachment);
330
+ const userContent = await this.buildOpenAiUserContent(message, attachment);
275
331
  messages.push({ role: 'user', content: userContent });
276
332
  const response = await axios_1.default.post('https://api.openai.com/v1/chat/completions', {
277
333
  model,
@@ -379,6 +435,22 @@ let AiService = class AiService {
379
435
  text: `\n\n[Attached file: ${attachment.filename}]\n${this.toUtf8Text(attachment.buffer)}`,
380
436
  });
381
437
  }
438
+ else if (this.isPdfMime(attachment.mimeType)) {
439
+ const pdfText = await this.extractPdfText(attachment.buffer);
440
+ if (pdfText) {
441
+ userParts.push({
442
+ text: `\n\n[Attached file: ${attachment.filename}]\n${pdfText}`,
443
+ });
444
+ }
445
+ else {
446
+ userParts.push({
447
+ inline_data: {
448
+ mime_type: attachment.mimeType,
449
+ data: attachment.buffer.toString('base64'),
450
+ },
451
+ });
452
+ }
453
+ }
382
454
  else {
383
455
  userParts.push({
384
456
  inline_data: {
@@ -410,23 +482,25 @@ let AiService = class AiService {
410
482
  async resolveAttachment(uploadFile, fileId) {
411
483
  var _a;
412
484
  if (uploadFile) {
485
+ const mimeType = this.normalizeAttachmentMimeType(uploadFile.mimetype, uploadFile.originalname);
413
486
  return {
414
487
  filename: uploadFile.originalname,
415
- mimeType: uploadFile.mimetype,
488
+ mimeType,
416
489
  buffer: uploadFile.buffer,
417
490
  };
418
491
  }
419
492
  if (fileId) {
420
493
  const { file, buffer } = await this.fileService.getBuffer(fileId);
494
+ const mimeType = this.normalizeAttachmentMimeType(((_a = file.file_mimetype) === null || _a === void 0 ? void 0 : _a.name) || 'application/octet-stream', file.filename);
421
495
  return {
422
496
  filename: file.filename,
423
- mimeType: ((_a = file.file_mimetype) === null || _a === void 0 ? void 0 : _a.name) || 'application/octet-stream',
497
+ mimeType,
424
498
  buffer,
425
499
  };
426
500
  }
427
501
  return null;
428
502
  }
429
- buildOpenAiUserContent(message, attachment) {
503
+ async buildOpenAiUserContent(message, attachment) {
430
504
  if (!attachment) {
431
505
  return message;
432
506
  }
@@ -437,9 +511,18 @@ let AiService = class AiService {
437
511
  { type: 'image_url', image_url: { url: dataUri } },
438
512
  ];
439
513
  }
440
- const text = this.isTextMime(attachment.mimeType)
441
- ? this.toUtf8Text(attachment.buffer)
442
- : `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
514
+ let text;
515
+ if (this.isTextMime(attachment.mimeType)) {
516
+ text = this.toUtf8Text(attachment.buffer);
517
+ }
518
+ else if (this.isPdfMime(attachment.mimeType)) {
519
+ text =
520
+ (await this.extractPdfText(attachment.buffer)) ||
521
+ `[PDF attachment with unreadable text: ${attachment.filename}]`;
522
+ }
523
+ else {
524
+ text = `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
525
+ }
443
526
  return `${message}\n\n[Attached file: ${attachment.filename}]\n${text}`;
444
527
  }
445
528
  isImageMime(mimeType) {
@@ -450,12 +533,56 @@ let AiService = class AiService {
450
533
  mimeType === 'application/json' ||
451
534
  mimeType === 'application/xml');
452
535
  }
536
+ isPdfMime(mimeType) {
537
+ return (mimeType === 'application/pdf' ||
538
+ mimeType === 'application/x-pdf' ||
539
+ mimeType.endsWith('/pdf'));
540
+ }
541
+ normalizeAttachmentMimeType(mimeType, filename) {
542
+ const current = (mimeType || '').toLowerCase();
543
+ if (current && current !== 'application/octet-stream') {
544
+ return current;
545
+ }
546
+ const name = (filename || '').toLowerCase();
547
+ if (name.endsWith('.pdf'))
548
+ return 'application/pdf';
549
+ if (name.endsWith('.json'))
550
+ return 'application/json';
551
+ if (name.endsWith('.xml'))
552
+ return 'application/xml';
553
+ if (name.endsWith('.txt') || name.endsWith('.csv'))
554
+ return 'text/plain';
555
+ if (name.endsWith('.png'))
556
+ return 'image/png';
557
+ if (name.endsWith('.jpg') || name.endsWith('.jpeg'))
558
+ return 'image/jpeg';
559
+ if (name.endsWith('.webp'))
560
+ return 'image/webp';
561
+ return current || 'application/octet-stream';
562
+ }
563
+ async extractPdfText(buffer) {
564
+ try {
565
+ const result = await (0, pdf_parse_1.default)(buffer);
566
+ const text = ((result === null || result === void 0 ? void 0 : result.text) || '')
567
+ .replace(/\r/g, '')
568
+ .replace(/[ \t]+\n/g, '\n')
569
+ .replace(/\n{3,}/g, '\n\n')
570
+ .trim();
571
+ if (!text) {
572
+ return '';
573
+ }
574
+ return text.slice(0, 60000);
575
+ }
576
+ catch (_a) {
577
+ return '';
578
+ }
579
+ }
453
580
  toUtf8Text(buffer) {
454
581
  return buffer.toString('utf8');
455
582
  }
456
583
  };
457
584
  exports.AiService = AiService;
458
- exports.AiService = AiService = __decorate([
585
+ exports.AiService = AiService = AiService_1 = __decorate([
459
586
  (0, common_1.Injectable)(),
460
587
  __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
461
588
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
@@ -1 +1 @@
1
- {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hed-hog/core",
3
- "version": "0.0.233",
3
+ "version": "0.0.234",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "dependencies": {
@@ -23,17 +23,18 @@
23
23
  "jsonwebtoken": "^9.0.2",
24
24
  "multer": "^2.0.1",
25
25
  "pako": "^2.1.0",
26
+ "pdf-parse": "^1.1.1",
26
27
  "png-to-ico": "^2.1.8",
27
28
  "qrcode": "^1.5.4",
28
29
  "rxjs": "^7.8.2",
29
30
  "sharp": "^0.34.2",
30
31
  "speakeasy": "^2.0.0",
31
32
  "uuid": "^11.1.0",
32
- "@hed-hog/api": "0.0.3",
33
33
  "@hed-hog/api-prisma": "0.0.4",
34
34
  "@hed-hog/api-types": "0.0.1",
35
- "@hed-hog/api-pagination": "0.0.5",
35
+ "@hed-hog/api": "0.0.3",
36
36
  "@hed-hog/api-locale": "0.0.11",
37
+ "@hed-hog/api-pagination": "0.0.5",
37
38
  "@hed-hog/api-mail": "0.0.7"
38
39
  },
39
40
  "exports": {
@@ -1,14 +1,17 @@
1
1
  import { PaginationDTO } from '@hed-hog/api-pagination';
2
2
  import { PrismaService } from '@hed-hog/api-prisma';
3
3
  import {
4
- BadRequestException,
5
- forwardRef,
6
- Inject,
7
- Injectable,
8
- NotFoundException,
4
+ BadRequestException,
5
+ forwardRef,
6
+ Inject,
7
+ Injectable,
8
+ Logger,
9
+ NotFoundException,
9
10
  } from '@nestjs/common';
10
11
  import { Prisma } from '@prisma/client';
11
12
  import axios from 'axios';
13
+ import { createHash } from 'crypto';
14
+ import pdfParse from 'pdf-parse';
12
15
  import { DeleteDTO } from '../dto/delete.dto';
13
16
  import { FileService } from '../file/file.service';
14
17
  import { SettingService } from '../setting/setting.service';
@@ -38,6 +41,8 @@ type AiAttachment = {
38
41
 
39
42
  @Injectable()
40
43
  export class AiService {
44
+ private readonly logger = new Logger(AiService.name);
45
+
41
46
  constructor(
42
47
  @Inject(forwardRef(() => PrismaService))
43
48
  private readonly prismaService: PrismaService,
@@ -105,7 +110,13 @@ export class AiService {
105
110
 
106
111
  await this.prismaService.$executeRaw`
107
112
  INSERT INTO ai_agent (slug, provider, model, instructions, external_agent_id)
108
- VALUES (${slug}, ${provider}, ${model}, ${instructions}, ${externalAgentId})
113
+ VALUES (
114
+ ${slug},
115
+ CAST(${provider} AS ai_agent_provider_enum),
116
+ ${model},
117
+ ${instructions},
118
+ ${externalAgentId}
119
+ )
109
120
  `;
110
121
 
111
122
  return this.findAgentBySlug(slug);
@@ -194,7 +205,7 @@ export class AiService {
194
205
  await this.prismaService.$executeRaw`
195
206
  UPDATE ai_agent
196
207
  SET slug = ${slug},
197
- provider = ${provider},
208
+ provider = CAST(${provider} AS ai_agent_provider_enum),
198
209
  model = ${model},
199
210
  instructions = ${instructions},
200
211
  external_agent_id = ${externalAgentId},
@@ -293,6 +304,64 @@ export class AiService {
293
304
  return agent;
294
305
  }
295
306
 
307
+ async extractAttachmentText(file?: MulterFile, fileId?: number): Promise<string> {
308
+ const attachment = await this.resolveAttachment(file, fileId);
309
+
310
+ if (!attachment) {
311
+ return '';
312
+ }
313
+
314
+ if (this.isPdfMime(attachment.mimeType)) {
315
+ return this.extractPdfText(attachment.buffer);
316
+ }
317
+
318
+ if (this.isTextMime(attachment.mimeType)) {
319
+ return this.toUtf8Text(attachment.buffer);
320
+ }
321
+
322
+ return '';
323
+ }
324
+
325
+ async debugAttachmentForLlm(file?: MulterFile, fileId?: number) {
326
+ const attachment = await this.resolveAttachment(file, fileId);
327
+
328
+ if (!attachment) {
329
+ return {
330
+ hasAttachment: false,
331
+ };
332
+ }
333
+
334
+ let mode: 'image' | 'pdf-text' | 'text' | 'binary' = 'binary';
335
+ let extractedText = '';
336
+
337
+ if (this.isImageMime(attachment.mimeType)) {
338
+ mode = 'image';
339
+ } else if (this.isPdfMime(attachment.mimeType)) {
340
+ mode = 'pdf-text';
341
+ extractedText = await this.extractPdfText(attachment.buffer);
342
+ } else if (this.isTextMime(attachment.mimeType)) {
343
+ mode = 'text';
344
+ extractedText = this.toUtf8Text(attachment.buffer);
345
+ }
346
+
347
+ const result = {
348
+ hasAttachment: true,
349
+ filename: attachment.filename,
350
+ mimeType: attachment.mimeType,
351
+ bytes: attachment.buffer.length,
352
+ mode,
353
+ textLength: extractedText.length,
354
+ textSample: extractedText.slice(0, 600),
355
+ sha256: createHash('sha256').update(attachment.buffer).digest('hex'),
356
+ };
357
+
358
+ this.logger.warn(
359
+ `[AI-ATTACHMENT-DEBUG] fileId=${fileId || 'upload'} filename="${result.filename}" mime=${result.mimeType} mode=${result.mode} bytes=${result.bytes} textLength=${result.textLength}`,
360
+ );
361
+
362
+ return result;
363
+ }
364
+
296
365
  private async findAgentBySlug(slug: string): Promise<AiAgentRecord | null> {
297
366
  const result = await this.prismaService.$queryRaw<AiAgentRecord[]>`
298
367
  SELECT id, slug, provider, model, instructions, external_agent_id, created_at, updated_at
@@ -360,7 +429,7 @@ export class AiService {
360
429
  messages.push({ role: 'system', content: systemPrompt });
361
430
  }
362
431
 
363
- const userContent = this.buildOpenAiUserContent(message, attachment);
432
+ const userContent = await this.buildOpenAiUserContent(message, attachment);
364
433
  messages.push({ role: 'user', content: userContent });
365
434
 
366
435
  const response = await axios.post(
@@ -547,6 +616,20 @@ export class AiService {
547
616
  userParts.push({
548
617
  text: `\n\n[Attached file: ${attachment.filename}]\n${this.toUtf8Text(attachment.buffer)}`,
549
618
  });
619
+ } else if (this.isPdfMime(attachment.mimeType)) {
620
+ const pdfText = await this.extractPdfText(attachment.buffer);
621
+ if (pdfText) {
622
+ userParts.push({
623
+ text: `\n\n[Attached file: ${attachment.filename}]\n${pdfText}`,
624
+ });
625
+ } else {
626
+ userParts.push({
627
+ inline_data: {
628
+ mime_type: attachment.mimeType,
629
+ data: attachment.buffer.toString('base64'),
630
+ },
631
+ });
632
+ }
550
633
  } else {
551
634
  userParts.push({
552
635
  inline_data: {
@@ -586,18 +669,26 @@ export class AiService {
586
669
  fileId?: number,
587
670
  ): Promise<AiAttachment | null> {
588
671
  if (uploadFile) {
672
+ const mimeType = this.normalizeAttachmentMimeType(
673
+ uploadFile.mimetype,
674
+ uploadFile.originalname,
675
+ );
589
676
  return {
590
677
  filename: uploadFile.originalname,
591
- mimeType: uploadFile.mimetype,
678
+ mimeType,
592
679
  buffer: uploadFile.buffer,
593
680
  };
594
681
  }
595
682
 
596
683
  if (fileId) {
597
684
  const { file, buffer } = await this.fileService.getBuffer(fileId);
685
+ const mimeType = this.normalizeAttachmentMimeType(
686
+ file.file_mimetype?.name || 'application/octet-stream',
687
+ file.filename,
688
+ );
598
689
  return {
599
690
  filename: file.filename,
600
- mimeType: file.file_mimetype?.name || 'application/octet-stream',
691
+ mimeType,
601
692
  buffer,
602
693
  };
603
694
  }
@@ -605,7 +696,7 @@ export class AiService {
605
696
  return null;
606
697
  }
607
698
 
608
- private buildOpenAiUserContent(
699
+ private async buildOpenAiUserContent(
609
700
  message: string,
610
701
  attachment?: AiAttachment | null,
611
702
  ) {
@@ -621,9 +712,17 @@ export class AiService {
621
712
  ];
622
713
  }
623
714
 
624
- const text = this.isTextMime(attachment.mimeType)
625
- ? this.toUtf8Text(attachment.buffer)
626
- : `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
715
+ let text: string;
716
+
717
+ if (this.isTextMime(attachment.mimeType)) {
718
+ text = this.toUtf8Text(attachment.buffer);
719
+ } else if (this.isPdfMime(attachment.mimeType)) {
720
+ text =
721
+ (await this.extractPdfText(attachment.buffer)) ||
722
+ `[PDF attachment with unreadable text: ${attachment.filename}]`;
723
+ } else {
724
+ text = `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
725
+ }
627
726
 
628
727
  return `${message}\n\n[Attached file: ${attachment.filename}]\n${text}`;
629
728
  }
@@ -640,6 +739,51 @@ export class AiService {
640
739
  );
641
740
  }
642
741
 
742
+ private isPdfMime(mimeType: string) {
743
+ return (
744
+ mimeType === 'application/pdf' ||
745
+ mimeType === 'application/x-pdf' ||
746
+ mimeType.endsWith('/pdf')
747
+ );
748
+ }
749
+
750
+ private normalizeAttachmentMimeType(mimeType: string, filename?: string) {
751
+ const current = (mimeType || '').toLowerCase();
752
+ if (current && current !== 'application/octet-stream') {
753
+ return current;
754
+ }
755
+
756
+ const name = (filename || '').toLowerCase();
757
+
758
+ if (name.endsWith('.pdf')) return 'application/pdf';
759
+ if (name.endsWith('.json')) return 'application/json';
760
+ if (name.endsWith('.xml')) return 'application/xml';
761
+ if (name.endsWith('.txt') || name.endsWith('.csv')) return 'text/plain';
762
+ if (name.endsWith('.png')) return 'image/png';
763
+ if (name.endsWith('.jpg') || name.endsWith('.jpeg')) return 'image/jpeg';
764
+ if (name.endsWith('.webp')) return 'image/webp';
765
+
766
+ return current || 'application/octet-stream';
767
+ }
768
+
769
+ private async extractPdfText(buffer: Buffer) {
770
+ try {
771
+ const result = await pdfParse(buffer);
772
+ const text = (result?.text || '')
773
+ .replace(/\r/g, '')
774
+ .replace(/[ \t]+\n/g, '\n')
775
+ .replace(/\n{3,}/g, '\n\n')
776
+ .trim();
777
+ if (!text) {
778
+ return '';
779
+ }
780
+
781
+ return text.slice(0, 60000);
782
+ } catch {
783
+ return '';
784
+ }
785
+ }
786
+
643
787
  private toUtf8Text(buffer: Buffer) {
644
788
  return buffer.toString('utf8');
645
789
  }