@mate-academy/llm-gateway 8.11.1 → 8.11.7

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 (36) hide show
  1. package/README.md +20 -9
  2. package/dist/LLMService.constants.d.ts +54 -54
  3. package/dist/LLMService.typedefs.d.ts +7 -0
  4. package/dist/LLMService.typedefs.js.map +1 -1
  5. package/dist/client/agentRun.typedefs.d.ts +12 -1
  6. package/dist/client/agentRun.typedefs.js +2 -0
  7. package/dist/client/agentRun.typedefs.js.map +1 -1
  8. package/dist/client/agentRunner.js +17 -0
  9. package/dist/client/agentRunner.js.map +1 -1
  10. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +15 -5
  11. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -1
  12. package/dist/providers/LLMAPI/LLMAPI.constants.d.ts +81 -81
  13. package/dist/providers/LLMAPI/LLMAPI.constants.js +27 -27
  14. package/dist/providers/LLMAPI/LLMAPI.constants.js.map +1 -1
  15. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js +41 -7
  16. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js.map +1 -1
  17. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js +10 -1
  18. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js.map +1 -1
  19. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +40 -5
  20. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -1
  21. package/dist/services/LLMBaseService.abstract.d.ts +3 -1
  22. package/dist/services/LLMBaseService.abstract.js +11 -1
  23. package/dist/services/LLMBaseService.abstract.js.map +1 -1
  24. package/dist/services/agentRounds/LLMAgentRounds.d.ts +4 -2
  25. package/dist/services/agentRounds/LLMAgentRounds.js +12 -1
  26. package/dist/services/agentRounds/LLMAgentRounds.js.map +1 -1
  27. package/dist/services/agentRounds/agentRounds.typedefs.d.ts +1 -0
  28. package/dist/utilities/audio.js +11 -2
  29. package/dist/utilities/audio.js.map +1 -1
  30. package/dist/utilities/parseToolArguments.d.ts +3 -0
  31. package/dist/utilities/parseToolArguments.js +31 -0
  32. package/dist/utilities/parseToolArguments.js.map +1 -0
  33. package/dist/utilities/parseToolArguments.typedefs.d.ts +11 -0
  34. package/dist/utilities/parseToolArguments.typedefs.js +9 -0
  35. package/dist/utilities/parseToolArguments.typedefs.js.map +1 -0
  36. package/package.json +4 -4
@@ -15,9 +15,11 @@ exports.LLMAgentRounds = void 0;
15
15
  */
