@mate-academy/llm-gateway 7.6.2 → 7.7.0

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 (44) hide show
  1. package/README.md +62 -0
  2. package/dist/LLMService.typedefs.d.ts +13 -0
  3. package/dist/LLMService.typedefs.js.map +1 -1
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/initLLMGateway.d.ts +15 -0
  8. package/dist/initLLMGateway.js +21 -0
  9. package/dist/initLLMGateway.js.map +1 -0
  10. package/dist/initLLMGateway.typedefs.d.ts +9 -0
  11. package/dist/initLLMGateway.typedefs.js +3 -0
  12. package/dist/initLLMGateway.typedefs.js.map +1 -0
  13. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +2 -1
  14. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -1
  15. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js +2 -1
  16. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js.map +1 -1
  17. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js +24 -8
  18. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js.map +1 -1
  19. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +2 -1
  20. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -1
  21. package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.js +50 -17
  22. package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.js.map +1 -1
  23. package/dist/services/LLMBaseService.abstract.d.ts +27 -4
  24. package/dist/services/LLMBaseService.abstract.js +81 -7
  25. package/dist/services/LLMBaseService.abstract.js.map +1 -1
  26. package/dist/utilities/index.d.ts +1 -0
  27. package/dist/utilities/index.js +1 -0
  28. package/dist/utilities/index.js.map +1 -1
  29. package/dist/utilities/llmTracing/activeLLMTracer.d.ts +12 -0
  30. package/dist/utilities/llmTracing/activeLLMTracer.js +37 -0
  31. package/dist/utilities/llmTracing/activeLLMTracer.js.map +1 -0
  32. package/dist/utilities/llmTracing/fallbackMetric.d.ts +21 -0
  33. package/dist/utilities/llmTracing/fallbackMetric.js +24 -0
  34. package/dist/utilities/llmTracing/fallbackMetric.js.map +1 -0
  35. package/dist/utilities/llmTracing/index.d.ts +4 -0
  36. package/dist/utilities/llmTracing/index.js +24 -0
  37. package/dist/utilities/llmTracing/index.js.map +1 -0
  38. package/dist/utilities/llmTracing/llmTracing.typedefs.d.ts +48 -0
  39. package/dist/utilities/llmTracing/llmTracing.typedefs.js +3 -0
  40. package/dist/utilities/llmTracing/llmTracing.typedefs.js.map +1 -0
  41. package/dist/utilities/llmTracing/withLLMTrace.d.ts +12 -0
  42. package/dist/utilities/llmTracing/withLLMTrace.js +21 -0
  43. package/dist/utilities/llmTracing/withLLMTrace.js.map +1 -0
  44. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/llmTracing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,qDAA6E;AAApE,qHAAA,kBAAkB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AACjD,iDAA+B;AAC/B,mDAAiC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Trace/observation metadata. Values are coerced to strings before they reach
