@layer-ai/core 0.5.6 → 0.5.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.
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Provider Constants
3
+ *
4
+ * Central location for provider-related types and constants.
5
+ * Separated from provider-factory to avoid circular dependencies.
6
+ */
7
+ /**
8
+ * Provider type - maps to adapter implementations
9
+ */
10
+ export type Provider = 'openai' | 'anthropic' | 'google' | 'mistral';
11
+ /**
12
+ * Provider constants - use these instead of string literals
13
+ */
14
+ export declare const PROVIDER: {
15
+ readonly OPENAI: "openai";
16
+ readonly ANTHROPIC: "anthropic";
17
+ readonly GOOGLE: "google";
18
+ readonly MISTRAL: "mistral";
19
+ };
20
+ /**
21
+ * List of all providers
22
+ */
23
+ export declare const PROVIDERS: Provider[];
24
+ //# sourceMappingURL=provider-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-constants.d.ts","sourceRoot":"","sources":["../../src/lib/provider-constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;CAKwB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,EAK/B,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Provider Constants
3
+ *
4
+ * Central location for provider-related types and constants.
5
+ * Separated from provider-factory to avoid circular dependencies.
6
+ */
7
+ /**
8
+ * Provider constants - use these instead of string literals
9
+ */
10
+ export const PROVIDER = {
11
+ OPENAI: 'openai',
12
+ ANTHROPIC: 'anthropic',
13
+ GOOGLE: 'google',
14
+ MISTRAL: 'mistral',
15
+ };
16
+ /**
17
+ * List of all providers
18
+ */
19
+ export const PROVIDERS = [
20
+ PROVIDER.OPENAI,
21
+ PROVIDER.ANTHROPIC,
22
+ PROVIDER.GOOGLE,
23
+ PROVIDER.MISTRAL
24
+ ];
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Provider Factory
3
+ *
4
+ * Centralized module for managing and calling provider adapters.
5
+ * Acts as a factory that routes requests to the appropriate provider adapter
6
+ * based on the model's provider type.
7
+ */
8
+ import type { LayerRequest, LayerResponse, SupportedModel } from '@layer-ai/sdk';
9
+ import { PROVIDER, PROVIDERS, type Provider } from './provider-constants.js';
10
+ export { PROVIDER, PROVIDERS, type Provider };
11
+ /**
12
+ * Normalizes a model ID to its full registry format.
13
+ * Supports both full IDs (e.g., "openai/gpt-4") and short IDs (e.g., "gpt-4").
14
+ */
15
+ export declare function normalizeModelId(modelId: string): SupportedModel;
16
+ /**
17
+ * Gets the provider type for a given model
18
+ */
19
+ export declare function getProviderForModel(model: SupportedModel): Provider;
20
+ /**
21
+ * Calls the appropriate provider adapter for the given request.
22
+ * This is the main entry point for executing AI model requests.
23
+ */
24
+ export declare function callAdapter(request: LayerRequest): Promise<LayerResponse>;
25
+ //# sourceMappingURL=provider-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.d.ts","sourceRoot":"","sources":["../../src/lib/provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,CAAC;AAa9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAmBhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,QAAQ,CAMnE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAW/E"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Provider Factory
3
+ *
4
+ * Centralized module for managing and calling provider adapters.
5
+ * Acts as a factory that routes requests to the appropriate provider adapter
6
+ * based on the model's provider type.
7
+ */
8
+ import { OpenAIAdapter } from '../services/providers/openai-adapter.js';
9
+ import { AnthropicAdapter } from '../services/providers/anthropic-adapter.js';
10
+ import { GoogleAdapter } from '../services/providers/google-adapter.js';
11
+ import { MistralAdapter } from '../services/providers/mistral-adapter.js';
12
+ import { MODEL_REGISTRY } from '@layer-ai/sdk';
13
+ import { PROVIDER, PROVIDERS } from './provider-constants.js';
14
+ // Re-export for convenience
15
+ export { PROVIDER, PROVIDERS };
16
+ /**
17
+ * Provider adapter registry
18
+ * Maps provider names to their adapter classes
19
+ */
20
+ const PROVIDER_ADAPTERS = {
21
+ [PROVIDER.OPENAI]: OpenAIAdapter,
22
+ [PROVIDER.ANTHROPIC]: AnthropicAdapter,
23
+ [PROVIDER.GOOGLE]: GoogleAdapter,
24
+ [PROVIDER.MISTRAL]: MistralAdapter,
25
+ };
26
+ /**
27
+ * Normalizes a model ID to its full registry format.
28
+ * Supports both full IDs (e.g., "openai/gpt-4") and short IDs (e.g., "gpt-4").
29
+ */
30
+ export function normalizeModelId(modelId) {
31
+ if (MODEL_REGISTRY[modelId]) {
32
+ return modelId;
33
+ }
34
+ const providers = [
35
+ PROVIDER.OPENAI,
36
+ PROVIDER.ANTHROPIC,
37
+ PROVIDER.GOOGLE,
38
+ PROVIDER.MISTRAL
39
+ ];
40
+ for (const provider of providers) {
41
+ const fullId = `${provider}/${modelId}`;
42
+ if (MODEL_REGISTRY[fullId]) {
43
+ return fullId;
44
+ }
45
+ }
46
+ throw new Error(`invalid model ID: "${modelId}" not found in registry`);
47
+ }
48
+ /**
49
+ * Gets the provider type for a given model
50
+ */
51
+ export function getProviderForModel(model) {
52
+ const modelInfo = MODEL_REGISTRY[model];
53
+ if (!modelInfo) {
54
+ throw new Error(`Model "${model}" not found in registry`);
55
+ }
56
+ return modelInfo.provider;
57
+ }
58
+ /**
59
+ * Calls the appropriate provider adapter for the given request.
60
+ * This is the main entry point for executing AI model requests.
61
+ */
62
+ export async function callAdapter(request) {
63
+ const normalizedModel = normalizeModelId(request.model);
64
+ const provider = getProviderForModel(normalizedModel);
65
+ const AdapterClass = PROVIDER_ADAPTERS[provider];
66
+ if (!AdapterClass) {
67
+ throw new Error(`No adapter found for provider: ${provider}`);
68
+ }
69
+ const adapter = new AdapterClass();
70
+ return await adapter.call(request);
71
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/routes/v2/complete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAYpD,QAAA,MAAM,MAAM,EAAE,UAAqB,CAAC;AAyRpC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/routes/v2/complete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AASpD,QAAA,MAAM,MAAM,EAAE,UAAqB,CAAC;AAgPpC,eAAe,MAAM,CAAC"}
@@ -2,26 +2,10 @@ import { Router } from 'express';
2
2
  import { db } from '../../lib/db/postgres.js';
3
3
  import { cache } from '../../lib/db/redis.js';
4
4
  import { authenticate } from '../../middleware/auth.js';
5
- import { OpenAIAdapter } from '../../services/providers/openai-adapter.js';
6
- import { AnthropicAdapter } from '../../services/providers/anthropic-adapter.js';
7
- import { GoogleAdapter } from '../../services/providers/google-adapter.js';
8
- import { MistralAdapter } from '../../services/providers/mistral-adapter.js';
9
- import { MODEL_REGISTRY, OverrideField } from '@layer-ai/sdk';
5
+ import { callAdapter, normalizeModelId } from '../../lib/provider-factory.js';
6
+ import { OverrideField } from '@layer-ai/sdk';
10
7
  const router = Router();
11
8
  // MARK:- Helper Functions
12
- function normalizeModelId(modelId) {
13
- if (MODEL_REGISTRY[modelId]) {
14
- return modelId;
15
- }
16
- const providers = ['openai', 'anthropic', 'google', 'mistral'];
17
- for (const provider of providers) {
18
- const fullId = `${provider}/${modelId}`;
19
- if (MODEL_REGISTRY[fullId]) {
20
- return fullId;
21
- }
22
- }
23
- throw new Error(`invalid model ID: "${modelId}" not found in registry`);
24
- }
25
9
  function isOverrideAllowed(allowOverrides, field) {
26
10
  if (allowOverrides === undefined || allowOverrides === null || allowOverrides === true)
27
11
  return true;
@@ -78,29 +62,6 @@ function resolveFinalRequest(gateConfig, request) {
78
62
  }
79
63
  return finalRequest;
80
64
  }
81
- async function callProvider(request) {
82
- const normalizedModel = normalizeModelId(request.model);
83
- const provider = MODEL_REGISTRY[normalizedModel].provider;
84
- switch (provider) {
85
- case 'openai': {
86
- const adapter = new OpenAIAdapter();
87
- return await adapter.call(request);
88
- }
89
- case 'anthropic': {
90
- const adapter = new AnthropicAdapter();
91
- return await adapter.call(request);
92
- }
93
- case 'google':
94
- const adapter = new GoogleAdapter();
95
- return await adapter.call(request);
96
- case 'mistral': {
97
- const adapter = new MistralAdapter();
98
- return await adapter.call(request);
99
- }
100
- default:
101
- throw new Error(`Unknown provider: ${provider}`);
102
- }
103
- }
104
65
  function getModelsToTry(gateConfig, primaryModel) {
105
66
  const modelsToTry = [primaryModel];
106
67
  if (gateConfig.routingStrategy === 'fallback' && gateConfig.fallbackModels?.length) {
@@ -115,7 +76,7 @@ async function executeWithFallback(request, modelsToTry) {
115
76
  for (const modelToTry of modelsToTry) {
116
77
  try {
117
78
  const modelRequest = { ...request, model: modelToTry };
118
- result = await callProvider(modelRequest);
79
+ result = await callAdapter(modelRequest);
119
80
  modelUsed = modelToTry;
120
81
  break;
121
82
  }
@@ -132,14 +93,14 @@ async function executeWithFallback(request, modelsToTry) {
132
93
  }
133
94
  async function executeWithRoundRobin(gateConfig, request) {
134
95
  if (!gateConfig.fallbackModels?.length) {
135
- const result = await callProvider(request);
96
+ const result = await callAdapter(request);
136
97
  return { result, modelUsed: request.model };
137
98
  }
138
99
  const allModels = [gateConfig.model, ...gateConfig.fallbackModels];
139
100
  const modelIndex = Math.floor(Math.random() * allModels.length);
140
101
  const selectedModel = allModels[modelIndex];
141
102
  const modelRequest = { ...request, model: selectedModel };
142
- const result = await callProvider(modelRequest);
103
+ const result = await callAdapter(modelRequest);
143
104
  return { result, modelUsed: selectedModel };
144
105
  }
145
106
  async function executeWithRouting(gateConfig, request) {
@@ -151,7 +112,7 @@ async function executeWithRouting(gateConfig, request) {
151
112
  return await executeWithRoundRobin(gateConfig, request);
152
113
  case 'single':
153
114
  default:
154
- const result = await callProvider(request);
115
+ const result = await callAdapter(request);
155
116
  return { result, modelUsed: request.model };
156
117
  }
157
118
  }
@@ -0,0 +1,11 @@
1
+ import type { LayerRequest, LayerResponse, SupportedModel } from '@layer-ai/sdk';
2
+ /**
3
+ * Normalizes a model ID to its full registry format.
4
+ * Supports both full IDs (e.g., "openai/gpt-4") and short IDs (e.g., "gpt-4").
5
+ */
6
+ export declare function normalizeModelId(modelId: string): SupportedModel;
7
+ /**
8
+ * Calls the appropriate provider adapter for the given request.
9
+ */
10
+ export declare function callProvider(request: LayerRequest): Promise<LayerResponse>;
11
+ //# sourceMappingURL=provider-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-service.d.ts","sourceRoot":"","sources":["../../src/services/provider-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGjF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAchE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAwBhF"}
@@ -0,0 +1,49 @@
1
+ import { OpenAIAdapter } from './providers/openai-adapter.js';
2
+ import { AnthropicAdapter } from './providers/anthropic-adapter.js';
3
+ import { GoogleAdapter } from './providers/google-adapter.js';
4
+ import { MistralAdapter } from './providers/mistral-adapter.js';
5
+ import { MODEL_REGISTRY } from '@layer-ai/sdk';
6
+ /**
7
+ * Normalizes a model ID to its full registry format.
8
+ * Supports both full IDs (e.g., "openai/gpt-4") and short IDs (e.g., "gpt-4").
9
+ */
10
+ export function normalizeModelId(modelId) {
11
+ if (MODEL_REGISTRY[modelId]) {
12
+ return modelId;
13
+ }
14
+ const providers = ['openai', 'anthropic', 'google', 'mistral'];
15
+ for (const provider of providers) {
16
+ const fullId = `${provider}/${modelId}`;
17
+ if (MODEL_REGISTRY[fullId]) {
18
+ return fullId;
19
+ }
20
+ }
21
+ throw new Error(`invalid model ID: "${modelId}" not found in registry`);
22
+ }
23
+ /**
24
+ * Calls the appropriate provider adapter for the given request.
25
+ */
26
+ export async function callProvider(request) {
27
+ const normalizedModel = normalizeModelId(request.model);
28
+ const provider = MODEL_REGISTRY[normalizedModel].provider;
29
+ switch (provider) {
30
+ case 'openai': {
31
+ const adapter = new OpenAIAdapter();
32
+ return await adapter.call(request);
33
+ }
34
+ case 'anthropic': {
35
+ const adapter = new AnthropicAdapter();
36
+ return await adapter.call(request);
37
+ }
38
+ case 'google': {
39
+ const adapter = new GoogleAdapter();
40
+ return await adapter.call(request);
41
+ }
42
+ case 'mistral': {
43
+ const adapter = new MistralAdapter();
44
+ return await adapter.call(request);
45
+ }
46
+ default:
47
+ throw new Error(`Unknown provider: ${provider}`);
48
+ }
49
+ }
@@ -1,7 +1,8 @@
1
1
  import { BaseProviderAdapter } from './base-adapter.js';
2
2
  import { LayerRequest, LayerResponse, Role, FinishReason, ToolChoice } from '@layer-ai/sdk';
3
+ import { type Provider } from "../../lib/provider-constants.js";
3
4
  export declare class AnthropicAdapter extends BaseProviderAdapter {
4
- protected provider: string;
5
+ protected provider: Provider;
5
6
  protected roleMappings: Record<Role, string>;
6
7
  protected toolChoiceMappings: Record<string, string | object>;
7
8
  protected finishReasonMappings: Record<string, FinishReason>;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/anthropic-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,UAAU,EACX,MAAM,eAAe,CAAC;AAavB,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,SAAS,CAAC,QAAQ,SAAe;IAEjC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAI3D;IAEF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM1D;IAEF,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAalE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB3C,UAAU;CA4JzB"}
1
+ {"version":3,"file":"anthropic-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/anthropic-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAa1E,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAsB;IAElD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAI3D;IAEF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM1D;IAEF,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAalE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB3C,UAAU;CA4JzB"}
@@ -1,5 +1,6 @@
1
1
  import Anthropic from "@anthropic-ai/sdk";
2
2
  import { BaseProviderAdapter, ADAPTER_HANDLED } from './base-adapter.js';
3
+ import { PROVIDER } from "../../lib/provider-constants.js";
3
4
  let anthropic = null;
4
5
  function getAnthropicClient() {
5
6
  if (!anthropic) {
@@ -12,7 +13,7 @@ function getAnthropicClient() {
12
13
  export class AnthropicAdapter extends BaseProviderAdapter {
13
14
  constructor() {
14
15
  super(...arguments);
15
- this.provider = 'anthropic';
16
+ this.provider = PROVIDER.ANTHROPIC;
16
17
  this.roleMappings = {
17
18
  system: ADAPTER_HANDLED, // Handled via system parameter
18
19
  user: 'user',
@@ -1,7 +1,8 @@
1
1
  import { LayerRequest, LayerResponse, Role, ImageDetail, ImageSize, ImageQuality, ImageStyle, VideoSize, AudioFormat, AudioMimeType, ImageMimeType, FinishReason, ToolChoice, EncodingFormat, ADAPTER_HANDLED } from '@layer-ai/sdk';
2
+ import type { Provider } from "../../lib/provider-constants.js";
2
3
  export { ADAPTER_HANDLED };
3
4
  export declare abstract class BaseProviderAdapter {
4
- protected abstract provider: string;
5
+ protected abstract provider: Provider;
5
6
  protected roleMappings?: Record<Role, string>;
6
7
  protected imageDetailMappings?: Record<ImageDetail, string>;
7
8
  protected toolChoiceMappings?: Record<string, string | object>;
@@ -1 +1 @@
1
- {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/base-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,eAAe,EAGhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAEpC,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5D,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9D,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxD,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9D,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1D,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxD,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5D,SAAS,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChE,SAAS,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChE,SAAS,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAElE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAE5D,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAcrC,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAQjE,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAQ3D,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS;IAQpE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS;IAQ9D,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAQ3D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAQjE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS;IAQvE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS;IAQvE,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAQvE,SAAS,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,GAAG,YAAY;IAQrE,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAYxE,SAAS,CAAC,aAAa,CACrB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,MAAM;CAOV"}
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/base-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { FunctionCallingConfigMode } from '@google/genai';
2
2
  import { LayerRequest, LayerResponse, Role, FinishReason, VideoSize } from '@layer-ai/sdk';
3
3
  import { BaseProviderAdapter } from './base-adapter.js';
4
+ import { type Provider } from "../../lib/provider-constants.js";
4
5
  export declare class GoogleAdapter extends BaseProviderAdapter {
5
- protected provider: string;
6
+ protected provider: Provider;
6
7
  protected roleMappings: Record<Role, string>;
7
8
  protected finishReasonMappings: Record<string, FinishReason>;
8
9
  protected toolChoiceMappings: Record<string, FunctionCallingConfigMode>;
@@ -1 +1 @@
1
- {"version":3,"file":"google-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/google-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,yBAAyB,EAI1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYxD,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,SAAS,CAAC,QAAQ,SAAY;IAE9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAGF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAO1D;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAIrE;IAGF,SAAS,CAAC,eAAe,EAAE,MAAM,CAC/B,SAAS,EACT;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAC5C,CAKC;IAEI,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB3C,UAAU;YAqLV,qBAAqB;YAkCrB,gBAAgB;YAmChB,qBAAqB;YAmHrB,kBAAkB;IAwChC,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"google-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/google-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,yBAAyB,EAI1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAW1E,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAmB;IAE/C,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAGF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAO1D;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAIrE;IAGF,SAAS,CAAC,eAAe,EAAE,MAAM,CAC/B,SAAS,EACT;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAC5C,CAKC;IAEI,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB3C,UAAU;YAqLV,qBAAqB;YAkCrB,gBAAgB;YAmChB,qBAAqB;YAmHrB,kBAAkB;IAwChC,OAAO,CAAC,KAAK;CAGd"}
@@ -1,6 +1,7 @@
1
1
  import { GoogleGenAI, FunctionCallingConfigMode, VideoGenerationReferenceType, } from '@google/genai';
2
2
  import { BaseProviderAdapter } from './base-adapter.js';
3
3
  import { ADAPTER_HANDLED } from './base-adapter.js';
4
+ import { PROVIDER } from "../../lib/provider-constants.js";
4
5
  let client = null;
5
6
  function getGoogleClient() {
6
7
  if (!client) {
@@ -11,7 +12,7 @@ function getGoogleClient() {
11
12
  export class GoogleAdapter extends BaseProviderAdapter {
12
13
  constructor() {
13
14
  super(...arguments);
14
- this.provider = 'google';
15
+ this.provider = PROVIDER.GOOGLE;
15
16
  this.roleMappings = {
16
17
  system: ADAPTER_HANDLED,
17
18
  user: 'user',
@@ -1,7 +1,8 @@
1
1
  import { BaseProviderAdapter } from './base-adapter.js';
2
2
  import { LayerRequest, LayerResponse, Role, FinishReason } from '@layer-ai/sdk';
3
+ import { type Provider } from "../../lib/provider-constants.js";
3
4
  export declare class MistralAdapter extends BaseProviderAdapter {
4
- protected provider: string;
5
+ protected provider: Provider;
5
6
  protected roleMappings: Record<Role, string>;
6
7
  protected finishReasonMappings: Record<string, FinishReason>;
7
8
  protected toolChoiceMappings: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"mistral-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/mistral-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EAEb,MAAM,eAAe,CAAC;AAavB,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,SAAS,CAAC,QAAQ,SAAa;IAE/B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAGF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM1D;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlD;IAEI,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAmB3C,UAAU;YA8LV,gBAAgB;YAuChB,SAAS;CA2ExB"}
1
+ {"version":3,"file":"mistral-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/mistral-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EAEb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAa1E,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAoB;IAEhD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAGF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM1D;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlD;IAEI,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAmB3C,UAAU;YA8LV,gBAAgB;YAuChB,SAAS;CA2ExB"}
@@ -1,6 +1,7 @@
1
1
  import { Mistral } from '@mistralai/mistralai';
2
2
  import { BaseProviderAdapter } from './base-adapter.js';
3
3
  import { ADAPTER_HANDLED, } from '@layer-ai/sdk';
4
+ import { PROVIDER } from "../../lib/provider-constants.js";
4
5
  let client = null;
5
6
  function getMistralClient() {
6
7
  if (!client) {
@@ -13,7 +14,7 @@ function getMistralClient() {
13
14
  export class MistralAdapter extends BaseProviderAdapter {
14
15
  constructor() {
15
16
  super(...arguments);
16
- this.provider = 'mistral';
17
+ this.provider = PROVIDER.MISTRAL;
17
18
  this.roleMappings = {
18
19
  system: ADAPTER_HANDLED,
19
20
  user: 'user',
@@ -1,7 +1,8 @@
1
1
  import { BaseProviderAdapter } from './base-adapter.js';
2
2
  import { LayerRequest, LayerResponse, Role, ImageDetail, ImageSize, ImageQuality, ImageStyle, VideoSize, AudioFormat, FinishReason } from '@layer-ai/sdk';
3
+ import { type Provider } from "../../lib/provider-constants.js";
3
4
  export declare class OpenAIAdapter extends BaseProviderAdapter {
4
- protected provider: string;
5
+ protected provider: Provider;
5
6
  protected roleMappings: Record<Role, string>;
6
7
  protected imageDetailMappings: Record<ImageDetail, string>;
7
8
  protected finishReasonMappings: Record<string, FinishReason>;
@@ -1 +1 @@
1
- {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/openai-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACb,MAAM,eAAe,CAAC;AAavB,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,SAAS,CAAC,QAAQ,SAAY;IAE9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAEF,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAIxD;IAEF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAK1D;IAEF,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAQpD;IAEF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAG1D;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAGtD;IAEF,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAKpD;IAEF,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAOxD;IAEI,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB3C,UAAU;YA2GV,qBAAqB;YA6BrB,gBAAgB;YAiChB,kBAAkB;CA8BjC"}
1
+ {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../../src/services/providers/openai-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAa1E,qBAAa,aAAc,SAAQ,mBAAmB;IACpD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAmB;IAE/C,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAQ1C;IAEF,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAIxD;IAEF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAK1D;IAEF,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAQpD;IAEF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAG1D;IAEF,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAGtD;IAEF,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAKpD;IAEF,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAOxD;IAEI,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB3C,UAAU;YA2GV,qBAAqB;YA6BrB,gBAAgB;YAiChB,kBAAkB;CA8BjC"}
@@ -1,5 +1,6 @@
1
1
  import OpenAI from 'openai';
2
2
  import { BaseProviderAdapter } from './base-adapter.js';
3
+ import { PROVIDER } from "../../lib/provider-constants.js";
3
4
  let openai = null;
4
5
  function getOpenAIClient() {
5
6
  if (!openai) {
@@ -12,7 +13,7 @@ function getOpenAIClient() {
12
13
  export class OpenAIAdapter extends BaseProviderAdapter {
13
14
  constructor() {
14
15
  super(...arguments);
15
- this.provider = 'openai';
16
+ this.provider = PROVIDER.OPENAI;
16
17
  this.roleMappings = {
17
18
  system: 'system',
18
19
  user: 'user',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layer-ai/core",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
4
4
  "description": "Core API routes and services for Layer AI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",