16
16
  class LLMAgentRounds {
17
17
  writeRound;
18
+ onRoundStarted;
18
19
  didRecordRound = false;
19
- constructor(writeRound) {
20
+ constructor(writeRound, onRoundStarted) {
20
21
  this.writeRound = writeRound;
22
+ this.onRoundStarted = onRoundStarted;
21
23
  }
22
24
  /**
23
25
  * Whether any model round reached the tracer. A run that fails while still
@@ -33,6 +35,7 @@ class LLMAgentRounds {
33
35
  * what the loop, or the caller, sees.
34
36
  */
35
37
  async run(round) {
38
+ this.notifyRoundStarted();
36
39
  const startedAt = Date.now();
37
40
  const response = await this.callProvider(round, startedAt);
38
41
  try {
@@ -49,6 +52,14 @@ class LLMAgentRounds {
49
52
  }
50
53
  return response;
51
54
  }
55
+ notifyRoundStarted() {
56
+ try {
57
+ this.onRoundStarted?.();
58
+ }
59
+ catch (error) {
60
+ console.warn('Model round-start listener failed', error);
61
+ }
62
+ }
52
63
  async callProvider(round, startedAt) {
53
64
  try {
54
65
  return await round.call();
@@ -1 +1 @@
1
- {"version":3,"file":"LLMAgentRounds.js","sourceRoot":"","sources":["../../../src/services/agentRounds/LLMAgentRounds.ts"],"names":[],"mappings":";;;AAMA;;;;;;;;;;;GAWG;AACH,MAAa,cAAc;IAGI;IAFrB,cAAc,GAAG,KAAK,CAAC;IAE/B,YAA6B,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAEhE;;;;OAIG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CACP,KAA0C;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE1D,IAAI,CAAC,YAAY,CAAC;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM;gBACN,KAAK;gBACL,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,KAA0C,EAC1C,SAAiB;QAEjB,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS;gBACT,KAAK;gBACL,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAoB;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;CACF;AAnED,wCAmEC"}
1
+ {"version":3,"file":"LLMAgentRounds.js","sourceRoot":"","sources":["../../../src/services/agentRounds/LLMAgentRounds.ts"],"names":[],"mappings":";;;AAOA;;;;;;;;;;;GAWG;AACH,MAAa,cAAc;IAIN;IACA;IAJX,cAAc,GAAG,KAAK,CAAC;IAE/B,YACmB,UAA+B,EAC/B,cAA6C;QAD7C,eAAU,GAAV,UAAU,CAAqB;QAC/B,mBAAc,GAAd,cAAc,CAA+B;IAC7D,CAAC;IAEJ;;;;OAIG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CACP,KAA0C;QAE1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE1D,IAAI,CAAC,YAAY,CAAC;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM;gBACN,KAAK;gBACL,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,KAA0C,EAC1C,SAAiB;QAEjB,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS;gBACT,KAAK;gBACL,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAoB;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;CACF;AAhFD,wCAgFC"}
@@ -45,4 +45,5 @@ export interface LLMAgentRoundSpec<ProviderResponse> {
45
45
  }
46
46
  /** Emits the generation observation of a single agent round. */
47
47
  export type LLMAgentRoundWriter = (round: LLMAgentRound) => void;
48
+ export type LLMAgentRoundStartedListener = () => void;
48
49
  export {};
@@ -2,9 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAudioDuration = void 0;
4
4
  const load_esm_1 = require("load-esm");
5
- const musicMetadataModule = (0, load_esm_1.loadEsm)('music-metadata');
5
+ const musicMetadataCache = { module: null };
6
+ const getMusicMetadata = () => {
7
+ const cachedModule = musicMetadataCache.module;
8
+ if (cachedModule) {
9
+ return cachedModule;
10
+ }
11
+ const loadedModule = (0, load_esm_1.loadEsm)('music-metadata');
12
+ musicMetadataCache.module = loadedModule;
13
+ return loadedModule;
14
+ };
6
15
  const getAudioDuration = async (pathToAudio) => {
7
- const { parseFile } = await musicMetadataModule;
16
+ const { parseFile } = await getMusicMetadata();
8
17
  const metadata = await parseFile(pathToAudio);
9
18
  return metadata.format.duration ?? 0;
10
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/utilities/audio.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAEnC,MAAM,mBAAmB,GAAG,IAAA,kBAAO,EACjC,gBAAgB,CACjB,CAAC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EAAE,WAAmB,EAAmB,EAAE;IAC7E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AACvC,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B"}
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/utilities/audio.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAEnC,MAAM,kBAAkB,GAEpB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAErB,MAAM,gBAAgB,GAAG,GAA6C,EAAE;IACtE,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE/C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,kBAAO,EAAkC,gBAAgB,CAAC,CAAC;IAEhF,kBAAkB,CAAC,MAAM,GAAG,YAAY,CAAC;IAEzC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EAAE,WAAmB,EAAmB,EAAE;IAC7E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AACvC,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B"}
@@ -0,0 +1,3 @@
1
+ import { type ToolArgumentsParseResult } from '../utilities/parseToolArguments.typedefs';
2
+ export declare function parseToolArguments(serializedArguments: string): ToolArgumentsParseResult;
3
+ export declare function toToolCallInput(toolArguments: unknown): Record<string, unknown>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseToolArguments = parseToolArguments;
4
+ exports.toToolCallInput = toToolCallInput;
5
+ const parseToolArguments_typedefs_1 = require("../utilities/parseToolArguments.typedefs");
6
+ function parseToolArguments(serializedArguments) {
7
+ try {
8
+ return {
9
+ kind: parseToolArguments_typedefs_1.ToolArgumentsParseResultKind.Parsed,
10
+ arguments: JSON.parse(serializedArguments),
11
+ };
12
+ }
13
+ catch (error) {
14
+ return {
15
+ kind: parseToolArguments_typedefs_1.ToolArgumentsParseResultKind.Rejected,
16
+ error: error instanceof Error ? error.message : String(error),
17
+ };
18
+ }
19
+ }
20
+ function toToolCallInput(toolArguments) {
21
+ if (isToolCallInput(toolArguments)) {
22
+ return toolArguments;
23
+ }
24
+ return { value: toolArguments };
25
+ }
26
+ function isToolCallInput(toolArguments) {
27
+ return toolArguments !== null
28
+ && typeof toolArguments === 'object'
29
+ && !Array.isArray(toolArguments);
30
+ }
31
+ //# sourceMappingURL=parseToolArguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseToolArguments.js","sourceRoot":"","sources":["../../src/utilities/parseToolArguments.ts"],"names":[],"mappings":";;AAKA,gDAcC;AAED,0CAQC;AA7BD,yFAGiD;AAEjD,SAAgB,kBAAkB,CAChC,mBAA2B;IAE3B,IAAI,CAAC;QACH,OAAO;YACL,IAAI,EAAE,0DAA4B,CAAC,MAAM;YACzC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,0DAA4B,CAAC,QAAQ;YAC3C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAC7B,aAAsB;IAEtB,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,eAAe,CACtB,aAAsB;IAEtB,OAAO,aAAa,KAAK,IAAI;WACxB,OAAO,aAAa,KAAK,QAAQ;WACjC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare enum ToolArgumentsParseResultKind {
2
+ Parsed = "PARSED",
3
+ Rejected = "REJECTED"
4
+ }
5
+ export type ToolArgumentsParseResult = {
6
+ kind: ToolArgumentsParseResultKind.Parsed;
7
+ arguments: unknown;
8
+ } | {
9
+ kind: ToolArgumentsParseResultKind.Rejected;
10
+ error: string;
11
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolArgumentsParseResultKind = void 0;
4
+ var ToolArgumentsParseResultKind;
5
+ (function (ToolArgumentsParseResultKind) {
6
+ ToolArgumentsParseResultKind["Parsed"] = "PARSED";
7
+ ToolArgumentsParseResultKind["Rejected"] = "REJECTED";
8
+ })(ToolArgumentsParseResultKind || (exports.ToolArgumentsParseResultKind = ToolArgumentsParseResultKind = {}));
9
+ //# sourceMappingURL=parseToolArguments.typedefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseToolArguments.typedefs.js","sourceRoot":"","sources":["../../src/utilities/parseToolArguments.typedefs.ts"],"names":[],"mappings":";;;AAAA,IAAY,4BAGX;AAHD,WAAY,4BAA4B;IACtC,iDAAiB,CAAA;IACjB,qDAAqB,CAAA;AACvB,CAAC,EAHW,4BAA4B,4CAA5B,4BAA4B,QAGvC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mate-academy/llm-gateway",
3
- "version": "8.11.1",
3
+ "version": "8.11.7",
4
4
  "description": "A gateway package for LLM services.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -37,11 +37,11 @@
37
37
  "minify": "find dist -type f -name \"*.js\" -exec terser {} -c -m -o {} \\;",
38
38
  "lint": "eslint .",
39
39
  "lint:fix": "eslint . --fix",
40
- "test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" ENABLE_LOGGING=true jest",
41
- "test:silent": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest",
40
+ "test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" ENABLE_LOGGING=true jest src/tests/unit",
41
+ "test:silent": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest src/tests/unit",
42
42
  "test:integration": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" ENABLE_LOGGING=true jest src/tests/integration --verbose",
43
43
  "prepublish-tests": "node scripts/prepublish-tests.js",
44
- "prepublishOnly": "npm run clean && npm run lint:fix && npm run type-check && npm run prepublish-tests && npm run build",
44
+ "prepublishOnly": "npm run clean && npm run lint && npm run type-check && npm run build",
45
45
  "type-check": "tsc --noEmit",
46
46
  "postpublish": "npm run clean",
47
47
  "clean": "rm -rf ./dist",