3
+ * the SDK, so callers may pass scalars.
4
+ */
5
+ export type LLMTraceMetadata = Record<string, string | number | boolean>;
6
+ export interface LLMTraceContext {
7
+ /** Overrides the trace name (defaults to the wrapping operation name). */
8
+ name?: string;
9
+ userId?: string;
10
+ sessionId?: string;
11
+ tags?: string[];
12
+ metadata?: LLMTraceMetadata;
13
+ }
14
+ /**
15
+ * Per-call generation capture passed from a provider service to the base
16
+ * service's success/error metric points. The observation name defaults to the
17
+ * service method when no prompt name is threaded through.
18
+ */
19
+ export interface LLMGenerationTrace {
20
+ name: string;
21
+ input?: unknown;
22
+ output?: unknown;
23
+ modelParameters?: Record<string, unknown>;
24
+ metadata?: LLMTraceMetadata;
25
+ }
26
+ /**
27
+ * Full per-call generation record passed to `recordGeneration`. Extracted from
28
+ * `LLMGenerationTrace` so the gateway and `@mate-academy/llm-tracer` share the
29
+ * exact same recorded shape.
30
+ */
31
+ export interface LLMGenerationTraceRecord extends LLMGenerationTrace {
32
+ model: string | null;
33
+ usageDetails?: Record<string, number>;
34
+ costDetails?: Record<string, number>;
35
+ isError?: boolean;
36
+ }
37
+ /**
38
+ * The tracing surface the gateway depends on. Any implementation (the no-op,
39
+ * or `@mate-academy/llm-tracer`'s Langfuse-backed tracer) satisfies it, so
40
+ * consumers hold a single type regardless of whether tracing is configured.
41
+ */
42
+ export interface LLMGatewayTracer {
43
+ readonly isEnabled: boolean;
44
+ withTrace<Result>(name: string, context: LLMTraceContext, fn: () => Promise<Result>): Promise<Result>;
45
+ recordGeneration(generation: LLMGenerationTraceRecord): void;
46
+ withToolObservation<Result>(name: string, input: unknown, fn: () => Promise<Result>): Promise<Result>;
47
+ flush(): Promise<void>;
48
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=llmTracing.typedefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmTracing.typedefs.js","sourceRoot":"","sources":["../../../src/utilities/llmTracing/llmTracing.typedefs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { type LLMTraceMetadata } from '../../utilities/llmTracing/llmTracing.typedefs';
2
+ /**
3
+ * Low-level trace wrapper for code outside the UseCase / Service base classes.
4
+ * Starts a trace named `name`; any gateway calls inside nest automatically via
5
+ * OTel context. A no-op when tracing is disabled.
6
+ */
7
+ export declare function withLLMTrace<Result>(name: string, metadata: LLMTraceMetadata, fn: () => Promise<Result>): Promise<Result>;
8
+ /**
9
+ * Flushes buffered traces. Serverless handlers call this on completion; the
10
+ * long-running API calls it from its shutdown hook only.
11
+ */
12
+ export declare function flushLLMTraces(): Promise<void>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withLLMTrace = withLLMTrace;
4
+ exports.flushLLMTraces = flushLLMTraces;
5
+ const activeLLMTracer_1 = require("../../utilities/llmTracing/activeLLMTracer");
6
+ /**
7
+ * Low-level trace wrapper for code outside the UseCase / Service base classes.
8
+ * Starts a trace named `name`; any gateway calls inside nest automatically via
9
+ * OTel context. A no-op when tracing is disabled.
10
+ */
11
+ function withLLMTrace(name, metadata, fn) {
12
+ return (0, activeLLMTracer_1.getActiveLLMTracer)().withTrace(name, { metadata }, fn);
13
+ }
14
+ /**
15
+ * Flushes buffered traces. Serverless handlers call this on completion; the
16
+ * long-running API calls it from its shutdown hook only.
17
+ */
18
+ function flushLLMTraces() {
19
+ return (0, activeLLMTracer_1.getActiveLLMTracer)().flush();
20
+ }
21
+ //# sourceMappingURL=withLLMTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withLLMTrace.js","sourceRoot":"","sources":["../../../src/utilities/llmTracing/withLLMTrace.ts"],"names":[],"mappings":";;AAQA,oCAMC;AAMD,wCAEC;AAtBD,4EAA4E;AAG5E;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,IAAY,EACZ,QAA0B,EAC1B,EAAyB;IAEzB,OAAO,IAAA,oCAAkB,GAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc;IAC5B,OAAO,IAAA,oCAAkB,GAAE,CAAC,KAAK,EAAE,CAAC;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mate-academy/llm-gateway",
3
- "version": "7.6.2",
3
+ "version": "7.7.0",
4
4
  "description": "A gateway package for LLM services.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -78,6 +78,7 @@
78
78
  },
79
79
  "dependencies": {
80
80
  "@google/genai": "^1.44.0",
81
+ "@langfuse/client": "^5.4.1",
81
82
  "axios": "^1.13.2",
82
83
  "load-esm": "^1.0.3",
83
84
  "mime-types": "^3.0.1",