@mate-academy/llm-gateway 2.2.3-canary.7 → 2.2.3-canary.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/dist/providers/OpenAI/services/OpenAISpeechToText.service.js +5 -0
  2. package/dist/providers/OpenAI/services/OpenAISpeechToText.service.js.map +1 -1
  3. package/package.json +1 -1
  4. package/dist/tests/helpers.d.ts +0 -20
  5. package/dist/tests/helpers.js +0 -1
  6. package/dist/tests/helpers.js.map +0 -1
  7. package/dist/tests/integration/LLMAssistance.service.integration.test.d.ts +0 -1
  8. package/dist/tests/integration/LLMAssistance.service.integration.test.js +0 -1
  9. package/dist/tests/integration/LLMAssistance.service.integration.test.js.map +0 -1
  10. package/dist/tests/integration/LLMCompletion.service.integration.test.d.ts +0 -1
  11. package/dist/tests/integration/LLMCompletion.service.integration.test.js +0 -1
  12. package/dist/tests/integration/LLMCompletion.service.integration.test.js.map +0 -1
  13. package/dist/tests/integration/LLMSpeechToText.service.integration.test.d.ts +0 -1
  14. package/dist/tests/integration/LLMSpeechToText.service.integration.test.js +0 -1
  15. package/dist/tests/integration/LLMSpeechToText.service.integration.test.js.map +0 -1
  16. package/dist/tests/integration/LLMTextToSpeech.service.integration.test.d.ts +0 -1
  17. package/dist/tests/integration/LLMTextToSpeech.service.integration.test.js +0 -1
  18. package/dist/tests/integration/LLMTextToSpeech.service.integration.test.js.map +0 -1
  19. package/dist/tests/setup.d.ts +0 -1
  20. package/dist/tests/setup.js +0 -1
  21. package/dist/tests/setup.js.map +0 -1
  22. package/dist/tests/unit/promptBuilder.test.d.ts +0 -1
  23. package/dist/tests/unit/promptBuilder.test.js +0 -1
  24. package/dist/tests/unit/promptBuilder.test.js.map +0 -1
