bitfab 0.19.0 → 0.19.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/dist/index.cjs CHANGED
@@ -497,7 +497,7 @@ __export(index_exports, {
497
497
  module.exports = __toCommonJS(index_exports);
498
498
 
499
499
  // src/version.generated.ts
500
- var __version__ = "0.19.0";
500
+ var __version__ = "0.19.1";
501
501
 
502
502
  // src/constants.ts
503
503
  var DEFAULT_SERVICE_URL = "https://bitfab.ai";
@@ -918,23 +918,30 @@ function extractContentBlocks(content) {
918
918
  }
919
919
  return content.map((block) => safeSerialize(block));
920
920
  }
921
+ function asTokenCount(val) {
922
+ return typeof val === "number" && Number.isFinite(val) ? val : null;
923
+ }
921
924
  function extractUsage(message) {
922
925
  const usageInfo = {};
923
926
  const usage = message.usage;
924
927
  if (!usage) {
925
928
  return usageInfo;
926
929
  }
927
- const mapping = {
928
- input_tokens: "inputTokens",
929
- output_tokens: "outputTokens",
930
- cache_read_input_tokens: "cacheReadTokens",
931
- cache_creation_input_tokens: "cacheCreationTokens"
932
- };
933
- for (const [srcKey, dstKey] of Object.entries(mapping)) {
934
- const val = usage[srcKey];
935
- if (val !== void 0 && val !== null) {
936
- usageInfo[dstKey] = val;
937
- }
930
+ const baseInput = asTokenCount(usage.input_tokens);
931
+ const cacheRead = asTokenCount(usage.cache_read_input_tokens);
932
+ const cacheCreation = asTokenCount(usage.cache_creation_input_tokens);
933
+ if (baseInput !== null || cacheRead !== null || cacheCreation !== null) {
934
+ usageInfo.inputTokens = (baseInput ?? 0) + (cacheRead ?? 0) + (cacheCreation ?? 0);
935
+ }
936
+ const output = asTokenCount(usage.output_tokens);
937
+ if (output !== null) {
938
+ usageInfo.outputTokens = output;
939
+ }
940
+ if (cacheRead !== null) {
941
+ usageInfo.cacheReadTokens = cacheRead;
942
+ }
943
+ if (cacheCreation !== null) {
944
+ usageInfo.cacheCreationTokens = cacheCreation;
938
945
  }
939
946
  return usageInfo;
940
947
  }
@@ -1728,7 +1735,7 @@ function extractModelName(serialized, metadata) {
1728
1735
  }
1729
1736
  return void 0;
1730
1737
  }
1731
- function asTokenCount(value) {
1738
+ function asTokenCount2(value) {
1732
1739
  return typeof value === "number" && Number.isFinite(value) ? value : null;
1733
1740
  }
1734
1741
  function normalizeTokenUsage(raw) {
@@ -1737,10 +1744,10 @@ function normalizeTokenUsage(raw) {
1737
1744
  }
1738
1745
  const u = raw;
1739
1746
  if ("cache_read_input_tokens" in u || "cache_creation_input_tokens" in u) {
1740
- const cacheRead = asTokenCount(u.cache_read_input_tokens);
1741
- const cacheCreation = asTokenCount(u.cache_creation_input_tokens);
1742
- const baseInput = asTokenCount(u.input_tokens);
1743
- const outputTokens = asTokenCount(u.output_tokens);
1747
+ const cacheRead = asTokenCount2(u.cache_read_input_tokens);
1748
+ const cacheCreation = asTokenCount2(u.cache_creation_input_tokens);
1749
+ const baseInput = asTokenCount2(u.input_tokens);
1750
+ const outputTokens = asTokenCount2(u.output_tokens);
1744
1751
  if (cacheRead === null && cacheCreation === null && baseInput === null && outputTokens === null) {
1745
1752
  return null;
1746
1753
  }
@@ -1755,25 +1762,25 @@ function normalizeTokenUsage(raw) {
1755
1762
  if ("prompt_tokens" in u || "completion_tokens" in u || "promptTokens" in u || "completionTokens" in u) {
1756
1763
  const promptDetails = u.prompt_tokens_details ?? {};
1757
1764
  return withAnyTokenCount({
1758
- inputTokens: asTokenCount(u.prompt_tokens) ?? asTokenCount(u.promptTokens),
1759
- outputTokens: asTokenCount(u.completion_tokens) ?? asTokenCount(u.completionTokens),
1760
- totalTokens: asTokenCount(u.total_tokens) ?? asTokenCount(u.totalTokens),
1761
- cachedInputTokens: asTokenCount(promptDetails.cached_tokens)
1765
+ inputTokens: asTokenCount2(u.prompt_tokens) ?? asTokenCount2(u.promptTokens),
1766
+ outputTokens: asTokenCount2(u.completion_tokens) ?? asTokenCount2(u.completionTokens),
1767
+ totalTokens: asTokenCount2(u.total_tokens) ?? asTokenCount2(u.totalTokens),
1768
+ cachedInputTokens: asTokenCount2(promptDetails.cached_tokens)
1762
1769
  });
1763
1770
  }
1764
1771
  if ("prompt_token_count" in u || "candidates_token_count" in u) {
1765
1772
  return withAnyTokenCount({
1766
- inputTokens: asTokenCount(u.prompt_token_count),
1767
- outputTokens: asTokenCount(u.candidates_token_count),
1768
- totalTokens: asTokenCount(u.total_token_count),
1769
- cachedInputTokens: asTokenCount(u.cached_content_token_count)
1773
+ inputTokens: asTokenCount2(u.prompt_token_count),
1774
+ outputTokens: asTokenCount2(u.candidates_token_count),
1775
+ totalTokens: asTokenCount2(u.total_token_count),
1776
+ cachedInputTokens: asTokenCount2(u.cached_content_token_count)
1770
1777
  });
1771
1778
  }
1772
1779
  if ("input_tokens" in u || "output_tokens" in u) {
1773
1780
  const inputDetails = u.input_token_details ?? {};
1774
- const inputTokens = asTokenCount(u.input_tokens);
1775
- const outputTokens = asTokenCount(u.output_tokens);
1776
- let totalTokens = asTokenCount(u.total_tokens);
1781
+ const inputTokens = asTokenCount2(u.input_tokens);
1782
+ const outputTokens = asTokenCount2(u.output_tokens);
1783
+ let totalTokens = asTokenCount2(u.total_tokens);
1777
1784
  if (totalTokens === null && inputTokens !== null && outputTokens !== null) {
1778
1785
  totalTokens = inputTokens + outputTokens;
1779
1786
  }
@@ -1781,7 +1788,7 @@ function normalizeTokenUsage(raw) {
1781
1788
  inputTokens,
1782
1789
  outputTokens,
1783
1790
  totalTokens,
1784
- cachedInputTokens: asTokenCount(inputDetails.cache_read)
1791
+ cachedInputTokens: asTokenCount2(inputDetails.cache_read)
1785
1792
  });
1786
1793
  }
1787
1794
  return null;