diff --git a/src/globals.ts b/src/globals.ts index 4d6e327e4..96fa98cae 100644 --- a/src/globals.ts +++ b/src/globals.ts @@ -113,6 +113,7 @@ export const ORACLE: string = 'oracle'; export const IO_INTELLIGENCE: string = 'iointelligence'; export const AIBADGR: string = 'aibadgr'; export const OVHCLOUD: string = 'ovhcloud'; +export const TOKENLAB: string = 'tokenlab'; export const VALID_PROVIDERS = [ ANTHROPIC, @@ -189,6 +190,7 @@ export const VALID_PROVIDERS = [ IO_INTELLIGENCE, AIBADGR, OVHCLOUD, + TOKENLAB, ]; export const CONTENT_TYPES = { diff --git a/src/providers/index.ts b/src/providers/index.ts index 2cd5355f8..2ed17fe10 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -74,6 +74,7 @@ import OracleConfig from './oracle'; import IOIntelligenceConfig from './iointelligence'; import AIBadgrConfig from './aibadgr'; import OVHcloudConfig from './ovhcloud'; +import TokenLabConfig from './tokenlab'; const Providers: { [key: string]: ProviderConfigs } = { openai: OpenAIConfig, @@ -148,6 +149,7 @@ const Providers: { [key: string]: ProviderConfigs } = { iointelligence: IOIntelligenceConfig, aibadgr: AIBadgrConfig, ovhcloud: OVHcloudConfig, + tokenlab: TokenLabConfig, }; export default Providers; diff --git a/src/providers/tokenlab/api.ts b/src/providers/tokenlab/api.ts new file mode 100644 index 000000000..69856a2a9 --- /dev/null +++ b/src/providers/tokenlab/api.ts @@ -0,0 +1,24 @@ +import { ProviderAPIConfig } from '../types'; + +const TokenLabAPIConfig: ProviderAPIConfig = { + getBaseURL: () => 'https://api.tokenlab.sh/v1', + headers: ({ providerOptions }) => ({ + Authorization: `Bearer ${providerOptions.apiKey}`, + }), + getEndpoint: ({ fn, gatewayRequestURL }) => { + const basePath = gatewayRequestURL.split('/v1')?.[1]; + switch (fn) { + case 'chatComplete': + return '/chat/completions'; + case 'createModelResponse': + case 'getModelResponse': + case 'deleteModelResponse': + case 'listResponseInputItems': + return basePath; + default: + return ''; + } + }, +}; + +export default TokenLabAPIConfig; diff --git a/src/providers/tokenlab/index.ts b/src/providers/tokenlab/index.ts new file mode 100644 index 000000000..23871e0dd --- /dev/null +++ b/src/providers/tokenlab/index.ts @@ -0,0 +1,30 @@ +import { TOKENLAB } from '../../globals'; +import { + chatCompleteParams, + createModelResponseParams, + OpenAICreateModelResponseTransformer, + OpenAIDeleteModelResponseTransformer, + OpenAIGetModelResponseTransformer, + OpenAIListInputItemsResponseTransformer, + responseTransformers, +} from '../open-ai-base'; +import { ProviderConfigs } from '../types'; +import TokenLabAPIConfig from './api'; + +const TokenLabConfig: ProviderConfigs = { + api: TokenLabAPIConfig, + chatComplete: chatCompleteParams([], { model: 'gpt-5.4-mini' }), + createModelResponse: createModelResponseParams([]), + getModelResponse: {}, + deleteModelResponse: {}, + listResponseInputItems: {}, + responseTransforms: { + ...responseTransformers(TOKENLAB, { chatComplete: true }), + createModelResponse: OpenAICreateModelResponseTransformer(TOKENLAB), + getModelResponse: OpenAIGetModelResponseTransformer(TOKENLAB), + deleteModelResponse: OpenAIDeleteModelResponseTransformer(TOKENLAB), + listResponseInputItems: OpenAIListInputItemsResponseTransformer(TOKENLAB), + }, +}; + +export default TokenLabConfig; diff --git a/src/public/index.html b/src/public/index.html index 014ff42b1..aef5b3cf2 100644 --- a/src/public/index.html +++ b/src/public/index.html @@ -1182,6 +1182,7 @@