@@ -25,7 +25,9 @@ class OpenAISpeechToTextService extends services_1.LLMSpeechToTextService {
25
25
  try {
26
26
  const { model, pathToAudio, mimeType, abortSignal, } = options;
27
27
  const { maxFileSize, supportedMimeTypes, } = OpenAI_entity_1.OpenAIEntity.transcribeLimits;
28
+ console.log(`Transcribing audio file:`, options);
28
29
  const fileSize = (0, fs_1.statSync)(pathToAudio).size;
30
+ console.log(`Transcribing audio file `, fileSize, 'bytes');
29
31
  if (fileSize > maxFileSize) {
30
32
  throw new Error(`File size exceeds the limit of ${maxFileSize} bytes`);
31
33
  }
@@ -34,6 +36,7 @@ class OpenAISpeechToTextService extends services_1.LLMSpeechToTextService {
34
36
  throw new Error(`Unsupported audio file type: ${resolvedMimeType}. Supported types are: ${supportedMimeTypes.join(', ')}`);
35
37
  }
36
38
  const audioFileStream = (0, fs_1.createReadStream)(pathToAudio, { signal: abortSignal });
39
+ console.log(`Transcribing audio file`, audioFileStream);
37
40
  const response = await this.instance.audio.transcriptions.create({
38
41
  model: model.name,
39
42
  file: audioFileStream,
@@ -42,9 +45,11 @@ class OpenAISpeechToTextService extends services_1.LLMSpeechToTextService {
42
45
  }, {
43
46
  signal: abortSignal,
44
47
  });
48
+ console.log(`Transcription response:`, response);
45
49
  return { text: response.text };
46
50
  }
47
51
  catch (error) {
52
+ console.log('Error during transcription:', error);
48
53
  this.logger
49
54
  .child('transcribe')
50
55
  .error('Error transcribing audio', {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAISpeechToText.service.js","sourceRoot":"","sources":["../../../../src/providers/OpenAI/services/OpenAISpeechToText.service.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAgD;AAEhD,mCAAgC;AAChC,+DAK+B;AAC/B,yCAAoD;AACpD,oEAAgE;AAChE,4DAA8B;AAE9B,MAAa,yBACX,SAAQ,iCAA2C;IACnD,SAAS,GAAkB,IAAI,CAAC;IAEhC,YACE,MAAc,EACd,OAAgD;QAEhD,KAAK,CAAC,kCAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAU,CACd,OAAmD;QAEnD,IAAI,CAAC;YACH,MAAM,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,GAAG,OAAO,CAAC;YAEZ,MAAM,EACJ,WAAW,EACX,kBAAkB,GACnB,GAAG,4BAAY,CAAC,gBAAgB,CAAC;YAElC,MAAM,QAAQ,GAAG,IAAA,aAAQ,EAAC,WAAW,CAAC,CAAC,IAAI,CAAC;YAE5C,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,QAAQ,CACtD,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,QAAQ,IAAI,oBAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAE9D,IAAI,CAAC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAuB,CAAC,EAAE,CAAC;gBAC/E,MAAM,IAAI,KAAK,CACb,gCAAgC,gBAAgB,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1G,CAAC;YACJ,CAAC;YAED,MAAM,eAAe,GAAG,IAAA,qBAAgB,EAAC,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAE/E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC/D,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,eAAe;gBACrB,eAAe,EAAE,MAAM;gBACvB,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW;aACvC,EAAE;gBACD,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM;iBACR,KAAK,CAAC,YAAY,CAAC;iBACnB,KAAK,CAAC,0BAA0B,EAAE;gBACjC,KAAK;gBACL,OAAO;aACR,CAAC,CAAC;YAEL,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AA1ED,8DA0EC"}
1
+ {"version":3,"file":"OpenAISpeechToText.service.js","sourceRoot":"","sources":["../../../../src/providers/OpenAI/services/OpenAISpeechToText.service.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAgD;AAEhD,mCAAgC;AAChC,+DAK+B;AAC/B,yCAAoD;AACpD,oEAAgE;AAChE,4DAA8B;AAE9B,MAAa,yBACX,SAAQ,iCAA2C;IACnD,SAAS,GAAkB,IAAI,CAAC;IAEhC,YACE,MAAc,EACd,OAAgD;QAEhD,KAAK,CAAC,kCAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAU,CACd,OAAmD;QAEnD,IAAI,CAAC;YACH,MAAM,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,GAAG,OAAO,CAAC;YAEZ,MAAM,EACJ,WAAW,EACX,kBAAkB,GACnB,GAAG,4BAAY,CAAC,gBAAgB,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;YAEjD,MAAM,QAAQ,GAAG,IAAA,aAAQ,EAAC,WAAW,CAAC,CAAC,IAAI,CAAC;YAE5C,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE3D,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,QAAQ,CACtD,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,QAAQ,IAAI,oBAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAE9D,IAAI,CAAC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAuB,CAAC,EAAE,CAAC;gBAC/E,MAAM,IAAI,KAAK,CACb,gCAAgC,gBAAgB,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1G,CAAC;YACJ,CAAC;YAED,MAAM,eAAe,GAAG,IAAA,qBAAgB,EAAC,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAE/E,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC/D,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,eAAe;gBACrB,eAAe,EAAE,MAAM;gBACvB,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW;aACvC,EAAE;gBACD,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;YAEjD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YAElD,IAAI,CAAC,MAAM;iBACR,KAAK,CAAC,YAAY,CAAC;iBACnB,KAAK,CAAC,0BAA0B,EAAE;gBACjC,KAAK;gBACL,OAAO;aACR,CAAC,CAAC;YAEL,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AApFD,8DAoFC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mate-academy/llm-gateway",
3
- "version": "2.2.3-canary.7",
3
+ "version": "2.2.3-canary.8",
4
4
  "description": "A gateway package for LLM services.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,20 +0,0 @@
1
- import { LLMProviders, type LLMInstanceOptions, type LLMProviderAvailableModels, type LLMPurposes } from '../LLMService.typedefs';
2
- import type { Logger } from '@mate-academy/core';
3
- export declare const mockLogger: Logger;
4
- type TestConfig = {
5
- [Provider in LLMProviders]: {
6
- provider: Provider;
7
- availableModels: Partial<LLMProviderAvailableModels<Provider>>;
8
- clientOptions: LLMInstanceOptions[Provider];
9
- requireCredentials: () => void;
10
- isEnabled: boolean;
11
- };
12
- };
13
- export declare const resolveTestConfig: (purpose: LLMPurposes) => TestConfig;
14
- export declare const hasText: (result: any) => result is {
15
- text: string;
16
- };
17
- export declare const hasError: (result: any) => result is {
18
- error: any;
19
- };
20
- export {};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.hasError=exports.hasText=exports.resolveTestConfig=exports.mockLogger=void 0;const LLMService_typedefs_1=require("../LLMService.typedefs"),providers_1=require("../providers"),globals_1=require("@jest/globals");function hasOpenAICredentials(){return!!(process.env.OPENAI_SECRET_API_KEY&&"OPENAI_SECRET_API_KEY"!==process.env.OPENAI_SECRET_API_KEY&&process.env.OPENAI_SECRET_API_KEY.length>10)}function hasGoogleAICredentials(){return!!(process.env.GOOGLE_GENERATIVE_AI_API_KEY&&"GOOGLE_GENERATIVE_AI_API_KEY"!==process.env.GOOGLE_GENERATIVE_AI_API_KEY&&process.env.GOOGLE_GENERATIVE_AI_API_KEY.length>10)}function requireOpenAICredentials(){if(!hasOpenAICredentials())throw new Error("OpenAI credentials required for integration tests. Please set OPENAI_SECRET_API_KEY environment variable. You can find the proper keys in .env.file.sample")}function requireGoogleAICredentials(){if(!hasGoogleAICredentials())throw new Error("Google Generative AI credentials required for integration tests. Please set GOOGLE_GENERATIVE_AI_API_KEY environment variable. You can find the proper keys in .env.file.sample")}const ENABLE_LOGGING="true"===process.env.ENABLE_LOGGING;exports.mockLogger={info:globals_1.jest.fn((e,r)=>ENABLE_LOGGING&&console.log("[INFO]",e,r)),error:globals_1.jest.fn((e,r)=>ENABLE_LOGGING&&console.log("[ERROR]",e,r)),warn:globals_1.jest.fn((e,r)=>ENABLE_LOGGING&&console.log("[WARN]",e,r)),debug:globals_1.jest.fn((e,r)=>ENABLE_LOGGING&&console.log("[DEBUG]",e,r)),child:globals_1.jest.fn(()=>exports.mockLogger)};const resolveTestConfig=e=>({[LLMService_typedefs_1.LLMProviders.OpenAI]:{provider:LLMService_typedefs_1.LLMProviders.OpenAI,availableModels:providers_1.OPEN_AI_MODELS[e],clientOptions:{apiKey:process.env.OPENAI_SECRET_API_KEY,organization:process.env.OPENAI_ORG_ID,baseURL:process.env.OPENAI_BASE_URL},requireCredentials:requireOpenAICredentials,isEnabled:!0},[LLMService_typedefs_1.LLMProviders.GoogleGenerativeAI]:{provider:LLMService_typedefs_1.LLMProviders.GoogleGenerativeAI,availableModels:providers_1.GOOGLE_AI_MODELS[e],clientOptions:{apiKey:process.env.GOOGLE_GENERATIVE_AI_API_KEY},requireCredentials:requireGoogleAICredentials,isEnabled:!1}});exports.resolveTestConfig=resolveTestConfig;const hasText=e=>"text"in e;exports.hasText=hasText;const hasError=e=>"error"in e;exports.hasError=hasError;
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tests/helpers.ts"],"names":[],"mappings":";;;AAAA,+DAK+B;AAC/B,2CAA+D;AAC/D,2CAAqC;AAGrC;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,uBAAuB;QAC7D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,GAAG,EAAE,CAAC;IAEhD,OAAO,CAAC,CAAC,YAAY,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB;IAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B;QAC7D,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,8BAA8B;QAC3E,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,MAAM,GAAG,EAAE,CAAC;IAEvD,OAAO,CAAC,CAAC,cAAc,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB;IAC/B,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,qDAAqD;YACrD,yDAAyD;YACzD,kDAAkD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B;IACjC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,mEAAmE;YACnE,gEAAgE;YAChE,kDAAkD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;AAEhD,QAAA,UAAU,GAAG;IACxB,IAAI,EAAE,cAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxF,KAAK,EAAE,cAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1F,IAAI,EAAE,cAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxF,KAAK,EAAE,cAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1F,KAAK,EAAE,cAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,kBAAU,CAAC;CACZ,CAAC;AAYhB,MAAM,iBAAiB,GAAyC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC,kCAAY,CAAC,MAAM,CAAC,EAAE;QACrB,QAAQ,EAAE,kCAAY,CAAC,MAAM;QAC7B,eAAe,EAAE,0BAAc,CAAC,OAAO,CAAC;QACxC,aAAa,EAAE;YACb,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAsB;YAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;YACvC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;SACrC;QACD,kBAAkB,EAAE,wBAAwB;QAC5C,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,kCAAY,CAAC,kBAAkB,CAAC,EAAE;QACjC,QAAQ,EAAE,kCAAY,CAAC,kBAAkB;QACzC,eAAe,EAAE,4BAAgB,CAAC,OAAO,CAAC;QAC1C,aAAa,EAAE;YACb,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA6B;SAClD;QACD,kBAAkB,EAAE,0BAA0B;QAC9C,SAAS,EAAE,KAAK;KACjB;CACF,CAAC,CAAC;AArBU,QAAA,iBAAiB,qBAqB3B;AAEI,MAAM,OAAO,GAAG,CAAC,MAAW,EAA8B,EAAE;IACjE,OAAO,MAAM,IAAI,MAAM,CAAC;AAC1B,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEK,MAAM,QAAQ,GAAG,CAAC,MAAW,EAA4B,EAAE;IAChE,OAAO,OAAO,IAAI,MAAM,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB"}
@@ -1 +0,0 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const globals_1=require("@jest/globals"),index_1=require("../../index"),helpers_1=require("../../tests/helpers"),fs_1=require("fs"),path_1=require("path"),os_1=require("os"),axios_1=__importDefault(require("axios")),testConfig=(0,helpers_1.resolveTestConfig)(index_1.LLMPurposes.Assistance);(0,globals_1.describe)("LLM Assistance Service",()=>{Object.values(testConfig).forEach(e=>{const{provider:t,availableModels:s,clientOptions:a,requireCredentials:o,isEnabled:i}=e;i?(0,globals_1.describe)(`${t} Provider`,()=>{let e;(0,globals_1.beforeAll)(()=>{o(),e=index_1.LLMServiceFactory.getAssistanceService(t,helpers_1.mockLogger,a)}),(0,globals_1.beforeEach)(()=>{globals_1.jest.clearAllMocks()}),(0,globals_1.describe)("Service Initialization",()=>{(0,globals_1.it)("should create assistance service instance",()=>{(0,globals_1.expect)(e).toBeDefined(),(0,globals_1.expect)(e.provider).toBe(t)})}),Object.values(s).forEach(a=>{const o=a.name;(0,globals_1.describe)(`Model: ${o}`,()=>{const a=s[o];(0,globals_1.describe)("File Management",()=>{(0,globals_1.it)("should upload a text file successfully",async()=>{const t="This is a test file content for LLM assistance integration tests.",s=(0,os_1.tmpdir)(),a=(0,path_1.join)(s,`test-file-${Date.now()}.txt`);(0,fs_1.writeFileSync)(a,t);const o={name:"test-file.txt",path:a,mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:t};let i;try{i=await e.uploadFile(o),(0,globals_1.expect)((0,helpers_1.hasError)(i)).toBe(!1),(0,helpers_1.hasError)(i)||((0,globals_1.expect)(i.fileId).toBeDefined(),(0,globals_1.expect)(i.name).toBe(o.name),(0,globals_1.expect)(i.mimeType).toBe(o.mimeType))}finally{(0,fs_1.unlinkSync)(a)}}),(0,globals_1.it)("should handle file upload errors gracefully",async()=>{const t={name:"invalid-file.txt",path:"",mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:"test content"},s=await e.uploadFile(t);(0,globals_1.expect)(s).toBeDefined(),(0,helpers_1.hasError)(s)&&(0,globals_1.expect)(s.error).toBeDefined()})}),(0,globals_1.describe)("File Storage Management",()=>{(0,globals_1.it)("should create file storage with uploaded files",async()=>{const t="Content for file storage test.",s=(0,os_1.tmpdir)(),o=(0,path_1.join)(s,`storage-test-file-${Date.now()}.txt`);(0,fs_1.writeFileSync)(o,t);const i={name:"storage-test-file.txt",path:o,mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:t};let r;try{if(r=await e.uploadFile(i),(0,helpers_1.hasError)(r))throw new Error('File upload failed in "should create file storage with uploaded files"');{const t=await e.createFileStorage({uploadedFiles:[r],model:a,instructions:"Test instructions with files"});(0,globals_1.expect)((0,helpers_1.hasError)(t)).toBe(!1),(0,helpers_1.hasError)(t)||(0,globals_1.expect)(t.storageId).toBeDefined()}}finally{(0,fs_1.unlinkSync)(o)}})}),(0,globals_1.describe)("Assistant Management",()=>{(0,globals_1.it)("should create an assistant successfully",async()=>{const t=await e.createFileStorage({uploadedFiles:[],model:a,instructions:"Base instructions for assistant"});if(!(0,helpers_1.hasError)(t)){const s=await e.createAssistant({model:a,instructions:"You are a helpful assistant for testing purposes.",storageIds:[t.storageId]});(0,globals_1.expect)((0,helpers_1.hasError)(s)).toBe(!1),(0,helpers_1.hasError)(s)||(0,globals_1.expect)(s.assistantId).toBeDefined()}}),(0,globals_1.it)("should create an assistant without storage",async()=>{const t=await e.createAssistant({model:a,instructions:"You are a simple assistant without file storage."});(0,globals_1.expect)((0,helpers_1.hasError)(t)).toBe(!1),(0,helpers_1.hasError)(t)||(0,globals_1.expect)(t.assistantId).toBeDefined()}),(0,globals_1.it)("should create an assistant with a custom name",async()=>{const t=await e.createAssistant({model:a,instructions:"You are a named assistant for testing.",name:"Test Assistant With Name"});(0,globals_1.expect)((0,helpers_1.hasError)(t)).toBe(!1),(0,helpers_1.hasError)(t)||(0,globals_1.expect)(t.assistantId).toBeDefined()})}),(0,globals_1.describe)("Chat Management",()=>{(0,globals_1.it)("should create a chat successfully",async()=>{const t=await e.createChat({model:a,instructions:"Chat instructions for testing"});(0,globals_1.expect)((0,helpers_1.hasError)(t)).toBe(!1),(0,helpers_1.hasError)(t)||(0,globals_1.expect)(t.chatId).toBeDefined()}),(0,globals_1.it)("should create a chat with file storage",async()=>{const t=await e.createFileStorage({uploadedFiles:[],model:a,instructions:"Storage for chat test"});if(!(0,helpers_1.hasError)(t)){const s=await e.createChat({model:a,instructions:"Chat with file storage",storageId:t.storageId});(0,globals_1.expect)((0,helpers_1.hasError)(s)).toBe(!1),(0,helpers_1.hasError)(s)||(0,globals_1.expect)(s.chatId).toBeDefined()}}),(0,globals_1.it)("should create a chat with structured message history",async()=>{const t=await e.createChat({model:a,instructions:"Chat with message history",history:[{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Hello, I am starting a conversation."}]},{role:index_1.LLMRoles.Assistant,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Hello! How can I help you today?"}]}]});(0,helpers_1.hasError)(t)&&console.error("Chat creation with structured history failed:",t),(0,globals_1.expect)((0,helpers_1.hasError)(t)).toBe(!1),(0,helpers_1.hasError)(t)||(0,globals_1.expect)(t.chatId).toBeDefined()}),(0,globals_1.it)("should create a chat with mixed content in history",async()=>{const t=await e.createChat({model:a,instructions:"Chat with mixed content history",history:[{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Please analyze this image."},{type:index_1.LLMMessageContentType.IMAGE_URL,image_url:{url:"https://dev-media.mate.academy/llm-gateway-test-image.png"}}]},{role:index_1.LLMRoles.Assistant,content:[{type:index_1.LLMMessageContentType.TEXT,text:"I can see the image with learning content."}]}]});(0,helpers_1.hasError)(t)&&console.error("Chat creation with mixed content history failed:",t),(0,globals_1.expect)((0,helpers_1.hasError)(t)).toBe(!1),(0,helpers_1.hasError)(t)||(0,globals_1.expect)(t.chatId).toBeDefined()})}),(0,globals_1.describe)("Chat Assistance",()=>{(0,globals_1.it)("should assist in chat with simple message",async()=>{const t=await e.createAssistant({model:a,instructions:'You are a test assistant. Respond with "TEST SUCCESS" to any message. No other text is allowed.'});if(!(0,helpers_1.hasError)(t)){const s=await e.createChat({model:a,instructions:'You are a test assistant. Respond with "TEST SUCCESS" to any message. No other text is allowed.'});if(!(0,helpers_1.hasError)(s)){const a=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:'Hello, this is a test message. Please respond with "TEST SUCCESS".'}]},chatId:s.chatId,assistantId:t.assistantId});(0,globals_1.expect)((0,helpers_1.hasText)(a)).toBe(!0),(0,helpers_1.hasText)(a)&&(0,globals_1.expect)(a.text).toMatch(/test success/i)}}}),(0,globals_1.it)("should handle multiple messages in conversation",async()=>{const t=await e.createAssistant({model:a,instructions:"You are a helpful assistant. Keep responses concise."});if(!(0,helpers_1.hasError)(t)){const s=await e.createChat({model:a,instructions:"Conversational test chat"});if(!(0,helpers_1.hasError)(s)){const a=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"My name is Test User."}]},chatId:s.chatId,assistantId:t.assistantId});if((0,globals_1.expect)((0,helpers_1.hasText)(a)).toBe(!0),(0,helpers_1.hasText)(a)){(0,globals_1.expect)(a.text).toBeDefined();const o=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"What is my name?"}]},chatId:s.chatId,assistantId:t.assistantId});(0,globals_1.expect)((0,helpers_1.hasText)(o)).toBe(!0),(0,helpers_1.hasText)(o)&&(0,globals_1.expect)(o.text).toMatch(/test[\s]*user/i)}}}},12e4),(0,globals_1.it)("should assist with file-based context",async()=>{const t="ASSISTANT_TEST_123",s=`This file contains important information: The secret code is ${t}.`,o=(0,os_1.tmpdir)(),i=(0,path_1.join)(o,`context-file-${Date.now()}.txt`);(0,fs_1.writeFileSync)(i,s);const r={name:"context-file.txt",path:i,mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:s};let n;try{if(n=await e.uploadFile(r),(0,helpers_1.hasError)(n))throw new Error('File upload failed in "should assist with file-based context"');{const s=await e.createFileStorage({uploadedFiles:[n],model:a,instructions:"Use the uploaded files to answer questions"});if((0,helpers_1.hasError)(s))throw new Error('File storage creation failed in "should assist with file-based context"');{const o=await e.createAssistant({model:a,instructions:"You are an assistant that can access uploaded files. Use the file content to answer questions.",storageIds:[s.storageId]});if((0,helpers_1.hasError)(o))throw new Error('Assistant creation failed in "should assist with file-based context"');{const i=await e.createChat({model:a,instructions:"Chat with file context",storageId:s.storageId});if((0,helpers_1.hasError)(i))throw console.error("Chat creation error:",i),new Error(`Chat creation failed in "should assist with file-based context": ${JSON.stringify(i)}`);{const s=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"What is the secret code mentioned in the uploaded file?"}]},chatId:i.chatId,assistantId:o.assistantId});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(new RegExp(t,"i"))}}}}}finally{(0,fs_1.unlinkSync)(i)}},12e4),t!==index_1.LLMProviders.OpenAI&&(0,globals_1.it)("should handle attachments in assistance messages",async()=>{const t=Math.floor(1e3*Math.random()),s=`Test attachment: ATTACHMENT_CONTENT_TEST_${t}`,o=(0,os_1.tmpdir)(),i=(0,path_1.join)(o,`attachment-test-${Date.now()}.txt`);(0,fs_1.writeFileSync)(i,s);const r={name:"attachment-test.txt",path:i,mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:s};let n;try{if(n=await e.uploadFile(r),(0,helpers_1.hasError)(n))throw new Error('File upload failed in "should handle attachments in assistance messages"');{const s=await e.createAssistant({model:a,instructions:"You can process file attachments. Read the content and respond accordingly."});if((0,helpers_1.hasError)(s))throw new Error('Assistant creation failed in "should handle attachments in assistance messages"');{const o=await e.createChat({model:a,instructions:"Chat with attachment capabilities"});if((0,helpers_1.hasError)(o))throw console.error("Chat creation error:",o),new Error(`Chat creation failed in "should handle attachments in assistance messages": ${JSON.stringify(o)}`);{const a=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Please read the attached file and tell me what test content it contains. Your response should include number in the attachment."}],attachments:[n]},chatId:o.chatId,assistantId:s.assistantId});(0,globals_1.expect)((0,helpers_1.hasText)(a)).toBe(!0),(0,helpers_1.hasText)(a)&&(0,globals_1.expect)(a.text).toMatch(new RegExp(t.toString(),"i"))}}}}finally{(0,fs_1.unlinkSync)(i)}},12e4),t===index_1.LLMProviders.OpenAI&&(0,globals_1.it)("should assist in chat with image file",async()=>{const t=await axios_1.default.get("https://dev-media.mate.academy/llm-gateway-test-image.png",{responseType:"arraybuffer"}),s=(0,os_1.tmpdir)(),o=(0,path_1.join)(s,`image-test-${Date.now()}.png`);(0,fs_1.writeFileSync)(o,t.data);const i={name:"image-test.png",path:o,mimeType:index_1.LLMUploadFileMimeTypes.IMAGE_PNG};let r;try{if(r=await e.uploadFile(i),(0,helpers_1.hasError)(r))throw new Error('File upload failed in "should assist in chat with image file"');{const t=await e.createAssistant({model:a,instructions:"You can analyze images. Respond with text written in the image."});if((0,helpers_1.hasError)(t))throw new Error('Assistant creation failed in "should assist in chat with image file"');{const s=await e.createChat({model:a,instructions:"Chat with image analysis capabilities. Assist with image content. Respond with text from the image.",files:[r]});if((0,helpers_1.hasError)(s))throw new Error(`Chat creation failed in "should assist in chat with image file": ${JSON.stringify(s)}`);{const a=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"What text do you see in the image?"}]},chatId:s.chatId,assistantId:t.assistantId});(0,globals_1.expect)((0,helpers_1.hasText)(a)).toBe(!0),(0,helpers_1.hasText)(a)&&(0,globals_1.expect)(a.text).toMatch(/learn/i)}}}}finally{(0,fs_1.unlinkSync)(o)}})}),(0,globals_1.describe)("Error Handling",()=>{(0,globals_1.it)("should handle invalid chat ID gracefully",async()=>{const t=await e.createAssistant({model:a,instructions:"Test assistant"});if((0,helpers_1.hasError)(t))throw new Error("Assistant creation failed");{const s=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Test message"}]},chatId:"invalid-chat-id",assistantId:t.assistantId});(0,globals_1.expect)((0,helpers_1.hasError)(s)).toBe(!0)}}),t===index_1.LLMProviders.OpenAI&&(0,globals_1.it)("should handle invalid assistant ID gracefully",async()=>{const t=await e.createChat({model:a,instructions:"Test chat"});if((0,helpers_1.hasError)(t))throw new Error("Chat creation failed");{const s=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Test message"}]},chatId:t.chatId,assistantId:"invalid-assistant-id"});(0,globals_1.expect)((0,helpers_1.hasError)(s)).toBe(!0)}})}),(0,globals_1.describe)("Abort signal handling",()=>{let t,s;(0,globals_1.beforeEach)(()=>{t=new AbortController,s=t.signal}),(0,globals_1.it)("should abort file upload when signal is aborted",async()=>{const a="Content for aborted file upload test.",o=(0,os_1.tmpdir)(),i=(0,path_1.join)(o,`storage-test-file-${Date.now()}.txt`);(0,fs_1.writeFileSync)(i,a);const r={name:"storage-test-file.txt",path:i,mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:a,abortSignal:s};try{t.abort();const s=await e.uploadFile(r);(0,globals_1.expect)((0,helpers_1.hasError)(s)).toBe(!0),(0,helpers_1.hasError)(s)&&(0,globals_1.expect)(s.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))}finally{(0,fs_1.unlinkSync)(i)}}),(0,globals_1.it)("should abort file storage creation when signal is aborted",async()=>{const o="Content for aborted file storage test.",i=(0,os_1.tmpdir)(),r=(0,path_1.join)(i,`storage-test-file-${Date.now()}.txt`);(0,fs_1.writeFileSync)(r,o);const n={name:"storage-test-file.txt",path:r,mimeType:index_1.LLMUploadFileMimeTypes.PLAIN_TEXT,content:o};let l;try{if(l=await e.uploadFile(n),(0,helpers_1.hasError)(l))throw new Error('File upload failed in "should abort file storage creation when signal is aborted"');{t.abort();const o=await e.createFileStorage({uploadedFiles:[l],model:a,instructions:"Test instructions for aborted file storage",abortSignal:s});(0,globals_1.expect)((0,helpers_1.hasError)(o)).toBe(!0),(0,helpers_1.hasError)(o)&&(0,globals_1.expect)(o.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))}}finally{(0,fs_1.unlinkSync)(r)}}),(0,globals_1.it)("should abort assistant creation when signal is aborted",async()=>{t.abort();const o=await e.createAssistant({model:a,instructions:"You are a test assistant.",abortSignal:s});(0,globals_1.expect)((0,helpers_1.hasError)(o)).toBe(!0),(0,helpers_1.hasError)(o)&&(0,globals_1.expect)(o.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))}),(0,globals_1.it)("should abort chat creation when signal is aborted",async()=>{t.abort();const o=await e.createChat({model:a,instructions:"You are a test chat.",abortSignal:s});(0,globals_1.expect)((0,helpers_1.hasError)(o)).toBe(!0),(0,helpers_1.hasError)(o)&&(0,globals_1.expect)(o.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))}),(0,globals_1.it)("should abort assistance in chat when signal is aborted",async()=>{const o=await e.createAssistant({model:a,instructions:"You are a test assistant."});if((0,helpers_1.hasError)(o))throw new Error('Assistant creation failed in "should abort assistance in chat when signal is aborted"');{const i=await e.createChat({model:a,instructions:"You are a test chat."});if((0,helpers_1.hasError)(i))throw new Error('Chat creation failed in "should abort assistance in chat when signal is aborted"');{t.abort();const a=await e.assistInChat({message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"This message should be aborted."}]},chatId:i.chatId,assistantId:o.assistantId,abortSignal:s});(0,globals_1.expect)((0,helpers_1.hasError)(a)).toBe(!0),(0,helpers_1.hasError)(a)&&(0,globals_1.expect)(a.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))}}})})})})}):console.warn(`Skipping tests for ${t} provider: disabled in test config.`)})});
@@ -1 +0,0 @@
1
- {"version":3,"file":"LLMAssistance.service.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/LLMAssistance.service.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const globals_1=require("@jest/globals"),index_1=require("../../index"),helpers_1=require("../../tests/helpers"),testConfig=(0,helpers_1.resolveTestConfig)(index_1.LLMPurposes.Completion);(0,globals_1.describe)("LLM Completion Service",()=>{Object.values(testConfig).forEach(e=>{const{provider:t,availableModels:s,clientOptions:o,requireCredentials:a,isEnabled:l}=e;l?(0,globals_1.describe)(`${t} Provider`,()=>{let e;(0,globals_1.beforeAll)(()=>{a(),e=index_1.LLMServiceFactory.getCompletionService(t,helpers_1.mockLogger,o)}),(0,globals_1.beforeEach)(()=>{globals_1.jest.clearAllMocks()}),(0,globals_1.describe)("Service Initialization",()=>{(0,globals_1.it)("should create completion service instance",()=>{(0,globals_1.expect)(e).toBeDefined(),(0,globals_1.expect)(e.provider).toBe(t)})}),Object.values(s).forEach(t=>{const o=t.name;(0,globals_1.describe)(`Model: ${o}`,()=>{const t=s[o];(0,globals_1.it)("should send a simple message and receive a response",async()=>{const s=await e.sendMessage({model:t,message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:'Hello, this is a test message for LLM completion. Respond with a single word - "OK".'}]}});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(/OK/i)}),(0,globals_1.it)("should handle message with history",async()=>{const s=await e.sendMessage({model:t,message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:'Continue the conversation, respond with a single word - "SUCCESS".'}]},history:[{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:'Hello, this is a test message for LLM completion. Respond with a single word - "FAILURE".'}]},{role:index_1.LLMRoles.Assistant,content:[{type:index_1.LLMMessageContentType.TEXT,text:"FAILURE"}]}]});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(/SUCCESS/i)}),(0,globals_1.it)("should handle custom instructions",async()=>{const s=await e.sendMessage({model:t,message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"My name is John"}]},instructions:"You are an assistant that always responds with a greeting. Always include user's name in your response, like this: \"Hi, {{name}}!\". Important: replace {{name}} with the user's name."});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(/John/i)}),(0,globals_1.it)("should extract text from image url and use it in response template",async()=>{const s=await e.sendMessage({model:t,instructions:'You must respond with ONLY two words: the text from the image followed by "CONFIRMED". No other text.',message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"Reply with exactly two words: [word from image] CONFIRMED"},{type:index_1.LLMMessageContentType.IMAGE_URL,image_url:{url:"https://dev-media.mate.academy/llm-gateway-test-image.png"}}]}});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(/learn\s+confirmed/i)}),(0,globals_1.it)("should handle multiple content items in a single message",async()=>{const s=await e.sendMessage({model:t,message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:'Extract the word from the image and respond with "[word] TO CODE" where [word] is the text you see in the image.'},{type:index_1.LLMMessageContentType.IMAGE_URL,image_url:{url:"https://dev-media.mate.academy/llm-gateway-test-image.png"}}]}});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(/learn\s*to\s*code/i)}),(0,globals_1.it)("should handle mixed content with text and image",async()=>{const s=await e.sendMessage({model:t,instructions:"Respond to the text instruction and mention if you can see an image.",message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:'Take the word from the image and complete this template: "[word from image] AND TEXT"'},{type:index_1.LLMMessageContentType.IMAGE_URL,image_url:{url:"https://dev-media.mate.academy/llm-gateway-test-image.png",detail:"low"}}]}});(0,globals_1.expect)((0,helpers_1.hasText)(s)).toBe(!0),(0,helpers_1.hasText)(s)&&(0,globals_1.expect)(s.text).toMatch(/learn\s*and\s*text/i)}),(0,globals_1.describe)("Abort signal handling",()=>{let s,o;(0,globals_1.beforeEach)(()=>{s=new AbortController,o=s.signal}),(0,globals_1.it)("should abort message sending when signal is aborted",async()=>{s.abort();const a=await e.sendMessage({model:t,message:{role:index_1.LLMRoles.User,content:[{type:index_1.LLMMessageContentType.TEXT,text:"This message should be aborted."}]},abortSignal:o});(0,globals_1.expect)((0,helpers_1.hasError)(a)).toBe(!0),(0,helpers_1.hasError)(a)&&(0,globals_1.expect)(a.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))})})})})}):console.warn(`Skipping tests for ${t} provider: disabled in test config.`)})});
@@ -1 +0,0 @@
1
- {"version":3,"file":"LLMCompletion.service.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/LLMCompletion.service.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const globals_1=require("@jest/globals"),path_1=require("path"),index_1=require("../../index"),helpers_1=require("../../tests/helpers"),testConfig=(0,helpers_1.resolveTestConfig)(index_1.LLMPurposes.SpeechToText),mockedSpeechFiles={[index_1.LLMUploadFileMimeTypes.AUDIO_MP3]:(0,path_1.join)(__dirname,"..","assets","stt.mp3"),[index_1.LLMUploadFileMimeTypes.AUDIO_WAV]:(0,path_1.join)(__dirname,"..","assets","stt.wav"),[index_1.LLMUploadFileMimeTypes.AUDIO_WEBM]:(0,path_1.join)(__dirname,"..","assets","stt.webm"),[index_1.LLMUploadFileMimeTypes.AUDIO_OGG]:(0,path_1.join)(__dirname,"..","assets","stt.ogg")};(0,globals_1.describe)("LLM Speech To Text Service",()=>{Object.values(testConfig).forEach(e=>{const{provider:s,availableModels:t,clientOptions:o,requireCredentials:a,isEnabled:l}=e;l?(0,globals_1.describe)(`${s} Provider`,()=>{let e;(0,globals_1.beforeAll)(()=>{a(),e=index_1.LLMServiceFactory.getSpeechToTextService(s,helpers_1.mockLogger,o)}),(0,globals_1.beforeEach)(()=>{globals_1.jest.clearAllMocks()}),(0,globals_1.describe)("Service Initialization",()=>{(0,globals_1.it)("should create speech-to-text service instance",()=>{(0,globals_1.expect)(e).toBeDefined(),(0,globals_1.expect)(e.provider).toBe(s)})}),Object.values(t).forEach(s=>{const o=s.name;(0,globals_1.describe)(`Model: ${o}`,()=>{const s=t[o];Object.entries(mockedSpeechFiles).forEach(([t,o])=>{(0,globals_1.it)(`should transcribe ${t} file and return text containing "learn to code"`,async()=>{const a=await e.transcribe({pathToAudio:o,mimeType:t,model:s});(0,globals_1.expect)((0,helpers_1.hasText)(a)).toBe(!0),(0,helpers_1.hasText)(a)&&(0,globals_1.expect)(a.text).toMatch(/learn.*to.*code/i)})}),(0,globals_1.it)("should handle invalid audio file path",async()=>{const t=(0,path_1.join)(__dirname,"..","nonexistent.mp3"),o=await e.transcribe({pathToAudio:t,model:s});(0,globals_1.expect)((0,helpers_1.hasError)(o)).toBe(!0)}),(0,globals_1.describe)("Abort signal handling",()=>{let t,o;(0,globals_1.beforeEach)(()=>{t=new AbortController,o=t.signal}),(0,globals_1.it)("should abort transcription when signal is aborted",async()=>{t.abort();const a=await e.transcribe({pathToAudio:mockedSpeechFiles[index_1.LLMUploadFileMimeTypes.AUDIO_MP3],model:s,abortSignal:o});(0,globals_1.expect)((0,helpers_1.hasError)(a)).toBe(!0),(0,helpers_1.hasError)(a)&&(0,globals_1.expect)(a.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))})})})})}):console.warn(`Skipping tests for ${s} provider: disabled in test config.`)})});
@@ -1 +0,0 @@
1
- {"version":3,"file":"LLMSpeechToText.service.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/LLMSpeechToText.service.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const globals_1=require("@jest/globals"),index_1=require("../../index"),helpers_1=require("../../tests/helpers"),testConfig=(0,helpers_1.resolveTestConfig)(index_1.LLMPurposes.TextToSpeech);(0,globals_1.describe)("LLM Text To Speech Service",()=>{Object.values(testConfig).forEach(e=>{const{provider:t,availableModels:o,clientOptions:s,requireCredentials:l,isEnabled:r}=e;r?(0,globals_1.describe)(`${t} Provider`,()=>{let e;(0,globals_1.beforeAll)(()=>{l(),e=index_1.LLMServiceFactory.getTextToSpeechService(t,helpers_1.mockLogger,s)}),(0,globals_1.beforeEach)(()=>{globals_1.jest.clearAllMocks()}),(0,globals_1.describe)("Service Initialization",()=>{(0,globals_1.it)("should create text-to-speech service instance",()=>{(0,globals_1.expect)(e).toBeDefined(),(0,globals_1.expect)(e.provider).toBe(t)})}),Object.values(o).forEach(t=>{const s=t.name;(0,globals_1.describe)(`Model: ${s}`,()=>{const t=o[s];(0,globals_1.it)("should convert text to speech and return audio file buffer",async()=>{const o=await e.createSpeech({text:"Hello, this is a test of text to speech functionality.",model:t});(0,globals_1.expect)((0,helpers_1.hasError)(o)).toBe(!1),(0,helpers_1.hasError)(o)||(0,globals_1.expect)(o.audio).toBeDefined()}),(0,globals_1.it)("should convert text to speech with instructions and return audio file buffer",async()=>{const o=await e.createSpeech({text:"This is a test with instructions.",model:t,instructions:"Please read this text in a calm and clear voice."});(0,globals_1.expect)((0,helpers_1.hasError)(o)).toBe(!1),(0,helpers_1.hasError)(o)||(0,globals_1.expect)(o.audio).toBeDefined()}),(0,globals_1.describe)("Abort signal handling",()=>{let o,s;(0,globals_1.beforeEach)(()=>{o=new AbortController,s=o.signal}),(0,globals_1.it)("should abort speech creation when signal is aborted",async()=>{o.abort();const l=await e.createSpeech({text:"This should not be processed",model:t,abortSignal:s});(0,globals_1.expect)((0,helpers_1.hasError)(l)).toBe(!0),(0,helpers_1.hasError)(l)&&(0,globals_1.expect)(l.error).toEqual(globals_1.expect.objectContaining({message:globals_1.expect.stringMatching(/aborted/i)}))})})})})}):console.warn(`Skipping tests for ${t} provider: disabled in test config.`)})});
@@ -1 +0,0 @@
1
- {"version":3,"file":"LLMTextToSpeech.service.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/LLMTextToSpeech.service.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const globals_1=require("@jest/globals"),dotenv_1=require("dotenv"),path_1=__importDefault(require("path")),envPath=path_1.default.resolve(__dirname,"../../../..",".env.file");(0,dotenv_1.config)({path:envPath}),globals_1.jest.setTimeout(45e3);
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tests/setup.ts"],"names":[],"mappings":";;;;;AAAA,2CAAqC;AACrC,mCAAgC;AAChC,gDAAwB;AAExB,gEAAgE;AAChE,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AACpE,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAE1B,4CAA4C;AAC5C,cAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const globals_1=require("@jest/globals"),promptBuilder_1=require("../../promptBuilder");(0,globals_1.describe)("PromptBuilder",()=>{(0,globals_1.describe)("createPromptTemplate",()=>{(0,globals_1.it)("should create a template without placeholders",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("This is a simple message without placeholders.")();(0,globals_1.expect)(e).toBe("This is a simple message without placeholders.")}),(0,globals_1.it)("should create a template with a single placeholder",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Hello, {{name}}!")({name:"John"});(0,globals_1.expect)(e).toBe("Hello, John!")}),(0,globals_1.it)("should create a template with multiple placeholders",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Generate a welcome message for {{user}} who started {{topic}} on {{date}}.")({user:"Alice",topic:"JavaScript Basics",date:"2024-01-15"});(0,globals_1.expect)(e).toBe("Generate a welcome message for Alice who started JavaScript Basics on 2024-01-15.")}),(0,globals_1.it)("should handle numeric values in placeholders",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("The user has {{score}} points out of {{total}}.")({score:85,total:100});(0,globals_1.expect)(e).toBe("The user has 85 points out of 100.")}),(0,globals_1.it)("should handle placeholders with whitespace in content",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Hello, {{ name }}! Your score is {{ score }}.")({" name ":"Bob"," score ":95});(0,globals_1.expect)(e).toBe("Hello, Bob! Your score is 95.")}),(0,globals_1.it)("should replace multiple occurrences of the same placeholder",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("{{name}} is learning {{subject}}. {{name}} enjoys {{subject}} very much.")({name:"Charlie",subject:"TypeScript"});(0,globals_1.expect)(e).toBe("Charlie is learning TypeScript. Charlie enjoys TypeScript very much.")}),(0,globals_1.it)("should trim whitespace from template",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("\n\n Generate a message for {{user}}.\n\n ")({user:"Dave"});(0,globals_1.expect)(e).toBe("Generate a message for Dave.")}),(0,globals_1.it)("should handle complex multiline templates",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("\n Generate a welcome message for a user who has just started their auto tech check attempt on {{topicTitle}}.\n The user's name is {{userName}} and they are at level {{level}}.\n Please make the message encouraging and informative.\n ")({topicTitle:"React Hooks",userName:"Emma",level:2});(0,globals_1.expect)(e).toBe("Generate a welcome message for a user who has just started their auto tech check attempt on React Hooks.\n The user's name is Emma and they are at level 2.\n Please make the message encouraging and informative.")}),(0,globals_1.it)("should handle templates with no variables when none are needed",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("This is a static message.")();(0,globals_1.expect)(e).toBe("This is a static message.")}),(0,globals_1.it)("should preserve template structure with special characters",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Email: {{email}} | Phone: {{phone}} | Score: {{score}}%")({email:"test@example.com",phone:"+1-555-0123",score:87});(0,globals_1.expect)(e).toBe("Email: test@example.com | Phone: +1-555-0123 | Score: 87%")}),(0,globals_1.describe)("conditional sections",()=>{(0,globals_1.it)("should handle true conditional section",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus!{{/showBonus}}")({userName:"Alice",showBonus:!0});(0,globals_1.expect)(e).toBe("Welcome, Alice! You have a bonus!")}),(0,globals_1.it)("should handle truthy conditional section",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus!{{/showBonus}}")({userName:"Charlie",showBonus:"yes"});(0,globals_1.expect)(e).toBe("Welcome, Charlie! You have a bonus!")}),(0,globals_1.it)("should handle false conditional section",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus!{{/showBonus}}")({userName:"Bob",showBonus:!1});(0,globals_1.expect)(e).toBe("Welcome, Bob! ")}),(0,globals_1.it)("should handle falsy conditional section",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus!{{/showBonus}}")({userName:"Dave",showBonus:""});(0,globals_1.expect)(e).toBe("Welcome, Dave! ")}),(0,globals_1.it)("should handle nested conditional sections, all visible sections",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus! {{#showDiscount}}Your discount is 20%.{{/showDiscount}}{{/showBonus}}")({userName:"Eve",showBonus:!0,showDiscount:!0});(0,globals_1.expect)(e).toBe("Welcome, Eve! You have a bonus! Your discount is 20%.")}),(0,globals_1.it)("should handle nested conditional sections, outer section visible, inner section hidden",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus! {{#showDiscount}}Your discount is 20%.{{/showDiscount}}{{/showBonus}}")({userName:"Frank",showBonus:!0,showDiscount:!1});(0,globals_1.expect)(e).toBe("Welcome, Frank! You have a bonus! ")}),(0,globals_1.it)("should handle nested conditional sections, outer section hidden",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#showBonus}}You have a bonus! {{#showDiscount}}Your discount is 20%.{{/showDiscount}}{{/showBonus}}")({userName:"Grace",showBonus:!1,showDiscount:!0});(0,globals_1.expect)(e).toBe("Welcome, Grace! ")}),(0,globals_1.it)("should handle section with variable as condition",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#valueAsCondition}}This section is visible because the value is truthy: {{valueAsCondition}}{{/valueAsCondition}}")({userName:"Hannah",valueAsCondition:"This is a test value"});(0,globals_1.expect)(e).toBe("Welcome, Hannah! This section is visible because the value is truthy: This is a test value")}),(0,globals_1.it)("should handle multiple sections with the same name",()=>{const e=(0,promptBuilder_1.createPromptTemplate)("Welcome, {{userName}}! {{#section}}This is section 1.{{/section}} {{#section}}This is section 2.{{/section}}")({userName:"Ivy",section:!0});(0,globals_1.expect)(e).toBe("Welcome, Ivy! This is section 1. This is section 2.")})})})});
@@ -1 +0,0 @@
1
- {"version":3,"file":"promptBuilder.test.js","sourceRoot":"","sources":["../../../src/tests/unit/promptBuilder.test.ts"],"names":[],"mappings":"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"}