@hed-hog/core 0.0.233 → 0.0.235

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,17 @@ 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
+ }>;
60
72
  private findAgentBySlug;
61
73
  private findAgentById;
62
74
  private getDefaultModel;
@@ -70,6 +82,9 @@ export declare class AiService {
70
82
  private buildOpenAiUserContent;
71
83
  private isImageMime;
72
84
  private isTextMime;
85
+ private isPdfMime;
86
+ private normalizeAttachmentMimeType;
87
+ private extractPdfText;
73
88
  private toUtf8Text;
74
89
  }
75
90
  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;;;;;;;;;;YA+ChD,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,59 @@ 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
+ filename: '',
259
+ mimeType: '',
260
+ bytes: 0,
261
+ mode: 'binary',
262
+ textLength: 0,
263
+ textSample: '',
264
+ sha256: '',
265
+ };
266
+ }
267
+ let mode = 'binary';
268
+ let extractedText = '';
269
+ if (this.isImageMime(attachment.mimeType)) {
270
+ mode = 'image';
271
+ }
272
+ else if (this.isPdfMime(attachment.mimeType)) {
273
+ mode = 'pdf-text';
274
+ extractedText = await this.extractPdfText(attachment.buffer);
275
+ }
276
+ else if (this.isTextMime(attachment.mimeType)) {
277
+ mode = 'text';
278
+ extractedText = this.toUtf8Text(attachment.buffer);
279
+ }
280
+ const result = {
281
+ hasAttachment: true,
282
+ filename: attachment.filename,
283
+ mimeType: attachment.mimeType,
284
+ bytes: attachment.buffer.length,
285
+ mode,
286
+ textLength: extractedText.length,
287
+ textSample: extractedText.slice(0, 600),
288
+ sha256: (0, crypto_1.createHash)('sha256').update(attachment.buffer).digest('hex'),
289
+ };
290
+ this.logger.warn(`[AI-ATTACHMENT-DEBUG] fileId=${fileId || 'upload'} filename="${result.filename}" mime=${result.mimeType} mode=${result.mode} bytes=${result.bytes} textLength=${result.textLength}`);
291
+ return result;
292
+ }
230
293
  async findAgentBySlug(slug) {
231
294
  const result = await this.prismaService.$queryRaw `
232
295
  SELECT id, slug, provider, model, instructions, external_agent_id, created_at, updated_at
@@ -271,7 +334,7 @@ let AiService = class AiService {
271
334
  if (systemPrompt) {
272
335
  messages.push({ role: 'system', content: systemPrompt });
273
336
  }
274
- const userContent = this.buildOpenAiUserContent(message, attachment);
337
+ const userContent = await this.buildOpenAiUserContent(message, attachment);
275
338
  messages.push({ role: 'user', content: userContent });
276
339
  const response = await axios_1.default.post('https://api.openai.com/v1/chat/completions', {
277
340
  model,
@@ -379,6 +442,22 @@ let AiService = class AiService {
379
442
  text: `\n\n[Attached file: ${attachment.filename}]\n${this.toUtf8Text(attachment.buffer)}`,
380
443
  });
381
444
  }
445
+ else if (this.isPdfMime(attachment.mimeType)) {
446
+ const pdfText = await this.extractPdfText(attachment.buffer);
447
+ if (pdfText) {
448
+ userParts.push({
449
+ text: `\n\n[Attached file: ${attachment.filename}]\n${pdfText}`,
450
+ });
451
+ }
452
+ else {
453
+ userParts.push({
454
+ inline_data: {
455
+ mime_type: attachment.mimeType,
456
+ data: attachment.buffer.toString('base64'),
457
+ },
458
+ });
459
+ }
460
+ }
382
461
  else {
383
462
  userParts.push({
384
463
  inline_data: {
@@ -410,23 +489,25 @@ let AiService = class AiService {
410
489
  async resolveAttachment(uploadFile, fileId) {
411
490
  var _a;
412
491
  if (uploadFile) {
492
+ const mimeType = this.normalizeAttachmentMimeType(uploadFile.mimetype, uploadFile.originalname);
413
493
  return {
414
494
  filename: uploadFile.originalname,
415
- mimeType: uploadFile.mimetype,
495
+ mimeType,
416
496
  buffer: uploadFile.buffer,
417
497
  };
418
498
  }
419
499
  if (fileId) {
420
500
  const { file, buffer } = await this.fileService.getBuffer(fileId);
501
+ const mimeType = this.normalizeAttachmentMimeType(((_a = file.file_mimetype) === null || _a === void 0 ? void 0 : _a.name) || 'application/octet-stream', file.filename);
421
502
  return {
422
503
  filename: file.filename,
423
- mimeType: ((_a = file.file_mimetype) === null || _a === void 0 ? void 0 : _a.name) || 'application/octet-stream',
504
+ mimeType,
424
505
  buffer,
425
506
  };
426
507
  }
427
508
  return null;
428
509
  }
429
- buildOpenAiUserContent(message, attachment) {
510
+ async buildOpenAiUserContent(message, attachment) {
430
511
  if (!attachment) {
431
512
  return message;
432
513
  }
@@ -437,9 +518,18 @@ let AiService = class AiService {
437
518
  { type: 'image_url', image_url: { url: dataUri } },
438
519
  ];
439
520
  }
440
- const text = this.isTextMime(attachment.mimeType)
441
- ? this.toUtf8Text(attachment.buffer)
442
- : `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
521
+ let text;
522
+ if (this.isTextMime(attachment.mimeType)) {
523
+ text = this.toUtf8Text(attachment.buffer);
524
+ }
525
+ else if (this.isPdfMime(attachment.mimeType)) {
526
+ text =
527
+ (await this.extractPdfText(attachment.buffer)) ||
528
+ `[PDF attachment with unreadable text: ${attachment.filename}]`;
529
+ }
530
+ else {
531
+ text = `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
532
+ }
443
533
  return `${message}\n\n[Attached file: ${attachment.filename}]\n${text}`;
444
534
  }
445
535
  isImageMime(mimeType) {
@@ -450,12 +540,56 @@ let AiService = class AiService {
450
540
  mimeType === 'application/json' ||
451
541
  mimeType === 'application/xml');
452
542
  }
543
+ isPdfMime(mimeType) {
544
+ return (mimeType === 'application/pdf' ||
545
+ mimeType === 'application/x-pdf' ||
546
+ mimeType.endsWith('/pdf'));
547
+ }
548
+ normalizeAttachmentMimeType(mimeType, filename) {
549
+ const current = (mimeType || '').toLowerCase();
550
+ if (current && current !== 'application/octet-stream') {
551
+ return current;
552
+ }
553
+ const name = (filename || '').toLowerCase();
554
+ if (name.endsWith('.pdf'))
555
+ return 'application/pdf';
556
+ if (name.endsWith('.json'))
557
+ return 'application/json';
558
+ if (name.endsWith('.xml'))
559
+ return 'application/xml';
560
+ if (name.endsWith('.txt') || name.endsWith('.csv'))
561
+ return 'text/plain';
562
+ if (name.endsWith('.png'))
563
+ return 'image/png';
564
+ if (name.endsWith('.jpg') || name.endsWith('.jpeg'))
565
+ return 'image/jpeg';
566
+ if (name.endsWith('.webp'))
567
+ return 'image/webp';
568
+ return current || 'application/octet-stream';
569
+ }
570
+ async extractPdfText(buffer) {
571
+ try {
572
+ const result = await (0, pdf_parse_1.default)(buffer);
573
+ const text = ((result === null || result === void 0 ? void 0 : result.text) || '')
574
+ .replace(/\r/g, '')
575
+ .replace(/[ \t]+\n/g, '\n')
576
+ .replace(/\n{3,}/g, '\n\n')
577
+ .trim();
578
+ if (!text) {
579
+ return '';
580
+ }
581
+ return text.slice(0, 60000);
582
+ }
583
+ catch (_a) {
584
+ return '';
585
+ }
586
+ }
453
587
  toUtf8Text(buffer) {
454
588
  return buffer.toString('utf8');
455
589
  }
456
590
  };
457
591
  exports.AiService = AiService;
458
- exports.AiService = AiService = __decorate([
592
+ exports.AiService = AiService = AiService_1 = __decorate([
459
593
  (0, common_1.Injectable)(),
460
594
  __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
461
595
  __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.235",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "dependencies": {
@@ -23,14 +23,15 @@
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
+ "@hed-hog/api": "0.0.3",
34
35
  "@hed-hog/api-types": "0.0.1",
35
36
  "@hed-hog/api-pagination": "0.0.5",
36
37
  "@hed-hog/api-locale": "0.0.11",
@@ -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,71 @@ 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
+ filename: '',
332
+ mimeType: '',
333
+ bytes: 0,
334
+ mode: 'binary' as const,
335
+ textLength: 0,
336
+ textSample: '',
337
+ sha256: '',
338
+ };
339
+ }
340
+
341
+ let mode: 'image' | 'pdf-text' | 'text' | 'binary' = 'binary';
342
+ let extractedText = '';
343
+
344
+ if (this.isImageMime(attachment.mimeType)) {
345
+ mode = 'image';
346
+ } else if (this.isPdfMime(attachment.mimeType)) {
347
+ mode = 'pdf-text';
348
+ extractedText = await this.extractPdfText(attachment.buffer);
349
+ } else if (this.isTextMime(attachment.mimeType)) {
350
+ mode = 'text';
351
+ extractedText = this.toUtf8Text(attachment.buffer);
352
+ }
353
+
354
+ const result = {
355
+ hasAttachment: true,
356
+ filename: attachment.filename,
357
+ mimeType: attachment.mimeType,
358
+ bytes: attachment.buffer.length,
359
+ mode,
360
+ textLength: extractedText.length,
361
+ textSample: extractedText.slice(0, 600),
362
+ sha256: createHash('sha256').update(attachment.buffer).digest('hex'),
363
+ };
364
+
365
+ this.logger.warn(
366
+ `[AI-ATTACHMENT-DEBUG] fileId=${fileId || 'upload'} filename="${result.filename}" mime=${result.mimeType} mode=${result.mode} bytes=${result.bytes} textLength=${result.textLength}`,
367
+ );
368
+
369
+ return result;
370
+ }
371
+
296
372
  private async findAgentBySlug(slug: string): Promise<AiAgentRecord | null> {
297
373
  const result = await this.prismaService.$queryRaw<AiAgentRecord[]>`
298
374
  SELECT id, slug, provider, model, instructions, external_agent_id, created_at, updated_at
@@ -360,7 +436,7 @@ export class AiService {
360
436
  messages.push({ role: 'system', content: systemPrompt });
361
437
  }
362
438
 
363
- const userContent = this.buildOpenAiUserContent(message, attachment);
439
+ const userContent = await this.buildOpenAiUserContent(message, attachment);
364
440
  messages.push({ role: 'user', content: userContent });
365
441
 
366
442
  const response = await axios.post(
@@ -547,6 +623,20 @@ export class AiService {
547
623
  userParts.push({
548
624
  text: `\n\n[Attached file: ${attachment.filename}]\n${this.toUtf8Text(attachment.buffer)}`,
549
625
  });
626
+ } else if (this.isPdfMime(attachment.mimeType)) {
627
+ const pdfText = await this.extractPdfText(attachment.buffer);
628
+ if (pdfText) {
629
+ userParts.push({
630
+ text: `\n\n[Attached file: ${attachment.filename}]\n${pdfText}`,
631
+ });
632
+ } else {
633
+ userParts.push({
634
+ inline_data: {
635
+ mime_type: attachment.mimeType,
636
+ data: attachment.buffer.toString('base64'),
637
+ },
638
+ });
639
+ }
550
640
  } else {
551
641
  userParts.push({
552
642
  inline_data: {
@@ -586,18 +676,26 @@ export class AiService {
586
676
  fileId?: number,
587
677
  ): Promise<AiAttachment | null> {
588
678
  if (uploadFile) {
679
+ const mimeType = this.normalizeAttachmentMimeType(
680
+ uploadFile.mimetype,
681
+ uploadFile.originalname,
682
+ );
589
683
  return {
590
684
  filename: uploadFile.originalname,
591
- mimeType: uploadFile.mimetype,
685
+ mimeType,
592
686
  buffer: uploadFile.buffer,
593
687
  };
594
688
  }
595
689
 
596
690
  if (fileId) {
597
691
  const { file, buffer } = await this.fileService.getBuffer(fileId);
692
+ const mimeType = this.normalizeAttachmentMimeType(
693
+ file.file_mimetype?.name || 'application/octet-stream',
694
+ file.filename,
695
+ );
598
696
  return {
599
697
  filename: file.filename,
600
- mimeType: file.file_mimetype?.name || 'application/octet-stream',
698
+ mimeType,
601
699
  buffer,
602
700
  };
603
701
  }
@@ -605,7 +703,7 @@ export class AiService {
605
703
  return null;
606
704
  }
607
705
 
608
- private buildOpenAiUserContent(
706
+ private async buildOpenAiUserContent(
609
707
  message: string,
610
708
  attachment?: AiAttachment | null,
611
709
  ) {
@@ -621,9 +719,17 @@ export class AiService {
621
719
  ];
622
720
  }
623
721
 
624
- const text = this.isTextMime(attachment.mimeType)
625
- ? this.toUtf8Text(attachment.buffer)
626
- : `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
722
+ let text: string;
723
+
724
+ if (this.isTextMime(attachment.mimeType)) {
725
+ text = this.toUtf8Text(attachment.buffer);
726
+ } else if (this.isPdfMime(attachment.mimeType)) {
727
+ text =
728
+ (await this.extractPdfText(attachment.buffer)) ||
729
+ `[PDF attachment with unreadable text: ${attachment.filename}]`;
730
+ } else {
731
+ text = `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
732
+ }
627
733
 
628
734
  return `${message}\n\n[Attached file: ${attachment.filename}]\n${text}`;
629
735
  }
@@ -640,6 +746,51 @@ export class AiService {
640
746
  );
641
747
  }
642
748
 
749
+ private isPdfMime(mimeType: string) {
750
+ return (
751
+ mimeType === 'application/pdf' ||
752
+ mimeType === 'application/x-pdf' ||
753
+ mimeType.endsWith('/pdf')
754
+ );
755
+ }
756
+
757
+ private normalizeAttachmentMimeType(mimeType: string, filename?: string) {
758
+ const current = (mimeType || '').toLowerCase();
759
+ if (current && current !== 'application/octet-stream') {
760
+ return current;
761
+ }
762
+
763
+ const name = (filename || '').toLowerCase();
764
+
765
+ if (name.endsWith('.pdf')) return 'application/pdf';
766
+ if (name.endsWith('.json')) return 'application/json';
767
+ if (name.endsWith('.xml')) return 'application/xml';
768
+ if (name.endsWith('.txt') || name.endsWith('.csv')) return 'text/plain';
769
+ if (name.endsWith('.png')) return 'image/png';
770
+ if (name.endsWith('.jpg') || name.endsWith('.jpeg')) return 'image/jpeg';
771
+ if (name.endsWith('.webp')) return 'image/webp';
772
+
773
+ return current || 'application/octet-stream';
774
+ }
775
+
776
+ private async extractPdfText(buffer: Buffer) {
777
+ try {
778
+ const result = await pdfParse(buffer);
779
+ const text = (result?.text || '')
780
+ .replace(/\r/g, '')
781
+ .replace(/[ \t]+\n/g, '\n')
782
+ .replace(/\n{3,}/g, '\n\n')
783
+ .trim();
784
+ if (!text) {
785
+ return '';
786
+ }
787
+
788
+ return text.slice(0, 60000);
789
+ } catch {
790
+ return '';
791
+ }
792
+ }
793
+
643
794
  private toUtf8Text(buffer: Buffer) {
644
795
  return buffer.toString('utf8');
645
796
  }