@ax-llm/ax 11.0.0 → 11.0.1

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.
package/index.d.ts CHANGED
@@ -61,7 +61,7 @@ declare class AxAIServiceAuthenticationError extends AxAIServiceError {
61
61
  constructor(url: string, requestBody?: unknown, context?: Record<string, unknown>);
62
62
  }
63
63
 
64
- type AxAIModelList<T = string> = {
64
+ type AxAIModelList<T = unknown> = {
65
65
  key: string;
66
66
  model: T;
67
67
  description: string;
@@ -140,7 +140,7 @@ type AxEmbedResponse = {
140
140
  type AxModelInfoWithProvider = AxModelInfo & {
141
141
  provider: string;
142
142
  };
143
- type AxChatRequest = {
143
+ type AxChatRequest<TModel = string> = {
144
144
  chatPrompt: Readonly<{
145
145
  role: 'system';
146
146
  content: string;
@@ -196,7 +196,7 @@ type AxChatRequest = {
196
196
  };
197
197
  };
198
198
  modelConfig?: Readonly<AxModelConfig>;
199
- model?: string;
199
+ model?: TModel;
200
200
  };
201
201
  interface AxAIServiceMetrics {
202
202
  latency: {
@@ -226,12 +226,12 @@ interface AxAIServiceMetrics {
226
226
  };
227
227
  };
228
228
  }
229
- type AxInternalChatRequest = Omit<AxChatRequest, 'model'> & Required<Pick<AxChatRequest, 'model'>>;
230
- type AxEmbedRequest = {
229
+ type AxInternalChatRequest<TModel> = Omit<AxChatRequest, 'model'> & Required<Pick<AxChatRequest<TModel>, 'model'>>;
230
+ type AxEmbedRequest<TEmbedModel = string> = {
231
231
  texts?: readonly string[];
232
- embedModel?: string;
232
+ embedModel?: TEmbedModel;
233
233
  };
234
- type AxInternalEmbedRequest = Omit<AxEmbedRequest, 'embedModel'> & Required<Pick<AxEmbedRequest, 'embedModel'>>;
234
+ type AxInternalEmbedRequest<TEmbedModel> = Omit<AxEmbedRequest, 'embedModel'> & Required<Pick<AxEmbedRequest<TEmbedModel>, 'embedModel'>>;
235
235
  type AxRateLimiterFunction = <T = unknown>(reqFunc: () => Promise<T | ReadableStream$1<T>>, info: Readonly<{
236
236
  modelUsage?: AxTokenUsage;
237
237
  embedModelUsage?: AxTokenUsage;
@@ -245,29 +245,30 @@ type AxAIServiceOptions = {
245
245
  fetch?: typeof fetch;
246
246
  tracer?: Tracer;
247
247
  };
248
- type AxAIServiceActionOptions = {
249
- ai?: Readonly<AxAIService>;
248
+ type AxAIServiceActionOptions<TModel = unknown, TEmbedModel = unknown> = {
249
+ ai?: Readonly<AxAIService<TModel, TEmbedModel>>;
250
250
  sessionId?: string;
251
251
  traceId?: string;
252
252
  rateLimiter?: AxRateLimiterFunction;
253
253
  };
254
- interface AxAIService {
254
+ interface AxAIService<TModel = unknown, TEmbedModel = unknown> {
255
+ getId(): string;
255
256
  getName(): string;
256
257
  getModelInfo(): Readonly<AxModelInfoWithProvider>;
257
258
  getEmbedModelInfo(): Readonly<AxModelInfoWithProvider> | undefined;
258
- getFeatures(model?: string): AxAIFeatures;
259
- getModelList(): AxAIModelList | undefined;
259
+ getFeatures(model?: TModel): AxAIFeatures;
260
+ getModelList(): AxAIModelList<TModel> | undefined;
260
261
  getMetrics(): AxAIServiceMetrics;
261
- chat(req: Readonly<AxChatRequest>, options?: Readonly<AxAIPromptConfig & AxAIServiceActionOptions>): Promise<AxChatResponse | ReadableStream$1<AxChatResponse>>;
262
- embed(req: Readonly<AxEmbedRequest>, options?: Readonly<AxAIServiceActionOptions & AxAIServiceActionOptions>): Promise<AxEmbedResponse>;
262
+ chat(req: Readonly<AxChatRequest<TModel>>, options?: Readonly<AxAIPromptConfig & AxAIServiceActionOptions<TModel, TEmbedModel>>): Promise<AxChatResponse | ReadableStream$1<AxChatResponse>>;
263
+ embed(req: Readonly<AxEmbedRequest<TEmbedModel>>, options?: Readonly<AxAIServiceActionOptions<TModel, TEmbedModel>>): Promise<AxEmbedResponse>;
263
264
  setOptions(options: Readonly<AxAIServiceOptions>): void;
264
265
  getOptions(): Readonly<AxAIServiceOptions>;
265
266
  }
266
- interface AxAIServiceImpl<TChatRequest, TEmbedRequest, TChatResponse, TChatResponseDelta, TEmbedResponse> {
267
- createChatReq(req: Readonly<AxInternalChatRequest>, config: Readonly<AxAIPromptConfig>): [AxAPI, TChatRequest];
267
+ interface AxAIServiceImpl<TModel, TEmbedModel, TChatRequest, TEmbedRequest, TChatResponse, TChatResponseDelta, TEmbedResponse> {
268
+ createChatReq(req: Readonly<AxInternalChatRequest<TModel>>, config: Readonly<AxAIPromptConfig>): [AxAPI, TChatRequest];
268
269
  createChatResp(resp: Readonly<TChatResponse>): AxChatResponse;
269
270
  createChatStreamResp?(resp: Readonly<TChatResponseDelta>, state: object): AxChatResponse;
270
- createEmbedReq?(req: Readonly<AxInternalEmbedRequest>): [AxAPI, TEmbedRequest];
271
+ createEmbedReq?(req: Readonly<AxInternalEmbedRequest<TEmbedModel>>): [AxAPI, TEmbedRequest];
271
272
  createEmbedResp?(resp: Readonly<TEmbedResponse>): AxEmbedResponse;
272
273
  getModelConfig(): AxModelConfig;
273
274
  }
@@ -277,20 +278,20 @@ interface AxAIFeatures {
277
278
  streaming: boolean;
278
279
  functionCot?: boolean;
279
280
  }
280
- interface AxBaseAIArgs {
281
+ interface AxBaseAIArgs<TModel, TEmbedModel> {
281
282
  name: string;
282
283
  apiURL: string;
283
284
  headers: () => Promise<Record<string, string>>;
284
285
  modelInfo: Readonly<AxModelInfo[]>;
285
286
  defaults: Readonly<{
286
- model: string;
287
- embedModel?: string;
287
+ model: TModel;
288
+ embedModel?: TEmbedModel;
288
289
  }>;
289
290
  options?: Readonly<AxAIServiceOptions>;
290
- supportFor: AxAIFeatures | ((model: string) => AxAIFeatures);
291
- models?: AxAIModelList;
291
+ supportFor: AxAIFeatures | ((model: TModel) => AxAIFeatures);
292
+ models?: AxAIModelList<TModel>;
292
293
  }
293
- declare class AxBaseAI<TChatRequest, TEmbedRequest, TChatResponse, TChatResponseDelta, TEmbedResponse> implements AxAIService {
294
+ declare class AxBaseAI<TModel, TEmbedModel, TChatRequest, TEmbedRequest, TChatResponse, TChatResponseDelta, TEmbedResponse> implements AxAIService<TModel, TEmbedModel> {
294
295
  private readonly aiImpl;
295
296
  private debug;
296
297
  private rt?;
@@ -303,28 +304,30 @@ declare class AxBaseAI<TChatRequest, TEmbedRequest, TChatResponse, TChatResponse
303
304
  private defaults;
304
305
  protected apiURL: string;
305
306
  protected name: string;
307
+ protected id: string;
306
308
  protected headers: () => Promise<Record<string, string>>;
307
- protected supportFor: AxAIFeatures | ((model: string) => AxAIFeatures);
309
+ protected supportFor: AxAIFeatures | ((model: TModel) => AxAIFeatures);
308
310
  private metrics;
309
- constructor(aiImpl: Readonly<AxAIServiceImpl<TChatRequest, TEmbedRequest, TChatResponse, TChatResponseDelta, TEmbedResponse>>, { name, apiURL, headers, modelInfo, defaults, options, supportFor, models, }: Readonly<AxBaseAIArgs>);
311
+ constructor(aiImpl: Readonly<AxAIServiceImpl<TModel, TEmbedModel, TChatRequest, TEmbedRequest, TChatResponse, TChatResponseDelta, TEmbedResponse>>, { name, apiURL, headers, modelInfo, defaults, options, supportFor, models, }: Readonly<AxBaseAIArgs<TModel, TEmbedModel>>);
310
312
  setName(name: string): void;
313
+ getId(): string;
311
314
  setAPIURL(apiURL: string): void;
312
315
  setHeaders(headers: () => Promise<Record<string, string>>): void;
313
316
  setOptions(options: Readonly<AxAIServiceOptions>): void;
314
317
  getOptions(): Readonly<AxAIServiceOptions>;
315
318
  getModelInfo(): Readonly<AxModelInfoWithProvider>;
316
319
  getEmbedModelInfo(): AxModelInfoWithProvider | undefined;
317
- getModelList(): AxAIModelList | undefined;
320
+ getModelList(): AxAIModelList<TModel> | undefined;
318
321
  getName(): string;
319
- getFeatures(model?: string): AxAIFeatures;
322
+ getFeatures(model?: TModel): AxAIFeatures;
320
323
  private calculatePercentile;
321
324
  private updateLatencyMetrics;
322
325
  private updateErrorMetrics;
323
326
  getMetrics(): AxAIServiceMetrics;
324
- chat(req: Readonly<AxChatRequest>, options?: Readonly<AxAIPromptConfig & AxAIServiceActionOptions>): Promise<AxChatResponse | ReadableStream$1<AxChatResponse>>;
327
+ chat(req: Readonly<AxChatRequest<TModel>>, options?: Readonly<AxAIPromptConfig & AxAIServiceActionOptions<TModel, TEmbedModel>>): Promise<AxChatResponse | ReadableStream$1<AxChatResponse>>;
325
328
  private _chat1;
326
329
  private _chat2;
327
- embed(req: Readonly<AxEmbedRequest>, options?: Readonly<AxAIServiceActionOptions>): Promise<AxEmbedResponse>;
330
+ embed(req: Readonly<AxEmbedRequest<TEmbedModel>>, options?: Readonly<AxAIServiceActionOptions<TModel, TEmbedModel>>): Promise<AxEmbedResponse>;
328
331
  private _embed1;
329
332
  private _embed2;
330
333
  private buildHeaders;
@@ -526,9 +529,9 @@ interface AxAIAnthropicArgs {
526
529
  region?: string;
527
530
  config?: Readonly<Partial<AxAIAnthropicConfig>>;
528
531
  options?: Readonly<AxAIServiceOptions>;
529
- models?: AxAIModelList<AxAIAnthropicModel | string>;
532
+ models?: AxAIModelList<AxAIAnthropicModel>;
530
533
  }
531
- declare class AxAIAnthropic extends AxBaseAI<AxAIAnthropicChatRequest, unknown, AxAIAnthropicChatResponse, AxAIAnthropicChatResponseDelta, unknown> {
534
+ declare class AxAIAnthropic extends AxBaseAI<AxAIAnthropicModel | AxAIAnthropicVertexModel, unknown, AxAIAnthropicChatRequest, unknown, AxAIAnthropicChatResponse, AxAIAnthropicChatResponseDelta, unknown> {
532
535
  constructor({ apiKey, projectId, region, config, options, models, }: Readonly<Omit<AxAIAnthropicArgs, 'name'>>);
533
536
  }
534
537
 
@@ -553,8 +556,8 @@ declare enum AxAIOpenAIEmbedModel {
553
556
  TextEmbedding3Large = "text-embedding-3-large"
554
557
  }
555
558
  type AxAIOpenAIConfig<TModel, TEmbedModel> = Omit<AxModelConfig, 'topK'> & {
556
- model: TModel | string;
557
- embedModel?: TEmbedModel | string;
559
+ model: TModel;
560
+ embedModel?: TEmbedModel;
558
561
  user?: string;
559
562
  responseFormat?: 'json_object';
560
563
  bestOf?: number;
@@ -591,8 +594,8 @@ interface AxAIOpenAIResponseDelta<T> {
591
594
  usage?: AxAIOpenAIUsage;
592
595
  system_fingerprint: string;
593
596
  }
594
- type AxAIOpenAIChatRequest = {
595
- model: string;
597
+ type AxAIOpenAIChatRequest<TModel> = {
598
+ model: TModel;
596
599
  reasoning_effort?: 'low' | 'medium' | 'high';
597
600
  store?: boolean;
598
601
  messages: ({
@@ -699,9 +702,9 @@ type AxAIOpenAIChatResponseDelta = AxAIOpenAIResponseDelta<{
699
702
  index: number;
700
703
  })[];
701
704
  }>;
702
- type AxAIOpenAIEmbedRequest = {
705
+ type AxAIOpenAIEmbedRequest<TEmbedModel> = {
703
706
  input: readonly string[];
704
- model: string;
707
+ model: TEmbedModel;
705
708
  dimensions?: number;
706
709
  user?: string;
707
710
  };
@@ -714,29 +717,35 @@ type AxAIOpenAIEmbedResponse = {
714
717
  usage: AxAIOpenAIUsage;
715
718
  };
716
719
 
717
- interface AxAIOpenAIArgs<TName = 'openai', TConfig = AxAIOpenAIConfig<AxAIOpenAIModel | string, AxAIOpenAIEmbedModel | string>, TModels = AxAIOpenAIModel | AxAIOpenAIEmbedModel> {
720
+ interface AxAIOpenAIArgs<TName = 'openai', TModel = AxAIOpenAIModel, TEmbedModel = AxAIOpenAIEmbedModel> extends Omit<AxAIOpenAIBaseArgs<TModel, TEmbedModel>, 'config' | 'modelInfo'> {
718
721
  name: TName;
722
+ config?: Partial<AxAIOpenAIBaseArgs<TModel, TEmbedModel>['config']>;
723
+ }
724
+ interface AxAIOpenAIBaseArgs<TModel, TEmbedModel> {
719
725
  apiKey: string;
720
726
  apiURL?: string;
721
- config?: Readonly<Partial<TConfig>>;
727
+ config: Readonly<AxAIOpenAIConfig<TModel, TEmbedModel>>;
722
728
  options?: Readonly<AxAIServiceOptions & {
723
729
  streamingUsage?: boolean;
724
730
  }>;
725
- modelInfo?: Readonly<AxModelInfo[]>;
726
- models?: AxAIModelList<TModels | string>;
731
+ modelInfo: Readonly<AxModelInfo[]>;
732
+ models?: AxAIModelList<TModel>;
727
733
  }
728
- declare class AxAIOpenAI<TArgs extends Omit<AxAIOpenAIArgs, 'name'> = Omit<AxAIOpenAIArgs, 'name'>, TModel = AxAIOpenAIModel, TEmbedModel = AxAIOpenAIEmbedModel> extends AxBaseAI<AxAIOpenAIChatRequest, AxAIOpenAIEmbedRequest, AxAIOpenAIChatResponse, AxAIOpenAIChatResponseDelta, AxAIOpenAIEmbedResponse> {
729
- constructor({ apiKey, config, options, apiURL, modelInfo, models, }: Readonly<TArgs>);
734
+ declare class AxAIOpenAIBase<TModel, TEmbedModel> extends AxBaseAI<TModel, TEmbedModel, AxAIOpenAIChatRequest<TModel>, AxAIOpenAIEmbedRequest<TEmbedModel>, AxAIOpenAIChatResponse, AxAIOpenAIChatResponseDelta, AxAIOpenAIEmbedResponse> {
735
+ constructor({ apiKey, config, options, apiURL, modelInfo, models, }: Readonly<Omit<AxAIOpenAIBaseArgs<TModel, TEmbedModel>, 'name'>>);
736
+ }
737
+ declare class AxAIOpenAI extends AxAIOpenAIBase<AxAIOpenAIModel, AxAIOpenAIEmbedModel> {
738
+ constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAIOpenAIArgs, 'name' | 'modelInfo'>>);
730
739
  }
731
740
 
732
741
  type AxAIAzureOpenAIConfig = AxAIOpenAIConfig<AxAIOpenAIModel, AxAIOpenAIEmbedModel>;
733
- type AxAIAzureOpenAIArgs = AxAIOpenAIArgs<'azure-openai', AxAIAzureOpenAIConfig, AxAIOpenAIModel | AxAIOpenAIEmbedModel> & {
742
+ type AxAIAzureOpenAIArgs = AxAIOpenAIArgs<'azure-openai', AxAIOpenAIModel, AxAIOpenAIEmbedModel> & {
734
743
  resourceName: string;
735
744
  deploymentName: string;
736
745
  version?: string;
737
746
  };
738
- declare class AxAIAzureOpenAI extends AxAIOpenAI {
739
- constructor({ apiKey, resourceName, deploymentName, version, config, options, models, }: Readonly<Omit<AxAIAzureOpenAIArgs, 'name'>>);
747
+ declare class AxAIAzureOpenAI extends AxAIOpenAIBase<AxAIOpenAIModel, AxAIOpenAIEmbedModel> {
748
+ constructor({ apiKey, resourceName, deploymentName, version, config, options, models, }: Readonly<Omit<AxAIAzureOpenAIArgs, 'name' | 'modelInfo'>>);
740
749
  }
741
750
 
742
751
  /**
@@ -790,7 +799,7 @@ type AxAICohereChatRequest = {
790
799
  message?: string;
791
800
  tool_results: AxAICohereChatRequestToolResults;
792
801
  })[];
793
- model: AxAICohereModel | string;
802
+ model: AxAICohereModel;
794
803
  max_tokens?: number;
795
804
  temperature?: number;
796
805
  k?: number;
@@ -828,13 +837,13 @@ type AxAICohereChatResponseDelta = AxAICohereChatResponse & {
828
837
  };
829
838
  type AxAICohereEmbedRequest = {
830
839
  texts: readonly string[];
831
- model: AxAICohereModel | string;
840
+ model: AxAICohereEmbedModel;
832
841
  truncate: string;
833
842
  };
834
843
  type AxAICohereEmbedResponse = {
835
844
  id: string;
836
845
  texts: string[];
837
- model: string;
846
+ model: AxAICohereEmbedModel;
838
847
  embeddings: number[][];
839
848
  };
840
849
 
@@ -843,9 +852,9 @@ interface AxAICohereArgs {
843
852
  apiKey: string;
844
853
  config?: Readonly<Partial<AxAICohereConfig>>;
845
854
  options?: Readonly<AxAIServiceOptions>;
846
- models?: AxAIModelList<AxAICohereModel | AxAICohereEmbedModel | string>;
855
+ models?: AxAIModelList<AxAICohereModel>;
847
856
  }
848
- declare class AxAICohere extends AxBaseAI<AxAICohereChatRequest, AxAICohereEmbedRequest, AxAICohereChatResponse, AxAICohereChatResponseDelta, AxAICohereEmbedResponse> {
857
+ declare class AxAICohere extends AxBaseAI<AxAICohereModel, AxAICohereEmbedModel, AxAICohereChatRequest, AxAICohereEmbedRequest, AxAICohereChatResponse, AxAICohereChatResponseDelta, AxAICohereEmbedResponse> {
849
858
  constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAICohereArgs, 'name'>>);
850
859
  }
851
860
 
@@ -857,9 +866,8 @@ declare enum AxAIDeepSeekModel {
857
866
  DeepSeekCoder = "deepseek-coder"
858
867
  }
859
868
 
860
- type DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;
861
- type AxAIDeepSeekArgs = AxAIOpenAIArgs<'deepseek', DeepSeekConfig, AxAIDeepSeekModel>;
862
- declare class AxAIDeepSeek extends AxAIOpenAI<Omit<AxAIDeepSeekArgs, 'name'>, AxAIDeepSeekModel> {
869
+ type AxAIDeepSeekArgs = AxAIOpenAIArgs<'deepseek', AxAIDeepSeekModel, undefined>;
870
+ declare class AxAIDeepSeek extends AxAIOpenAIBase<AxAIDeepSeekModel, undefined> {
863
871
  constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>);
864
872
  }
865
873
 
@@ -998,7 +1006,7 @@ type AxAIGoogleGeminiChatResponseDelta = AxAIGoogleGeminiChatResponse;
998
1006
  * AxAIGoogleGeminiConfig: Configuration options for Google Gemini API
999
1007
  */
1000
1008
  type AxAIGoogleGeminiConfig = AxModelConfig & {
1001
- model: AxAIGoogleGeminiModel | string;
1009
+ model: AxAIGoogleGeminiModel;
1002
1010
  embedModel?: AxAIGoogleGeminiEmbedModel;
1003
1011
  safetySettings?: AxAIGoogleGeminiSafetySettings;
1004
1012
  };
@@ -1056,12 +1064,12 @@ interface AxAIGoogleGeminiArgs {
1056
1064
  region?: string;
1057
1065
  config?: Readonly<Partial<AxAIGoogleGeminiConfig>>;
1058
1066
  options?: Readonly<AxAIServiceOptions & AxAIGoogleGeminiOptionsTools>;
1059
- models?: AxAIModelList<AxAIGoogleGeminiModel | AxAIGoogleGeminiEmbedModel | string>;
1067
+ models?: AxAIModelList<AxAIGoogleGeminiModel>;
1060
1068
  }
1061
1069
  /**
1062
1070
  * AxAIGoogleGemini: AI Service
1063
1071
  */
1064
- declare class AxAIGoogleGemini extends AxBaseAI<AxAIGoogleGeminiChatRequest, AxAIGoogleGeminiBatchEmbedRequest | AxAIGoogleVertexBatchEmbedRequest, AxAIGoogleGeminiChatResponse, AxAIGoogleGeminiChatResponseDelta, AxAIGoogleGeminiBatchEmbedResponse | AxAIGoogleVertexBatchEmbedResponse> {
1072
+ declare class AxAIGoogleGemini extends AxBaseAI<AxAIGoogleGeminiModel, AxAIGoogleGeminiEmbedModel, AxAIGoogleGeminiChatRequest, AxAIGoogleGeminiBatchEmbedRequest | AxAIGoogleVertexBatchEmbedRequest, AxAIGoogleGeminiChatResponse, AxAIGoogleGeminiChatResponseDelta, AxAIGoogleGeminiBatchEmbedResponse | AxAIGoogleVertexBatchEmbedResponse> {
1065
1073
  constructor({ apiKey, projectId, region, config, options, models, }: Readonly<Omit<AxAIGoogleGeminiArgs, 'name'>>);
1066
1074
  }
1067
1075
 
@@ -1072,13 +1080,12 @@ declare enum AxAIGroqModel {
1072
1080
  Gemma2_9B = "gemma2-9b-it"
1073
1081
  }
1074
1082
 
1075
- type AxAIGroqAIConfig = AxAIOpenAIConfig<AxAIGroqModel, undefined>;
1076
- type AxAIGroqArgs = AxAIOpenAIArgs<'groq', AxAIGroqAIConfig, AxAIGroqModel> & {
1083
+ type AxAIGroqArgs = AxAIOpenAIArgs<'groq', AxAIGroqModel, undefined> & {
1077
1084
  options?: Readonly<AxAIServiceOptions> & {
1078
1085
  tokensPerMinute?: number;
1079
1086
  };
1080
1087
  };
1081
- declare class AxAIGroq extends AxAIOpenAI<Omit<AxAIGroqArgs, 'name'>, AxAIGroqModel> {
1088
+ declare class AxAIGroq extends AxAIOpenAIBase<AxAIGroqModel, undefined> {
1082
1089
  constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAIGroqArgs, 'name'>>);
1083
1090
  setOptions: (options: Readonly<AxAIServiceOptions>) => void;
1084
1091
  private newRateLimiter;
@@ -1096,7 +1103,7 @@ type AxAIHuggingFaceConfig = AxModelConfig & {
1096
1103
  waitForModel?: boolean;
1097
1104
  };
1098
1105
  type AxAIHuggingFaceRequest = {
1099
- model: AxAIHuggingFaceModel | string;
1106
+ model: AxAIHuggingFaceModel;
1100
1107
  inputs: string;
1101
1108
  parameters: {
1102
1109
  max_new_tokens?: number;
@@ -1125,7 +1132,7 @@ interface AxAIHuggingFaceArgs {
1125
1132
  options?: Readonly<AxAIServiceOptions>;
1126
1133
  models?: AxAIModelList<AxAIHuggingFaceModel>;
1127
1134
  }
1128
- declare class AxAIHuggingFace extends AxBaseAI<AxAIHuggingFaceRequest, unknown, AxAIHuggingFaceResponse, unknown, unknown> {
1135
+ declare class AxAIHuggingFace extends AxBaseAI<AxAIHuggingFaceModel, unknown, AxAIHuggingFaceRequest, unknown, AxAIHuggingFaceResponse, unknown, unknown> {
1129
1136
  constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAIHuggingFaceArgs, 'name'>>);
1130
1137
  }
1131
1138
 
@@ -1143,18 +1150,17 @@ declare enum AxAIMistralEmbedModels {
1143
1150
  MistralEmbed = "mistral-embed"
1144
1151
  }
1145
1152
 
1146
- type AxAIMistralConfig = AxAIOpenAIConfig<AxAIMistralModel, AxAIMistralEmbedModels>;
1147
- type AxAIMistralArgs = AxAIOpenAIArgs<'mistral', AxAIMistralConfig, AxAIMistralModel | AxAIMistralEmbedModels> & {
1153
+ type AxAIMistralArgs = AxAIOpenAIArgs<'mistral', AxAIMistralModel, AxAIMistralEmbedModels> & {
1148
1154
  options?: Readonly<AxAIServiceOptions> & {
1149
1155
  tokensPerMinute?: number;
1150
1156
  };
1151
1157
  };
1152
- declare class AxAIMistral extends AxAIOpenAI<Omit<AxAIMistralArgs, 'name'>, AxAIMistralModel | AxAIMistralEmbedModels> {
1158
+ declare class AxAIMistral extends AxAIOpenAIBase<AxAIMistralModel, AxAIMistralEmbedModels> {
1153
1159
  constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAIMistralArgs, 'name'>>);
1154
1160
  }
1155
1161
 
1156
- type AxAIOllamaAIConfig = AxAIOpenAIConfig<string, undefined>;
1157
- type AxAIOllamaArgs = AxAIOpenAIArgs<'ollama', AxAIOllamaAIConfig, string> & {
1162
+ type AxAIOllamaAIConfig = AxAIOpenAIConfig<string, string>;
1163
+ type AxAIOllamaArgs = AxAIOpenAIArgs<'ollama', string, string> & {
1158
1164
  model?: string;
1159
1165
  embedModel?: string;
1160
1166
  url?: string;
@@ -1162,7 +1168,7 @@ type AxAIOllamaArgs = AxAIOpenAIArgs<'ollama', AxAIOllamaAIConfig, string> & {
1162
1168
  /**
1163
1169
  * OllamaAI: AI Service
1164
1170
  */
1165
- declare class AxAIOllama extends AxAIOpenAI<Omit<AxAIOllamaArgs, 'name'>, string> {
1171
+ declare class AxAIOllama extends AxAIOpenAIBase<string, string> {
1166
1172
  constructor({ apiKey, url, config, options, models, }: Readonly<Omit<AxAIOllamaArgs, 'name'>>);
1167
1173
  }
1168
1174
 
@@ -1172,7 +1178,7 @@ declare enum AxAIRekaModel {
1172
1178
  RekaEdge = "reka-edge"
1173
1179
  }
1174
1180
  type AxAIRekaConfig = Omit<AxModelConfig, 'topK'> & {
1175
- model: AxAIRekaModel | string;
1181
+ model: AxAIRekaModel;
1176
1182
  stop?: readonly string[];
1177
1183
  useSearchEngine?: boolean;
1178
1184
  };
@@ -1242,25 +1248,25 @@ interface AxAIRekaArgs {
1242
1248
  streamingUsage?: boolean;
1243
1249
  }>;
1244
1250
  modelInfo?: Readonly<AxModelInfo[]>;
1245
- models?: AxAIModelList<AxAIRekaModel | string>;
1251
+ models?: AxAIModelList<AxAIRekaModel>;
1246
1252
  }
1247
- declare class AxAIReka extends AxBaseAI<AxAIRekaChatRequest, unknown, AxAIRekaChatResponse, AxAIRekaChatResponseDelta, unknown> {
1253
+ declare class AxAIReka extends AxBaseAI<AxAIRekaModel, undefined, AxAIRekaChatRequest, unknown, AxAIRekaChatResponse, AxAIRekaChatResponseDelta, unknown> {
1248
1254
  constructor({ apiKey, config, options, apiURL, modelInfo, models, }: Readonly<Omit<AxAIRekaArgs, 'name'>>);
1249
1255
  }
1250
1256
 
1251
- type TogetherAIConfig = AxAIOpenAIConfig<string, undefined>;
1252
- type AxAITogetherArgs = AxAIOpenAIArgs<'together', TogetherAIConfig, string>;
1253
- declare class AxAITogether extends AxAIOpenAI<Omit<AxAITogetherArgs, 'name'>, string> {
1257
+ type AxAITogetherArgs = AxAIOpenAIArgs<'together', string, unknown>;
1258
+ declare class AxAITogether extends AxAIOpenAIBase<string, unknown> {
1254
1259
  constructor({ apiKey, config, options, models, }: Readonly<Omit<AxAITogetherArgs, 'name'>>);
1255
1260
  }
1256
1261
 
1257
1262
  type AxAIArgs = AxAIOpenAIArgs | AxAIAzureOpenAIArgs | AxAITogetherArgs | AxAIAnthropicArgs | AxAIGroqArgs | AxAIGoogleGeminiArgs | AxAICohereArgs | AxAIHuggingFaceArgs | AxAIMistralArgs | AxAIDeepSeekArgs | AxAIOllamaArgs | AxAIRekaArgs;
1258
- type AxAIModels = AxAIOpenAIModel | AxAIAnthropicModel | AxAIGroqModel | AxAIGoogleGeminiModel | AxAICohereModel | AxAIHuggingFaceModel | AxAIMistralModel | AxAIDeepSeekModel | string;
1259
- type AxAIEmbedModels = AxAIOpenAIEmbedModel | AxAIGoogleGeminiEmbedModel | AxAICohereEmbedModel | string;
1263
+ type AxAIModels = AxAIOpenAIModel | AxAIAnthropicModel | AxAIGroqModel | AxAIGoogleGeminiModel | AxAICohereModel | AxAIHuggingFaceModel | AxAIMistralModel | AxAIDeepSeekModel;
1264
+ type AxAIEmbedModels = AxAIOpenAIEmbedModel | AxAIGoogleGeminiEmbedModel | AxAICohereEmbedModel;
1260
1265
  declare class AxAI implements AxAIService {
1261
1266
  private ai;
1262
1267
  constructor(options: Readonly<AxAIArgs>);
1263
1268
  getName(): string;
1269
+ getId(): string;
1264
1270
  getModelInfo(): Readonly<AxModelInfoWithProvider>;
1265
1271
  getEmbedModelInfo(): Readonly<AxModelInfoWithProvider> | undefined;
1266
1272
  getFeatures(model?: string): {
@@ -1667,6 +1673,9 @@ declare class AxApacheTika {
1667
1673
  type AxBalancerOptions = {
1668
1674
  comparator?: (a: AxAIService, b: AxAIService) => number;
1669
1675
  debug?: boolean;
1676
+ initialBackoffMs?: number;
1677
+ maxBackoffMs?: number;
1678
+ maxRetries?: number;
1670
1679
  };
1671
1680
  /**
1672
1681
  * Balancer that rotates through services.
@@ -1676,6 +1685,10 @@ declare class AxBalancer implements AxAIService {
1676
1685
  private currentServiceIndex;
1677
1686
  private currentService;
1678
1687
  private debug;
1688
+ private initialBackoffMs;
1689
+ private maxBackoffMs;
1690
+ private maxRetries;
1691
+ private serviceFailures;
1679
1692
  constructor(services: readonly AxAIService[], options?: AxBalancerOptions);
1680
1693
  /**
1681
1694
  * Service comparator that respects the input order of services.
@@ -1689,10 +1702,14 @@ declare class AxBalancer implements AxAIService {
1689
1702
  private getNextService;
1690
1703
  private reset;
1691
1704
  getName(): string;
1705
+ getId(): string;
1692
1706
  getModelInfo(): Readonly<AxModelInfoWithProvider>;
1693
1707
  getEmbedModelInfo(): Readonly<AxModelInfoWithProvider> | undefined;
1694
1708
  getFeatures(model?: string): AxAIFeatures;
1695
1709
  getMetrics(): AxAIServiceMetrics;
1710
+ private canRetryService;
1711
+ private handleFailure;
1712
+ private handleSuccess;
1696
1713
  chat(req: Readonly<AxChatRequest>, options?: Readonly<AxAIPromptConfig & AxAIServiceActionOptions> | undefined): Promise<AxChatResponse | ReadableStream$1<AxChatResponse>>;
1697
1714
  embed(req: Readonly<AxEmbedRequest>, options?: Readonly<AxAIServiceActionOptions> | undefined): Promise<AxEmbedResponse>;
1698
1715
  setOptions(options: Readonly<AxAIServiceOptions>): void;
@@ -2174,6 +2191,7 @@ declare class AxMockAIService implements AxAIService {
2174
2191
  private metrics;
2175
2192
  constructor(config?: {
2176
2193
  name?: string;
2194
+ id?: string;
2177
2195
  modelInfo?: Partial<AxModelInfoWithProvider>;
2178
2196
  embedModelInfo?: AxModelInfoWithProvider;
2179
2197
  features?: {
@@ -2188,6 +2206,7 @@ declare class AxMockAIService implements AxAIService {
2188
2206
  latencyMs?: number;
2189
2207
  });
2190
2208
  getName(): string;
2209
+ getId(): string;
2191
2210
  getModelInfo(): Readonly<AxModelInfoWithProvider>;
2192
2211
  getEmbedModelInfo(): Readonly<AxModelInfoWithProvider> | undefined;
2193
2212
  getFeatures(_model?: string): {
@@ -2223,4 +2242,4 @@ declare class AxRAG extends AxChainOfThought<{
2223
2242
  }>;
2224
2243
  }
2225
2244
 
2226
- export { AxAI, AxAIAnthropic, type AxAIAnthropicArgs, type AxAIAnthropicChatError, type AxAIAnthropicChatRequest, type AxAIAnthropicChatRequestCacheParam, type AxAIAnthropicChatResponse, type AxAIAnthropicChatResponseDelta, type AxAIAnthropicConfig, type AxAIAnthropicContentBlockDeltaEvent, type AxAIAnthropicContentBlockStartEvent, type AxAIAnthropicContentBlockStopEvent, type AxAIAnthropicErrorEvent, type AxAIAnthropicMessageDeltaEvent, type AxAIAnthropicMessageStartEvent, type AxAIAnthropicMessageStopEvent, AxAIAnthropicModel, type AxAIAnthropicPingEvent, AxAIAnthropicVertexModel, type AxAIArgs, AxAIAzureOpenAI, type AxAIAzureOpenAIArgs, type AxAIAzureOpenAIConfig, AxAICohere, type AxAICohereArgs, type AxAICohereChatRequest, type AxAICohereChatRequestToolResults, type AxAICohereChatResponse, type AxAICohereChatResponseDelta, type AxAICohereChatResponseToolCalls, type AxAICohereConfig, AxAICohereEmbedModel, type AxAICohereEmbedRequest, type AxAICohereEmbedResponse, AxAICohereModel, AxAIDeepSeek, type AxAIDeepSeekArgs, AxAIDeepSeekModel, type AxAIEmbedModels, type AxAIFeatures, AxAIGoogleGemini, type AxAIGoogleGeminiArgs, type AxAIGoogleGeminiBatchEmbedRequest, type AxAIGoogleGeminiBatchEmbedResponse, type AxAIGoogleGeminiChatRequest, type AxAIGoogleGeminiChatResponse, type AxAIGoogleGeminiChatResponseDelta, type AxAIGoogleGeminiConfig, type AxAIGoogleGeminiContent, AxAIGoogleGeminiEmbedModel, type AxAIGoogleGeminiGenerationConfig, AxAIGoogleGeminiModel, type AxAIGoogleGeminiOptionsTools, AxAIGoogleGeminiSafetyCategory, type AxAIGoogleGeminiSafetySettings, AxAIGoogleGeminiSafetyThreshold, type AxAIGoogleGeminiTool, type AxAIGoogleGeminiToolConfig, type AxAIGoogleGeminiToolFunctionDeclaration, type AxAIGoogleGeminiToolGoogleSearchRetrieval, type AxAIGoogleVertexBatchEmbedRequest, type AxAIGoogleVertexBatchEmbedResponse, AxAIGroq, type AxAIGroqArgs, AxAIGroqModel, AxAIHuggingFace, type AxAIHuggingFaceArgs, type AxAIHuggingFaceConfig, AxAIHuggingFaceModel, type AxAIHuggingFaceRequest, type AxAIHuggingFaceResponse, type AxAIMemory, AxAIMistral, type AxAIMistralArgs, AxAIMistralEmbedModels, AxAIMistralModel, type AxAIModelList, type AxAIModels, AxAIOllama, type AxAIOllamaAIConfig, type AxAIOllamaArgs, AxAIOpenAI, type AxAIOpenAIArgs, type AxAIOpenAIChatRequest, type AxAIOpenAIChatResponse, type AxAIOpenAIChatResponseDelta, type AxAIOpenAIConfig, AxAIOpenAIEmbedModel, type AxAIOpenAIEmbedRequest, type AxAIOpenAIEmbedResponse, type AxAIOpenAILogprob, AxAIOpenAIModel, type AxAIOpenAIResponseDelta, type AxAIOpenAIUsage, type AxAIPromptConfig, AxAIReka, type AxAIRekaArgs, type AxAIRekaChatRequest, type AxAIRekaChatResponse, type AxAIRekaChatResponseDelta, type AxAIRekaConfig, AxAIRekaModel, type AxAIRekaUsage, type AxAIService, type AxAIServiceActionOptions, AxAIServiceAuthenticationError, AxAIServiceError, type AxAIServiceImpl, type AxAIServiceMetrics, AxAIServiceNetworkError, type AxAIServiceOptions, AxAIServiceResponseError, AxAIServiceStatusError, AxAIServiceStreamTerminatedError, AxAIServiceTimeoutError, AxAITogether, type AxAITogetherArgs, type AxAPI, type AxAPIConfig, AxAgent, type AxAgentOptions, type AxAgentic, AxApacheTika, type AxApacheTikaArgs, type AxApacheTikaConvertOptions, type AxAssertion, AxAssertionError, AxBalancer, type AxBalancerOptions, AxBaseAI, type AxBaseAIArgs, AxBootstrapFewShot, AxChainOfThought, type AxChatRequest, type AxChatResponse, type AxChatResponseFunctionCall, type AxChatResponseResult, AxDB, type AxDBArgs, AxDBBase, type AxDBBaseArgs, type AxDBBaseOpOptions, AxDBCloudflare, type AxDBCloudflareArgs, type AxDBCloudflareOpOptions, type AxDBLoaderOptions, AxDBManager, type AxDBManagerArgs, type AxDBMatch, AxDBMemory, type AxDBMemoryArgs, type AxDBMemoryOpOptions, AxDBPinecone, type AxDBPineconeArgs, type AxDBPineconeOpOptions, type AxDBQueryRequest, type AxDBQueryResponse, type AxDBQueryService, type AxDBService, type AxDBState, type AxDBUpsertRequest, type AxDBUpsertResponse, AxDBWeaviate, type AxDBWeaviateArgs, type AxDBWeaviateOpOptions, type AxDataRow, AxDefaultQueryRewriter, AxDefaultResultReranker, type AxDockerContainer, AxDockerSession, type AxEmbedRequest, type AxEmbedResponse, AxEmbeddingAdapter, type AxEvaluateArgs, type AxExample, type AxField, type AxFieldTemplateFn, type AxFieldValue, type AxFunction, AxFunctionError, type AxFunctionHandler, type AxFunctionJSONSchema, AxFunctionProcessor, AxGen, type AxGenDeltaOut, type AxGenIn, type AxGenOptions, type AxGenOut, type AxGenStreamingOut, type AxGenerateResult, AxHFDataLoader, type AxIField, type AxInputFunctionType, AxInstanceRegistry, type AxInternalChatRequest, type AxInternalEmbedRequest, AxJSInterpreter, AxJSInterpreterPermission, AxLLMRequestTypeValues, AxMemory, type AxMetricFn, type AxMetricFnArgs, AxMockAIService, type AxModelConfig, type AxModelInfo, type AxModelInfoWithProvider, type AxOptimizerArgs, AxProgram, type AxProgramDemos, type AxProgramExamples, type AxProgramForwardOptions, type AxProgramStreamingForwardOptions, type AxProgramTrace, type AxProgramUsage, AxProgramWithSignature, type AxProgramWithSignatureOptions, AxPromptTemplate, AxRAG, type AxRateLimiterFunction, AxRateLimiterTokenUsage, type AxRateLimiterTokenUsageOptions, type AxRerankerIn, type AxRerankerOut, type AxResponseHandlerArgs, type AxRewriteIn, type AxRewriteOut, AxRoute, AxRouter, type AxRouterForwardOptions, AxSignature, AxSpanKindValues, type AxStreamingAssertion, type AxStreamingEvent, AxTestPrompt, type AxTokenUsage, type AxTunable, type AxUsable };
2245
+ export { AxAI, AxAIAnthropic, type AxAIAnthropicArgs, type AxAIAnthropicChatError, type AxAIAnthropicChatRequest, type AxAIAnthropicChatRequestCacheParam, type AxAIAnthropicChatResponse, type AxAIAnthropicChatResponseDelta, type AxAIAnthropicConfig, type AxAIAnthropicContentBlockDeltaEvent, type AxAIAnthropicContentBlockStartEvent, type AxAIAnthropicContentBlockStopEvent, type AxAIAnthropicErrorEvent, type AxAIAnthropicMessageDeltaEvent, type AxAIAnthropicMessageStartEvent, type AxAIAnthropicMessageStopEvent, AxAIAnthropicModel, type AxAIAnthropicPingEvent, AxAIAnthropicVertexModel, type AxAIArgs, AxAIAzureOpenAI, type AxAIAzureOpenAIArgs, type AxAIAzureOpenAIConfig, AxAICohere, type AxAICohereArgs, type AxAICohereChatRequest, type AxAICohereChatRequestToolResults, type AxAICohereChatResponse, type AxAICohereChatResponseDelta, type AxAICohereChatResponseToolCalls, type AxAICohereConfig, AxAICohereEmbedModel, type AxAICohereEmbedRequest, type AxAICohereEmbedResponse, AxAICohereModel, AxAIDeepSeek, type AxAIDeepSeekArgs, AxAIDeepSeekModel, type AxAIEmbedModels, type AxAIFeatures, AxAIGoogleGemini, type AxAIGoogleGeminiArgs, type AxAIGoogleGeminiBatchEmbedRequest, type AxAIGoogleGeminiBatchEmbedResponse, type AxAIGoogleGeminiChatRequest, type AxAIGoogleGeminiChatResponse, type AxAIGoogleGeminiChatResponseDelta, type AxAIGoogleGeminiConfig, type AxAIGoogleGeminiContent, AxAIGoogleGeminiEmbedModel, type AxAIGoogleGeminiGenerationConfig, AxAIGoogleGeminiModel, type AxAIGoogleGeminiOptionsTools, AxAIGoogleGeminiSafetyCategory, type AxAIGoogleGeminiSafetySettings, AxAIGoogleGeminiSafetyThreshold, type AxAIGoogleGeminiTool, type AxAIGoogleGeminiToolConfig, type AxAIGoogleGeminiToolFunctionDeclaration, type AxAIGoogleGeminiToolGoogleSearchRetrieval, type AxAIGoogleVertexBatchEmbedRequest, type AxAIGoogleVertexBatchEmbedResponse, AxAIGroq, type AxAIGroqArgs, AxAIGroqModel, AxAIHuggingFace, type AxAIHuggingFaceArgs, type AxAIHuggingFaceConfig, AxAIHuggingFaceModel, type AxAIHuggingFaceRequest, type AxAIHuggingFaceResponse, type AxAIMemory, AxAIMistral, type AxAIMistralArgs, AxAIMistralEmbedModels, AxAIMistralModel, type AxAIModelList, type AxAIModels, AxAIOllama, type AxAIOllamaAIConfig, type AxAIOllamaArgs, AxAIOpenAI, type AxAIOpenAIArgs, AxAIOpenAIBase, type AxAIOpenAIBaseArgs, type AxAIOpenAIChatRequest, type AxAIOpenAIChatResponse, type AxAIOpenAIChatResponseDelta, type AxAIOpenAIConfig, AxAIOpenAIEmbedModel, type AxAIOpenAIEmbedRequest, type AxAIOpenAIEmbedResponse, type AxAIOpenAILogprob, AxAIOpenAIModel, type AxAIOpenAIResponseDelta, type AxAIOpenAIUsage, type AxAIPromptConfig, AxAIReka, type AxAIRekaArgs, type AxAIRekaChatRequest, type AxAIRekaChatResponse, type AxAIRekaChatResponseDelta, type AxAIRekaConfig, AxAIRekaModel, type AxAIRekaUsage, type AxAIService, type AxAIServiceActionOptions, AxAIServiceAuthenticationError, AxAIServiceError, type AxAIServiceImpl, type AxAIServiceMetrics, AxAIServiceNetworkError, type AxAIServiceOptions, AxAIServiceResponseError, AxAIServiceStatusError, AxAIServiceStreamTerminatedError, AxAIServiceTimeoutError, AxAITogether, type AxAITogetherArgs, type AxAPI, type AxAPIConfig, AxAgent, type AxAgentOptions, type AxAgentic, AxApacheTika, type AxApacheTikaArgs, type AxApacheTikaConvertOptions, type AxAssertion, AxAssertionError, AxBalancer, type AxBalancerOptions, AxBaseAI, type AxBaseAIArgs, AxBootstrapFewShot, AxChainOfThought, type AxChatRequest, type AxChatResponse, type AxChatResponseFunctionCall, type AxChatResponseResult, AxDB, type AxDBArgs, AxDBBase, type AxDBBaseArgs, type AxDBBaseOpOptions, AxDBCloudflare, type AxDBCloudflareArgs, type AxDBCloudflareOpOptions, type AxDBLoaderOptions, AxDBManager, type AxDBManagerArgs, type AxDBMatch, AxDBMemory, type AxDBMemoryArgs, type AxDBMemoryOpOptions, AxDBPinecone, type AxDBPineconeArgs, type AxDBPineconeOpOptions, type AxDBQueryRequest, type AxDBQueryResponse, type AxDBQueryService, type AxDBService, type AxDBState, type AxDBUpsertRequest, type AxDBUpsertResponse, AxDBWeaviate, type AxDBWeaviateArgs, type AxDBWeaviateOpOptions, type AxDataRow, AxDefaultQueryRewriter, AxDefaultResultReranker, type AxDockerContainer, AxDockerSession, type AxEmbedRequest, type AxEmbedResponse, AxEmbeddingAdapter, type AxEvaluateArgs, type AxExample, type AxField, type AxFieldTemplateFn, type AxFieldValue, type AxFunction, AxFunctionError, type AxFunctionHandler, type AxFunctionJSONSchema, AxFunctionProcessor, AxGen, type AxGenDeltaOut, type AxGenIn, type AxGenOptions, type AxGenOut, type AxGenStreamingOut, type AxGenerateResult, AxHFDataLoader, type AxIField, type AxInputFunctionType, AxInstanceRegistry, type AxInternalChatRequest, type AxInternalEmbedRequest, AxJSInterpreter, AxJSInterpreterPermission, AxLLMRequestTypeValues, AxMemory, type AxMetricFn, type AxMetricFnArgs, AxMockAIService, type AxModelConfig, type AxModelInfo, type AxModelInfoWithProvider, type AxOptimizerArgs, AxProgram, type AxProgramDemos, type AxProgramExamples, type AxProgramForwardOptions, type AxProgramStreamingForwardOptions, type AxProgramTrace, type AxProgramUsage, AxProgramWithSignature, type AxProgramWithSignatureOptions, AxPromptTemplate, AxRAG, type AxRateLimiterFunction, AxRateLimiterTokenUsage, type AxRateLimiterTokenUsageOptions, type AxRerankerIn, type AxRerankerOut, type AxResponseHandlerArgs, type AxRewriteIn, type AxRewriteOut, AxRoute, AxRouter, type AxRouterForwardOptions, AxSignature, AxSpanKindValues, type AxStreamingAssertion, type AxStreamingEvent, AxTestPrompt, type AxTokenUsage, type AxTunable, type AxUsable };