@ax-llm/ax 11.0.35 → 11.0.36

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.js CHANGED
@@ -837,12 +837,6 @@ var AxBaseAI = class {
837
837
  }
838
838
  return models;
839
839
  }
840
- getDefaultModels() {
841
- return {
842
- model: this.defaults.model,
843
- embedModel: this.defaults.embedModel
844
- };
845
- }
846
840
  getName() {
847
841
  return this.name;
848
842
  }
@@ -999,13 +993,18 @@ var AxBaseAI = class {
999
993
  if (!this.aiImpl.createChatStreamResp) {
1000
994
  throw new Error("generateChatResp not implemented");
1001
995
  }
1002
- const respFn = this.aiImpl.createChatStreamResp;
996
+ const respFn = this.aiImpl.createChatStreamResp.bind(this);
1003
997
  const wrappedRespFn = (state) => (resp) => {
1004
998
  const res2 = respFn(resp, state);
1005
999
  res2.sessionId = options?.sessionId;
1006
- if (res2.modelUsage) {
1007
- this.modelUsage = res2.modelUsage;
1000
+ if (!res2.modelUsage) {
1001
+ res2.modelUsage = {
1002
+ ai: this.name,
1003
+ model,
1004
+ tokens: this.aiImpl.getTokenUsage()
1005
+ };
1008
1006
  }
1007
+ this.modelUsage = res2.modelUsage;
1009
1008
  if (span?.isRecording()) {
1010
1009
  setResponseAttr(res2, span);
1011
1010
  }
@@ -1111,15 +1110,23 @@ var AxBaseAI = class {
1111
1110
  );
1112
1111
  return res2;
1113
1112
  };
1114
- const resValue = this.rt ? await this.rt(fn, { embedModelUsage: this.embedModelUsage }) : await fn();
1113
+ const resValue = this.rt ? await this.rt(fn, { modelUsage: this.embedModelUsage }) : await fn();
1115
1114
  const res = this.aiImpl.createEmbedResp(resValue);
1116
1115
  res.sessionId = options?.sessionId;
1116
+ if (!res.modelUsage) {
1117
+ res.modelUsage = {
1118
+ ai: this.name,
1119
+ model: embedModel,
1120
+ tokens: this.aiImpl.getTokenUsage()
1121
+ };
1122
+ }
1123
+ this.embedModelUsage = res.modelUsage;
1117
1124
  if (span?.isRecording()) {
1118
1125
  if (res.modelUsage) {
1119
1126
  this.embedModelUsage = res.modelUsage;
1120
1127
  span.setAttributes({
1121
- [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.completionTokens ?? 0,
1122
- [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.promptTokens
1128
+ [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.tokens?.completionTokens ?? 0,
1129
+ [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.tokens?.promptTokens
1123
1130
  });
1124
1131
  }
1125
1132
  }
@@ -1148,8 +1155,8 @@ var AxBaseAI = class {
1148
1155
  function setResponseAttr(res, span) {
1149
1156
  if (res.modelUsage) {
1150
1157
  span.setAttributes({
1151
- [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.completionTokens ?? 0,
1152
- [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.promptTokens
1158
+ [axSpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: res.modelUsage.tokens?.completionTokens ?? 0,
1159
+ [axSpanAttributes.LLM_USAGE_PROMPT_TOKENS]: res.modelUsage.tokens?.promptTokens
1153
1160
  });
1154
1161
  }
1155
1162
  }
@@ -1204,14 +1211,14 @@ var AxAIAnthropicModel = /* @__PURE__ */ ((AxAIAnthropicModel2) => {
1204
1211
  AxAIAnthropicModel2["ClaudeInstant12"] = "claude-instant-1.2";
1205
1212
  return AxAIAnthropicModel2;
1206
1213
  })(AxAIAnthropicModel || {});
1207
- var AxAIAnthropicVertexModel = /* @__PURE__ */ ((AxAIAnthropicVertexModel3) => {
1208
- AxAIAnthropicVertexModel3["Claude37Sonnet"] = "claude-3-7-sonnet";
1209
- AxAIAnthropicVertexModel3["Claude35Haiku"] = "claude-3-5-haiku";
1210
- AxAIAnthropicVertexModel3["Claude35Sonnet"] = "claude-3-5-sonnet";
1211
- AxAIAnthropicVertexModel3["Claude35SonnetV2"] = "claude-3-5-sonnet-v2";
1212
- AxAIAnthropicVertexModel3["Claude3Haiku"] = "claude-3-haiku";
1213
- AxAIAnthropicVertexModel3["Claude3Opus"] = "claude-3-opus";
1214
- return AxAIAnthropicVertexModel3;
1214
+ var AxAIAnthropicVertexModel = /* @__PURE__ */ ((AxAIAnthropicVertexModel2) => {
1215
+ AxAIAnthropicVertexModel2["Claude37Sonnet"] = "claude-3-7-sonnet";
1216
+ AxAIAnthropicVertexModel2["Claude35Haiku"] = "claude-3-5-haiku";
1217
+ AxAIAnthropicVertexModel2["Claude35Sonnet"] = "claude-3-5-sonnet";
1218
+ AxAIAnthropicVertexModel2["Claude35SonnetV2"] = "claude-3-5-sonnet-v2";
1219
+ AxAIAnthropicVertexModel2["Claude3Haiku"] = "claude-3-haiku";
1220
+ AxAIAnthropicVertexModel2["Claude3Opus"] = "claude-3-opus";
1221
+ return AxAIAnthropicVertexModel2;
1215
1222
  })(AxAIAnthropicVertexModel || {});
1216
1223
 
1217
1224
  // ai/anthropic/info.ts
@@ -1265,7 +1272,11 @@ var axModelInfoAnthropic = [
1265
1272
 
1266
1273
  // ai/anthropic/api.ts
1267
1274
  var axAIAnthropicDefaultConfig = () => structuredClone({
1268
- model: "claude-3-5-sonnet-latest" /* Claude35Sonnet */,
1275
+ model: "claude-3-7-sonnet-latest" /* Claude37Sonnet */,
1276
+ ...axBaseAIDefaultConfig()
1277
+ });
1278
+ var axAIAnthropicVertexDefaultConfig = () => structuredClone({
1279
+ model: "claude-3-7-sonnet" /* Claude37Sonnet */,
1269
1280
  ...axBaseAIDefaultConfig()
1270
1281
  });
1271
1282
  var AxAIAnthropicImpl = class {
@@ -1273,6 +1284,10 @@ var AxAIAnthropicImpl = class {
1273
1284
  this.config = config;
1274
1285
  this.isVertex = isVertex;
1275
1286
  }
1287
+ tokensUsed;
1288
+ getTokenUsage() {
1289
+ return this.tokensUsed;
1290
+ }
1276
1291
  getModelConfig() {
1277
1292
  const { config } = this;
1278
1293
  return {
@@ -1382,16 +1397,12 @@ var AxAIAnthropicImpl = class {
1382
1397
  finishReason
1383
1398
  };
1384
1399
  });
1385
- const modelUsage = {
1400
+ this.tokensUsed = {
1386
1401
  promptTokens: resp.usage.input_tokens,
1387
1402
  completionTokens: resp.usage.output_tokens,
1388
1403
  totalTokens: resp.usage.input_tokens + resp.usage.output_tokens
1389
1404
  };
1390
- return {
1391
- results,
1392
- modelUsage,
1393
- remoteId: resp.id
1394
- };
1405
+ return { results, remoteId: resp.id };
1395
1406
  };
1396
1407
  createChatStreamResp = (resp, state) => {
1397
1408
  if (!("type" in resp)) {
@@ -1408,15 +1419,12 @@ var AxAIAnthropicImpl = class {
1408
1419
  if (resp.type === "message_start") {
1409
1420
  const { message } = resp;
1410
1421
  const results = [{ content: "", id: message.id }];
1411
- const modelUsage = {
1422
+ this.tokensUsed = {
1412
1423
  promptTokens: message.usage?.input_tokens ?? 0,
1413
1424
  completionTokens: message.usage?.output_tokens ?? 0,
1414
1425
  totalTokens: (message.usage?.input_tokens ?? 0) + (message.usage?.output_tokens ?? 0)
1415
1426
  };
1416
- return {
1417
- results,
1418
- modelUsage
1419
- };
1427
+ return { results };
1420
1428
  }
1421
1429
  if (resp.type === "content_block_start") {
1422
1430
  const { content_block: contentBlock } = resp;
@@ -1473,19 +1481,15 @@ var AxAIAnthropicImpl = class {
1473
1481
  }
1474
1482
  if (resp.type === "message_delta") {
1475
1483
  const { delta, usage } = resp;
1476
- return {
1477
- results: [
1478
- {
1479
- content: "",
1480
- finishReason: mapFinishReason(delta.stop_reason)
1481
- }
1482
- ],
1483
- modelUsage: {
1484
- promptTokens: 0,
1485
- completionTokens: usage.output_tokens,
1486
- totalTokens: usage.output_tokens
1487
- }
1484
+ this.tokensUsed = {
1485
+ promptTokens: 0,
1486
+ completionTokens: usage.output_tokens,
1487
+ totalTokens: usage.output_tokens
1488
1488
  };
1489
+ const results = [
1490
+ { content: "", finishReason: mapFinishReason(delta.stop_reason) }
1491
+ ];
1492
+ return { results };
1489
1493
  }
1490
1494
  return {
1491
1495
  results: [{ content: "" }]
@@ -1676,6 +1680,7 @@ var AxAIOpenAIModel = /* @__PURE__ */ ((AxAIOpenAIModel2) => {
1676
1680
  AxAIOpenAIModel2["O4Mini"] = "o4-mini";
1677
1681
  AxAIOpenAIModel2["GPT4"] = "gpt-4";
1678
1682
  AxAIOpenAIModel2["GPT41"] = "gpt-4.1";
1683
+ AxAIOpenAIModel2["GPT41Mini"] = "gpt-4.1-mini";
1679
1684
  AxAIOpenAIModel2["GPT4O"] = "gpt-4o";
1680
1685
  AxAIOpenAIModel2["GPT4OMini"] = "gpt-4o-mini";
1681
1686
  AxAIOpenAIModel2["GPT4ChatGPT4O"] = "chatgpt-4o-latest";
@@ -1732,6 +1737,12 @@ var axModelInfoOpenAI = [
1732
1737
  promptTokenCostPer1M: 2,
1733
1738
  completionTokenCostPer1M: 8
1734
1739
  },
1740
+ {
1741
+ name: "gpt-4.1-mini" /* GPT41Mini */,
1742
+ currency: "usd",
1743
+ promptTokenCostPer1M: 0.4,
1744
+ completionTokenCostPer1M: 1.6
1745
+ },
1735
1746
  {
1736
1747
  name: "gpt-4o" /* GPT4O */,
1737
1748
  currency: "usd",
@@ -1784,28 +1795,32 @@ var axModelInfoOpenAI = [
1784
1795
 
1785
1796
  // ai/openai/api.ts
1786
1797
  var axAIOpenAIDefaultConfig = () => structuredClone({
1787
- model: "gpt-4o" /* GPT4O */,
1798
+ model: "gpt-4.1" /* GPT41 */,
1788
1799
  embedModel: "text-embedding-3-small" /* TextEmbedding3Small */,
1789
1800
  ...axBaseAIDefaultConfig()
1790
1801
  });
1791
1802
  var axAIOpenAIBestConfig = () => structuredClone({
1792
1803
  ...axAIOpenAIDefaultConfig(),
1793
- model: "gpt-4o" /* GPT4O */
1804
+ model: "gpt-4.1" /* GPT41 */
1794
1805
  });
1795
1806
  var axAIOpenAICreativeConfig = () => structuredClone({
1796
- model: "gpt-4o" /* GPT4O */,
1807
+ model: "gpt-4.1" /* GPT41 */,
1797
1808
  embedModel: "text-embedding-3-small" /* TextEmbedding3Small */,
1798
1809
  ...axBaseAIDefaultCreativeConfig()
1799
1810
  });
1800
1811
  var axAIOpenAIFastConfig = () => ({
1801
1812
  ...axAIOpenAIDefaultConfig(),
1802
- model: "gpt-4o-mini" /* GPT4OMini */
1813
+ model: "gpt-4.1-mini" /* GPT41Mini */
1803
1814
  });
1804
1815
  var AxAIOpenAIImpl = class {
1805
1816
  constructor(config, streamingUsage) {
1806
1817
  this.config = config;
1807
1818
  this.streamingUsage = streamingUsage;
1808
1819
  }
1820
+ tokensUsed;
1821
+ getTokenUsage() {
1822
+ return this.tokensUsed;
1823
+ }
1809
1824
  getModelConfig() {
1810
1825
  const { config } = this;
1811
1826
  return {
@@ -1885,7 +1900,7 @@ var AxAIOpenAIImpl = class {
1885
1900
  if (error) {
1886
1901
  throw error;
1887
1902
  }
1888
- const modelUsage = usage ? {
1903
+ this.tokensUsed = usage ? {
1889
1904
  promptTokens: usage.prompt_tokens,
1890
1905
  completionTokens: usage.completion_tokens,
1891
1906
  totalTokens: usage.total_tokens
@@ -1907,14 +1922,13 @@ var AxAIOpenAIImpl = class {
1907
1922
  };
1908
1923
  });
1909
1924
  return {
1910
- modelUsage,
1911
1925
  results,
1912
1926
  remoteId: id
1913
1927
  };
1914
1928
  }
1915
1929
  createChatStreamResp(resp, state) {
1916
1930
  const { id, usage, choices } = resp;
1917
- const modelUsage = usage ? {
1931
+ this.tokensUsed = usage ? {
1918
1932
  promptTokens: usage.prompt_tokens,
1919
1933
  completionTokens: usage.completion_tokens,
1920
1934
  totalTokens: usage.total_tokens
@@ -1952,22 +1966,16 @@ var AxAIOpenAIImpl = class {
1952
1966
  };
1953
1967
  }
1954
1968
  );
1955
- return {
1956
- results,
1957
- modelUsage
1958
- };
1969
+ return { results };
1959
1970
  }
1960
1971
  createEmbedResp(resp) {
1961
1972
  const { data, usage } = resp;
1962
- const modelUsage = usage ? {
1973
+ this.tokensUsed = usage ? {
1963
1974
  promptTokens: usage.prompt_tokens,
1964
1975
  completionTokens: usage.completion_tokens,
1965
1976
  totalTokens: usage.total_tokens
1966
1977
  } : void 0;
1967
- return {
1968
- embeddings: data.map((v) => v.embedding),
1969
- modelUsage
1970
- };
1978
+ return { embeddings: data.map((v) => v.embedding) };
1971
1979
  }
1972
1980
  };
1973
1981
  var mapFinishReason2 = (finishReason) => {
@@ -2232,6 +2240,10 @@ var AxAICohereImpl = class {
2232
2240
  constructor(config) {
2233
2241
  this.config = config;
2234
2242
  }
2243
+ tokensUsed;
2244
+ getTokenUsage() {
2245
+ return this.tokensUsed;
2246
+ }
2235
2247
  getModelConfig() {
2236
2248
  const { config } = this;
2237
2249
  return {
@@ -2323,7 +2335,7 @@ var AxAICohereImpl = class {
2323
2335
  return [apiConfig, reqValue];
2324
2336
  };
2325
2337
  createChatResp = (resp) => {
2326
- const modelUsage = resp.meta.billed_units ? {
2338
+ this.tokensUsed = resp.meta.billed_units ? {
2327
2339
  promptTokens: resp.meta.billed_units.input_tokens,
2328
2340
  completionTokens: resp.meta.billed_units.output_tokens,
2329
2341
  totalTokens: resp.meta.billed_units.input_tokens + resp.meta.billed_units.output_tokens
@@ -2366,17 +2378,18 @@ var AxAICohereImpl = class {
2366
2378
  finishReason
2367
2379
  }
2368
2380
  ];
2369
- return {
2370
- results,
2371
- modelUsage,
2372
- remoteId: resp.response_id
2373
- };
2381
+ return { results, remoteId: resp.response_id };
2374
2382
  };
2375
2383
  createChatStreamResp = (resp, state) => {
2376
2384
  const ss = state;
2377
2385
  if (resp.event_type === "stream-start") {
2378
2386
  ss.generation_id = resp.generation_id;
2379
2387
  }
2388
+ this.tokensUsed = {
2389
+ promptTokens: 0,
2390
+ completionTokens: resp.meta.billed_units?.output_tokens ?? 0,
2391
+ totalTokens: resp.meta.billed_units?.output_tokens ?? 0
2392
+ };
2380
2393
  const { results } = this.createChatResp(resp);
2381
2394
  const result = results[0];
2382
2395
  if (!result) {
@@ -2670,13 +2683,13 @@ var safetySettings = [
2670
2683
  ];
2671
2684
  var axAIGoogleGeminiDefaultConfig = () => structuredClone({
2672
2685
  model: "gemini-2.0-flash" /* Gemini20Flash */,
2673
- embedModel: "text-embedding-004" /* TextEmbedding004 */,
2686
+ embedModel: "text-embedding-005" /* TextEmbedding005 */,
2674
2687
  safetySettings,
2675
2688
  ...axBaseAIDefaultConfig()
2676
2689
  });
2677
2690
  var axAIGoogleGeminiDefaultCreativeConfig = () => structuredClone({
2678
2691
  model: "gemini-2.0-flash" /* Gemini20Flash */,
2679
- embedModel: "text-embedding-004" /* TextEmbedding004 */,
2692
+ embedModel: "text-embedding-005" /* TextEmbedding005 */,
2680
2693
  safetySettings,
2681
2694
  ...axBaseAIDefaultCreativeConfig()
2682
2695
  });
@@ -2691,6 +2704,10 @@ var AxAIGoogleGeminiImpl = class {
2691
2704
  throw new Error("Auto truncate is not supported for GoogleGemini");
2692
2705
  }
2693
2706
  }
2707
+ tokensUsed;
2708
+ getTokenUsage() {
2709
+ return this.tokensUsed;
2710
+ }
2694
2711
  getModelConfig() {
2695
2712
  const { config } = this;
2696
2713
  return {
@@ -2953,18 +2970,14 @@ var AxAIGoogleGeminiImpl = class {
2953
2970
  return result;
2954
2971
  }
2955
2972
  );
2956
- let modelUsage;
2957
2973
  if (resp.usageMetadata) {
2958
- modelUsage = {
2974
+ this.tokensUsed = {
2959
2975
  totalTokens: resp.usageMetadata.totalTokenCount,
2960
2976
  promptTokens: resp.usageMetadata.promptTokenCount,
2961
2977
  completionTokens: resp.usageMetadata.candidatesTokenCount
2962
2978
  };
2963
2979
  }
2964
- return {
2965
- results,
2966
- modelUsage
2967
- };
2980
+ return { results };
2968
2981
  };
2969
2982
  createChatStreamResp = (resp) => {
2970
2983
  return this.createChatResp(resp);
@@ -3182,7 +3195,7 @@ var AxAIGroq = class extends AxAIOpenAIBase {
3182
3195
  debug: options?.debug
3183
3196
  });
3184
3197
  const rtFunc = async (func, info) => {
3185
- const totalTokens = info.modelUsage?.totalTokens || 0;
3198
+ const totalTokens = info.modelUsage?.tokens?.totalTokens || 0;
3186
3199
  await rt.acquire(totalTokens);
3187
3200
  return await func();
3188
3201
  };
@@ -3212,6 +3225,10 @@ var AxAIHuggingFaceImpl = class {
3212
3225
  constructor(config) {
3213
3226
  this.config = config;
3214
3227
  }
3228
+ tokensUsed;
3229
+ getTokenUsage() {
3230
+ return this.tokensUsed;
3231
+ }
3215
3232
  getModelConfig() {
3216
3233
  const { config } = this;
3217
3234
  return {
@@ -3505,6 +3522,10 @@ var AxAIRekaImpl = class {
3505
3522
  constructor(config) {
3506
3523
  this.config = config;
3507
3524
  }
3525
+ tokensUsed;
3526
+ getTokenUsage() {
3527
+ return this.tokensUsed;
3528
+ }
3508
3529
  getModelConfig() {
3509
3530
  const { config } = this;
3510
3531
  return {
@@ -3545,7 +3566,7 @@ var AxAIRekaImpl = class {
3545
3566
  };
3546
3567
  createChatResp = (resp) => {
3547
3568
  const { id, usage, responses } = resp;
3548
- const modelUsage = usage ? {
3569
+ this.tokensUsed = usage ? {
3549
3570
  promptTokens: usage.input_tokens,
3550
3571
  completionTokens: usage.output_tokens,
3551
3572
  totalTokens: usage.input_tokens + usage.output_tokens
@@ -3564,15 +3585,11 @@ var AxAIRekaImpl = class {
3564
3585
  finishReason
3565
3586
  };
3566
3587
  });
3567
- return {
3568
- modelUsage,
3569
- results,
3570
- remoteId: id
3571
- };
3588
+ return { results, remoteId: id };
3572
3589
  };
3573
3590
  createChatStreamResp = (resp) => {
3574
3591
  const { id, usage, responses } = resp;
3575
- const modelUsage = usage ? {
3592
+ this.tokensUsed = usage ? {
3576
3593
  promptTokens: usage.input_tokens,
3577
3594
  completionTokens: usage.output_tokens,
3578
3595
  totalTokens: usage.input_tokens + usage.output_tokens
@@ -3591,10 +3608,7 @@ var AxAIRekaImpl = class {
3591
3608
  finishReason
3592
3609
  };
3593
3610
  });
3594
- return {
3595
- results,
3596
- modelUsage
3597
- };
3611
+ return { results };
3598
3612
  };
3599
3613
  };
3600
3614
  var mapFinishReason3 = (finishReason) => {
@@ -3780,9 +3794,6 @@ var AxAI = class {
3780
3794
  getModelList() {
3781
3795
  return this.ai.getModelList();
3782
3796
  }
3783
- getDefaultModels() {
3784
- return this.ai.getDefaultModels();
3785
- }
3786
3797
  getMetrics() {
3787
3798
  return this.ai.getMetrics();
3788
3799
  }
@@ -4719,9 +4730,15 @@ function mergeProgramUsage(usages) {
4719
4730
  }
4720
4731
  const currentUsage = usageMap[key];
4721
4732
  if (currentUsage) {
4722
- currentUsage.promptTokens += usage.promptTokens;
4723
- currentUsage.completionTokens += usage.completionTokens;
4724
- currentUsage.totalTokens += usage.totalTokens;
4733
+ const tokens = currentUsage.tokens ?? {
4734
+ promptTokens: 0,
4735
+ completionTokens: 0,
4736
+ totalTokens: 0
4737
+ };
4738
+ tokens.promptTokens += usage?.tokens?.promptTokens ?? 0;
4739
+ tokens.completionTokens += usage?.tokens?.completionTokens ?? 0;
4740
+ tokens.totalTokens += usage?.tokens?.totalTokens ?? 0;
4741
+ currentUsage.tokens = tokens;
4725
4742
  }
4726
4743
  }
4727
4744
  return Object.values(usageMap);
@@ -6241,13 +6258,9 @@ var AxGen = class extends AxProgramWithSignature {
6241
6258
  mem,
6242
6259
  options
6243
6260
  }) {
6244
- const { sessionId, traceId, model, functions: _functions } = options ?? {};
6261
+ const { sessionId, traceId, functions: _functions } = options ?? {};
6245
6262
  const fastFail = options?.fastFail ?? this.options?.fastFail;
6246
- const modelName = model ?? ai.getDefaultModels().model;
6247
- const usageInfo = {
6248
- ai: ai.getName(),
6249
- model: modelName
6250
- };
6263
+ const model = options.model;
6251
6264
  const functions = _functions?.map((f) => "toFunction" in f ? f.toFunction() : f)?.flat();
6252
6265
  const res = await this.forwardSendRequest({
6253
6266
  ai,
@@ -6259,7 +6272,6 @@ var AxGen = class extends AxProgramWithSignature {
6259
6272
  ai,
6260
6273
  model,
6261
6274
  res,
6262
- usageInfo,
6263
6275
  mem,
6264
6276
  traceId,
6265
6277
  sessionId,
@@ -6271,7 +6283,6 @@ var AxGen = class extends AxProgramWithSignature {
6271
6283
  ai,
6272
6284
  model,
6273
6285
  res,
6274
- usageInfo,
6275
6286
  mem,
6276
6287
  traceId,
6277
6288
  sessionId,
@@ -6283,14 +6294,13 @@ var AxGen = class extends AxProgramWithSignature {
6283
6294
  ai,
6284
6295
  model,
6285
6296
  res,
6286
- usageInfo,
6287
6297
  mem,
6288
6298
  sessionId,
6289
6299
  traceId,
6290
6300
  functions,
6291
6301
  fastFail
6292
6302
  }) {
6293
- const streamingValidation = fastFail ?? ai.getFeatures().functionCot !== true;
6303
+ const streamingValidation = fastFail ?? ai.getFeatures(model).functionCot !== true;
6294
6304
  const functionCalls = [];
6295
6305
  const values = {};
6296
6306
  const xstate = {
@@ -6305,7 +6315,7 @@ var AxGen = class extends AxProgramWithSignature {
6305
6315
  continue;
6306
6316
  }
6307
6317
  if (v.modelUsage) {
6308
- this.usage.push({ ...usageInfo, ...v.modelUsage });
6318
+ this.usage.push(v.modelUsage);
6309
6319
  }
6310
6320
  if (result.functionCalls) {
6311
6321
  mergeFunctionCalls(functionCalls, result.functionCalls);
@@ -6406,7 +6416,6 @@ var AxGen = class extends AxProgramWithSignature {
6406
6416
  async processResponse({
6407
6417
  ai,
6408
6418
  res,
6409
- usageInfo,
6410
6419
  mem,
6411
6420
  sessionId,
6412
6421
  traceId,
@@ -6419,7 +6428,7 @@ var AxGen = class extends AxProgramWithSignature {
6419
6428
  }
6420
6429
  for (const result of results) {
6421
6430
  if (res.modelUsage) {
6422
- this.usage.push({ ...usageInfo, ...res.modelUsage });
6431
+ this.usage.push(res.modelUsage);
6423
6432
  }
6424
6433
  mem.addResult(result, sessionId);
6425
6434
  if (result.functionCalls?.length) {
@@ -7011,9 +7020,6 @@ var AxBalancer = class _AxBalancer {
7011
7020
  getModelList() {
7012
7021
  return this.currentService.getModelList();
7013
7022
  }
7014
- getDefaultModels() {
7015
- return this.currentService.getDefaultModels();
7016
- }
7017
7023
  getNextService() {
7018
7024
  const cs = this.services[++this.currentServiceIndex];
7019
7025
  if (cs === void 0) {
@@ -9165,12 +9171,6 @@ var AxMockAIService = class {
9165
9171
  getModelList() {
9166
9172
  return this.config.models;
9167
9173
  }
9168
- getDefaultModels() {
9169
- return {
9170
- model: this.config.modelInfo?.name ?? "mock-model",
9171
- embedModel: this.config.embedModelInfo?.name
9172
- };
9173
- }
9174
9174
  getMetrics() {
9175
9175
  return this.metrics;
9176
9176
  }
@@ -9193,9 +9193,13 @@ var AxMockAIService = class {
9193
9193
  }
9194
9194
  ],
9195
9195
  modelUsage: {
9196
- promptTokens: 10,
9197
- completionTokens: 5,
9198
- totalTokens: 15
9196
+ ai: this.getName(),
9197
+ model: "mock-model",
9198
+ tokens: {
9199
+ promptTokens: 10,
9200
+ completionTokens: 5,
9201
+ totalTokens: 15
9202
+ }
9199
9203
  }
9200
9204
  };
9201
9205
  }
@@ -9213,9 +9217,13 @@ var AxMockAIService = class {
9213
9217
  return this.config.embedResponse ?? {
9214
9218
  embeddings: [[0.1, 0.2, 0.3]],
9215
9219
  modelUsage: {
9216
- promptTokens: 5,
9217
- completionTokens: 0,
9218
- totalTokens: 5
9220
+ ai: this.getName(),
9221
+ model: "mock-model",
9222
+ tokens: {
9223
+ promptTokens: 5,
9224
+ completionTokens: 0,
9225
+ totalTokens: 5
9226
+ }
9219
9227
  }
9220
9228
  };
9221
9229
  }
@@ -11179,11 +11187,6 @@ var AxMultiServiceRouter = class {
11179
11187
  }
11180
11188
  });
11181
11189
  }
11182
- getDefaultModels() {
11183
- throw new Error(
11184
- "getDefaultModels is not supported for multi-service router."
11185
- );
11186
- }
11187
11190
  /**
11188
11191
  * If a model key is provided, delegate to the corresponding service's features.
11189
11192
  * Otherwise, returns a default feature set.
@@ -11345,6 +11348,7 @@ export {
11345
11348
  AxStringUtil,
11346
11349
  AxTestPrompt,
11347
11350
  axAIAnthropicDefaultConfig,
11351
+ axAIAnthropicVertexDefaultConfig,
11348
11352
  axAIAzureOpenAIBestConfig,
11349
11353
  axAIAzureOpenAICreativeConfig,
11350
11354
  axAIAzureOpenAIDefaultConfig,