@microfox/usage-pricing
Version:
A TypeScript SDK for Tracking Pricing & Usage of any LLM and TypeScript AI SDK internally.
1,506 lines (1,496 loc) • 37.5 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
MicrofoxUsagePricing: () => MicrofoxUsagePricing,
PricingConfig: () => PricingConfig,
UsageWithPricingSchema: () => UsageWithPricingSchema,
attachPricing: () => attachPricing,
attachPricingApi1: () => attachPricingApi1,
attachPricingLLM: () => attachPricingLLM,
createDefaultMicrofoxUsagePricing: () => createDefaultMicrofoxUsagePricing,
createMicrofoxUsagePricing: () => createMicrofoxUsagePricing,
fetchProviderPackage: () => fetchProviderPackage,
getPricingForLLM: () => getPricingForLLM
});
module.exports = __toCommonJS(index_exports);
// src/pricing/ai-provider-openai.ts
var commonPricingPrompt = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million prompt token"
};
var commonPricingCompletion = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million completion token"
};
var OpenAIPricingConfig = {
["ai-provider-openai"]: {
type: "llm",
// GPT-4.1 Models
["gpt-4.1"]: {
promptToken: {
basePriceUSD: 2,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 8,
...commonPricingCompletion
}
},
["gpt-4.1-2025-04-14"]: {
promptToken: {
basePriceUSD: 2,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 8,
...commonPricingCompletion
}
},
["gpt-4.1-mini"]: {
promptToken: {
basePriceUSD: 0.4,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 1.6,
...commonPricingCompletion
}
},
["gpt-4.1-mini-2025-04-14"]: {
promptToken: {
basePriceUSD: 0.4,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 1.6,
...commonPricingCompletion
}
},
["gpt-4.1-nano"]: {
promptToken: {
basePriceUSD: 0.1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.4,
...commonPricingCompletion
}
},
["gpt-4.1-nano-2025-04-14"]: {
promptToken: {
basePriceUSD: 0.1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.4,
...commonPricingCompletion
}
},
// GPT-4.5 Models
["gpt-4.5-preview"]: {
promptToken: {
basePriceUSD: 75,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 150,
...commonPricingCompletion
}
},
["gpt-4.5-preview-2025-02-27"]: {
promptToken: {
basePriceUSD: 75,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 150,
...commonPricingCompletion
}
},
// GPT-4o Models
["gpt-4o"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion
}
},
["gpt-4o-2024-08-06"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion
}
},
["gpt-4o-2024-11-20"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion
}
},
["gpt-4o-2024-05-13"]: {
promptToken: {
basePriceUSD: 5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion
}
},
["gpt-4o-mini"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion
}
},
["gpt-4-0613"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion
}
},
["gpt-4o-mini-2024-07-18"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion
}
},
// Audio Models
["gpt-4o-audio-preview"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion
}
},
["gpt-4o-audio-preview-2024-12-17"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion
}
},
["gpt-4o-audio-preview-2024-10-01"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion
}
},
["gpt-4o-mini-audio-preview"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion
}
},
["gpt-4o-mini-audio-preview-2024-12-17"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion
}
},
// Realtime Models
["gpt-4o-realtime-preview"]: {
promptToken: {
basePriceUSD: 5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 20,
...commonPricingCompletion
}
},
["gpt-4o-realtime-preview-2024-12-17"]: {
promptToken: {
basePriceUSD: 5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 20,
...commonPricingCompletion
}
},
["gpt-4o-realtime-preview-2024-10-01"]: {
promptToken: {
basePriceUSD: 5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 20,
...commonPricingCompletion
}
},
["gpt-4o-mini-realtime-preview"]: {
promptToken: {
basePriceUSD: 0.6,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 2.4,
...commonPricingCompletion
}
},
["gpt-4o-mini-realtime-preview-2024-12-17"]: {
promptToken: {
basePriceUSD: 0.6,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 2.4,
...commonPricingCompletion
}
},
// O1 Models
["o1"]: {
promptToken: {
basePriceUSD: 15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 60,
...commonPricingCompletion
}
},
["o1-2024-12-17"]: {
promptToken: {
basePriceUSD: 15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 60,
...commonPricingCompletion
}
},
["o1-preview-2024-09-12"]: {
promptToken: {
basePriceUSD: 15,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 60,
...commonPricingCompletion
}
},
["o1-pro"]: {
promptToken: {
basePriceUSD: 150,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 600,
...commonPricingCompletion
}
},
["o1-pro-2025-03-19"]: {
promptToken: {
basePriceUSD: 150,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 600,
...commonPricingCompletion
}
},
// O3 Models
["o3"]: {
promptToken: {
basePriceUSD: 10,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 40,
...commonPricingCompletion
}
},
["o3-2025-04-16"]: {
promptToken: {
basePriceUSD: 10,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 40,
...commonPricingCompletion
}
},
["o3-mini"]: {
promptToken: {
basePriceUSD: 1.1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 4.4,
...commonPricingCompletion
}
},
["o3-mini-2025-01-31"]: {
promptToken: {
basePriceUSD: 1.1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 4.4,
...commonPricingCompletion
}
},
// O4 Models
["o4-mini"]: {
promptToken: {
basePriceUSD: 1.1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 4.4,
...commonPricingCompletion
}
},
["o4-mini-2025-04-16"]: {
promptToken: {
basePriceUSD: 1.1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 4.4,
...commonPricingCompletion
}
},
// GPT-3.5 Models
["gpt-3.5-turbo"]: {
promptToken: {
basePriceUSD: 0.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 1.5,
...commonPricingCompletion
}
},
["gpt-3.5-turbo-0125"]: {
promptToken: {
basePriceUSD: 0.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 1.5,
...commonPricingCompletion
}
},
["gpt-3.5-turbo-1106"]: {
promptToken: {
basePriceUSD: 1,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 2,
...commonPricingCompletion
}
},
["gpt-3.5-turbo-0613"]: {
promptToken: {
basePriceUSD: 1.5,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 2,
...commonPricingCompletion
}
},
["gpt-3.5-turbo-16k-0613"]: {
promptToken: {
basePriceUSD: 3,
...commonPricingPrompt
},
completionToken: {
basePriceUSD: 4,
...commonPricingCompletion
}
},
// Embeddings Models
["text-embedding-3-small"]: {
promptToken: {
basePriceUSD: 0.02,
dataUnit: "token",
per: 1e6,
description: "Per 1 million tokens"
}
},
["text-embedding-3-large"]: {
promptToken: {
basePriceUSD: 0.13,
dataUnit: "token",
per: 1e6,
description: "Per 1 million tokens"
}
},
["text-embedding-ada-002"]: {
promptToken: {
basePriceUSD: 0.1,
dataUnit: "token",
per: 1e6,
description: "Per 1 million tokens"
}
}
}
};
// src/pricing/aws-ses.ts
var AwsSesPricingConfig = {
["aws-ses"]: {
type: "api_1",
outboundEmail: {
requestCount: {
basePriceUSD: 0.1,
dataUnit: "email",
per: 1e3,
description: "Per email sent"
},
requestData: {
basepriceUSD: 0.12,
// per GB
per: 1,
dataUnit: "GB",
// "GB, MB, KB, B"
description: "Per byte of data in the attachments you send"
}
}
}
};
// src/pricing/brave.ts
var BravePricingConfig = {
["brave"]: {
type: "api_1",
dataForSearch: {
requestCount: {
basePriceUSD: 5,
dataUnit: "search",
per: 1e3,
description: "Per 1000 search requests"
}
}
}
};
// src/pricing/ai-provider-anthropic.ts
var commonPricingPrompt2 = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million prompt token"
};
var commonPricingCompletion2 = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million completion token"
};
var commonPricingCache5m = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million tokens for 5-minute cache writes"
};
var commonPricingCache1h = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million tokens for 1-hour cache writes"
};
var commonPricingCacheHits = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million tokens for cache hits & refreshes"
};
var AnthropicAIPricingConfig = {
["ai-provider-anthropic"]: {
type: "llm",
// Claude 4 Models
["claude-4-opus-20250514"]: {
promptToken: {
basePriceUSD: 15,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 75,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 18.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 30,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 1.5,
...commonPricingCacheHits
}
},
["claude-4-sonnet-20250514"]: {
promptToken: {
basePriceUSD: 3,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 3.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 6,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.3,
...commonPricingCacheHits
}
},
// Claude 3.7 Models
["claude-3-7-sonnet-20250219"]: {
promptToken: {
basePriceUSD: 3,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 3.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 6,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.3,
...commonPricingCacheHits
}
},
// Claude 3.5 Models
["claude-3-5-sonnet-20241022"]: {
promptToken: {
basePriceUSD: 3,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 3.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 6,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.3,
...commonPricingCacheHits
}
},
["claude-3-5-sonnet-20240620"]: {
promptToken: {
basePriceUSD: 3,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 3.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 6,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.3,
...commonPricingCacheHits
}
},
["claude-3-5-haiku-20241022"]: {
promptToken: {
basePriceUSD: 0.8,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 4,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 1,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 1.6,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.08,
...commonPricingCacheHits
}
},
// Claude 3 Models
["claude-3-opus-20240229"]: {
promptToken: {
basePriceUSD: 15,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 75,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 18.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 30,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 1.5,
...commonPricingCacheHits
}
},
["claude-3-sonnet-20240229"]: {
promptToken: {
basePriceUSD: 3,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 3.75,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 6,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.3,
...commonPricingCacheHits
}
},
["claude-3-haiku-20240307"]: {
promptToken: {
basePriceUSD: 0.25,
...commonPricingPrompt2
},
completionToken: {
basePriceUSD: 1.25,
...commonPricingCompletion2
},
cache5mToken: {
basePriceUSD: 0.3,
...commonPricingCache5m
},
cache1hToken: {
basePriceUSD: 0.5,
...commonPricingCache1h
},
cacheHitsToken: {
basePriceUSD: 0.03,
...commonPricingCacheHits
}
}
}
};
// src/pricing/ai-provider-google.ts
var commonPricingPrompt3 = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million prompt token"
};
var commonPricingCompletion3 = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million completion token"
};
var GoogleAIPricingConfig = {
["ai-provider-google"]: {
type: "llm",
// Gemini 2.5 Models
["gemini-2.5-pro-preview-05-06"]: {
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion3
}
},
["gemini-2.5-pro-preview-05-06-long-context"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 15,
...commonPricingCompletion3
}
},
["gemini-2.5-flash-preview-05-20"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion3
}
},
["gemini-2.5-flash-preview-05-20-thinking"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 3.5,
...commonPricingCompletion3
}
},
["gemini-2.5-flash-preview-native-audio-dialog"]: {
promptToken: {
basePriceUSD: 1,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion3
}
},
["gemini-2.5-flash-exp-native-audio-thinking-dialog"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion3
}
},
["gemini-2.5-flash-preview-tts"]: {
promptToken: {
basePriceUSD: 0.5,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion3
}
},
["gemini-2.5-pro-preview-tts"]: {
promptToken: {
basePriceUSD: 1,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 20,
...commonPricingCompletion3
}
},
// Gemini 2.0 Models
["gemini-2.0-flash"]: {
promptToken: {
basePriceUSD: 0.1,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.4,
...commonPricingCompletion3
}
},
["gemini-2.0-flash-audio"]: {
promptToken: {
basePriceUSD: 0.7,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.4,
...commonPricingCompletion3
}
},
["gemini-2.0-flash-live-001"]: {
promptToken: {
basePriceUSD: 0.35,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 1.5,
...commonPricingCompletion3
}
},
["gemini-2.0-flash-live-001-audio"]: {
promptToken: {
basePriceUSD: 2.1,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 8.5,
...commonPricingCompletion3
}
},
["gemini-2.0-flash-lite"]: {
promptToken: {
basePriceUSD: 0.075,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.3,
...commonPricingCompletion3
}
},
["gemini-2.0-flash-preview-image-generation"]: {
promptToken: {
basePriceUSD: 0.039,
dataUnit: "image",
per: 1,
description: "Per image"
}
},
// Gemini 1.5 Models
["gemini-1.5-pro"]: {
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-1.5-pro-long-context"]: {
promptToken: {
basePriceUSD: 2.5,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 10,
...commonPricingCompletion3
}
},
["gemini-1.5-flash"]: {
promptToken: {
basePriceUSD: 0.075,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.3,
...commonPricingCompletion3
}
},
["gemini-1.5-flash-long-context"]: {
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.6,
...commonPricingCompletion3
}
},
["gemini-1.5-flash-8b"]: {
promptToken: {
basePriceUSD: 0.0375,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.15,
...commonPricingCompletion3
}
},
["gemini-1.5-flash-8b-long-context"]: {
promptToken: {
basePriceUSD: 0.075,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.3,
...commonPricingCompletion3
}
},
// Image Generation Models
["imagen-3.0-generate-002"]: {
promptToken: {
basePriceUSD: 0.03,
dataUnit: "image",
per: 1,
description: "Per image"
}
},
// Video Generation Models
["veo-2.0-generate-001"]: {
promptToken: {
basePriceUSD: 0.35,
dataUnit: "second",
per: 1,
description: "Per second of video"
}
},
// Embeddings Models
["gemini-embedding-exp"]: {
promptToken: {
basePriceUSD: 0.15,
dataUnit: "token",
per: 1e3,
description: "Per 1,000 tokens"
}
},
["text-embedding-004"]: {
promptToken: {
basePriceUSD: 0.025,
dataUnit: "token",
per: 1e3,
description: "Per 1,000 tokens"
}
},
["embedding-001"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 0.025,
dataUnit: "token",
per: 1e3,
description: "Per 1,000 tokens"
}
},
// Experimental Models
["gemini-2.0-pro-exp-02-05"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-2.0-flash-thinking-exp-01-21"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 0.15,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 3.5,
...commonPricingCompletion3
}
},
["gemini-exp-1206"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-exp-1121"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-exp-1114"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-1.5-pro-exp-0827"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-1.5-pro-exp-0801"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 1.25,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 5,
...commonPricingCompletion3
}
},
["gemini-1.5-flash-8b-exp-0924"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 0.0375,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.15,
...commonPricingCompletion3
}
},
["gemini-1.5-flash-8b-exp-0827"]: {
// Pricing unsure, needs to be checked
promptToken: {
basePriceUSD: 0.0375,
...commonPricingPrompt3
},
completionToken: {
basePriceUSD: 0.15,
...commonPricingCompletion3
}
}
}
};
// src/pricing/ai-provider-deepseek.ts
var commonPricingInputCacheHit = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million input tokens (cache hit)"
};
var commonPricingInputCacheMiss = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million input tokens (cache miss)"
};
var commonPricingOutput = {
dataUnit: "token",
per: 1e6,
description: "Per 1 million output tokens"
};
var DeepSeekAIPricingConfig = {
["ai-provider-deepseek"]: {
type: "llm",
// DeepSeek Chat Models
["deepseek-chat"]: {
promptToken: {
basePriceUSD: 0.07,
...commonPricingInputCacheHit
},
promptTokenCacheMiss: {
basePriceUSD: 0.27,
...commonPricingInputCacheMiss
},
completionToken: {
basePriceUSD: 1.1,
...commonPricingOutput
},
discountHours: {
start: "16:30",
// UTC
end: "00:30"
// UTC
},
discountRates: {
promptToken: 0.5,
// 50% off
promptTokenCacheMiss: 0.5,
// 50% off
completionToken: 0.5
// 50% off
},
features: {
jsonOutput: true,
functionCalling: true,
chatPrefixCompletion: true,
fimCompletion: true
}
},
// DeepSeek Reasoner Models
["deepseek-reasoner"]: {
promptToken: {
basePriceUSD: 0.14,
...commonPricingInputCacheHit
},
promptTokenCacheMiss: {
basePriceUSD: 0.55,
...commonPricingInputCacheMiss
},
completionToken: {
basePriceUSD: 2.19,
...commonPricingOutput
},
discountHours: {
start: "16:30",
// UTC
end: "00:30"
// UTC
},
discountRates: {
promptToken: 0.75,
// 75% off
promptTokenCacheMiss: 0.75,
// 75% off
completionToken: 0.75
// 75% off
},
features: {
jsonOutput: true,
functionCalling: true,
chatPrefixCompletion: true,
fimCompletion: false
}
}
}
};
// src/pricing/pricing.ts
var PricingConfig = {
...AwsSesPricingConfig,
...OpenAIPricingConfig,
...GoogleAIPricingConfig,
...AnthropicAIPricingConfig,
...DeepSeekAIPricingConfig,
...BravePricingConfig
};
var attachPricingApi1 = (usage) => {
var _a;
if (usage.type !== "api_1" || !usage.requestKey) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
const pricingPkgConfig = PricingConfig[usage.package];
if (!pricingPkgConfig) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
const pricingKeyConfig = pricingPkgConfig[usage.requestKey];
if (!pricingKeyConfig) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
let usagePriceUSD = 0;
if (usage.type === "api_1" && usage.requestCount && pricingKeyConfig.requestCount) {
usagePriceUSD += pricingKeyConfig.requestCount.basePriceUSD * (usage.requestCount / pricingKeyConfig.requestCount.per);
}
if (usage.type === "api_1" && usage.requestData && pricingKeyConfig.requestData) {
usagePriceUSD += pricingKeyConfig.requestData.basePriceUSD * (usage.requestData / pricingKeyConfig.requestData.per);
}
return {
...usage,
priceUSD: usagePriceUSD * (1 - ((_a = usage.markup) != null ? _a : 0) / 100),
originalPriceUSD: usagePriceUSD
};
};
var fetchProviderPackage = (model) => {
var _a;
const allLLmConfigs = Object.entries(PricingConfig).map(([key, config]) => ({
key,
config
})).filter(({ config }) => config.type === "llm");
const pricingConfigPackage = (_a = allLLmConfigs.find(
({ config }) => Object.keys(config).includes(model)
)) == null ? void 0 : _a.key;
return pricingConfigPackage;
};
var attachPricingLLM = (usage) => {
var _a, _b, _c;
let _package = usage.package;
if (!usage.model) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
if (!usage.package) {
_package = fetchProviderPackage(usage.model);
}
if (!_package) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
const pricingConfig = PricingConfig[_package];
if (!pricingConfig) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
let usagePriceUSD = 0;
let modelPricingConfig = pricingConfig[usage.model];
if (!modelPricingConfig) {
return {
...usage,
priceUSD: 0,
originalPriceUSD: 0
};
}
usagePriceUSD += modelPricingConfig.promptToken.basePriceUSD * (((_a = usage.promptTokens) != null ? _a : 0) / modelPricingConfig.promptToken.per);
usagePriceUSD += modelPricingConfig.completionToken.basePriceUSD * (((_b = usage.completionTokens) != null ? _b : 0) / modelPricingConfig.completionToken.per);
return {
...usage,
package: _package,
priceUSD: usagePriceUSD * (1 - ((_c = usage.markup) != null ? _c : 0) / 100),
originalPriceUSD: usagePriceUSD
};
};
var attachPricing = (usage) => {
if (usage.type === "llm") {
return attachPricingLLM(usage);
}
if (usage.type === "api_1") {
return attachPricingApi1(usage);
}
return usage;
};
var getPricingForLLM = (props) => {
var _a;
const _package = fetchProviderPackage(props.model);
if (!_package) {
return {
priceUSD: 0,
originalPriceUSD: 0
};
}
const pricingConfig = PricingConfig[_package];
if (!pricingConfig || !pricingConfig[props.model]) {
return {
priceUSD: 0,
originalPriceUSD: 0
};
}
const modelPricingConfig = pricingConfig[props.model];
const usagePriceUSD = modelPricingConfig.promptToken.basePriceUSD * (props.promptTokens / modelPricingConfig.promptToken.per) + modelPricingConfig.completionToken.basePriceUSD * (props.completionTokens / modelPricingConfig.completionToken.per);
return {
provider: _package == null ? void 0 : _package.replace("ai-provider-", ""),
priceUSD: usagePriceUSD * (1 - ((_a = props.markup) != null ? _a : 0) / 100),
originalPriceUSD: usagePriceUSD
};
};
// src/sdk.ts
var import_redis = require("@upstash/redis");
var getDateKey = () => {
return (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
};
var getDateKeyUntilMonth = () => {
const date = /* @__PURE__ */ new Date();
return date.toISOString().split("T")[0].split("-").slice(0, 2).join("-");
};
var getDateKeyUntilYear = () => {
const date = /* @__PURE__ */ new Date();
return date.toISOString().split("T")[0].split("-")[0];
};
var cleanPackageName = (packageName) => {
return packageName.replace("@microfox/", "").replace("#", "/").replace("@ext_", "");
};
var MicrofoxUsagePricing = class {
constructor(config) {
var _a, _b, _c, _d, _e, _f;
this.redis = new import_redis.Redis({
url: (_b = (_a = config.redisOptions) == null ? void 0 : _a.url) != null ? _b : process.env.MICROFOX_REDIS_URL_TRACKER,
token: (_d = (_c = config.redisOptions) == null ? void 0 : _c.token) != null ? _d : process.env.MICROFOX_REDIS_TOKEN_TRACKER
});
this.prefix = (_f = (_e = config.prefix) != null ? _e : process.env.MICROFOX_CLIENT_REQUEST_ID) != null ? _f : process.env.MICROFOX_BOT_PROJECT_ID;
}
processUsageEntries(usage, packageName) {
return Object.entries(usage).map(([key, value]) => {
try {
let json = typeof value === "string" ? JSON.parse(value) : value;
if ("model" in json) {
json.type = "llm";
}
if ("requestKey" in json) {
json.type = "api_1";
}
return {
...json,
timestamp: key
};
} catch (e) {
console.error("Failed to parse usage entry", value);
return null;
}
}).filter((entry) => entry != null && entry !== void 0).filter(
(entry) => packageName ? entry.package === cleanPackageName(packageName) : true
);
}
async getUsage(packageName, prefixDateKey, options) {
var _a, _b;
const usageKey = `${this.prefix}:${prefixDateKey != null ? prefixDateKey : "*"}`;
const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 100;
const offset = (_b = options == null ? void 0 : options.offset) != null ? _b : 0;
let cursor = "0";
const keys = [];
let totalItems = 0;
do {
const [nextCursor, matchedKeys] = await this.redis.scan(cursor, {
match: usageKey,
count: limit
});
cursor = nextCursor;
keys.push(...matchedKeys);
totalItems += matchedKeys.length;
} while (cursor !== "0" && keys.length < offset + limit);
const pageKeys = keys.slice(offset, offset + limit);
const usages = (await Promise.all(
pageKeys.map(async (usageKey2) => {
const usage = await this.redis.hgetall(usageKey2);
if (!usage) return [];
return this.processUsageEntries(usage, packageName);
})
)).flat();
return {
data: usages.map(attachPricing),
total: totalItems,
limit,
offset,
hasMore: totalItems > offset + limit
};
}
async getDailyUsage(packageName, options) {
return this.getUsage(packageName, `${getDateKey()}:*`, options);
}
async getMonthlyUsage(packageName, options) {
return this.getUsage(packageName, `${getDateKeyUntilMonth()}*`, options);
}
async getYearlyUsage(packageName, options) {
return this.getUsage(packageName, `${getDateKeyUntilYear()}*`, options);
}
async getFullUsage(packageName, prefixDateKey) {
const usageKey = `${this.prefix}:${prefixDateKey != null ? prefixDateKey : "*"}`;
const keys = await this.redis.keys(usageKey);
const usages = (await Promise.all(
keys.map(async (usageKey2) => {
const usage = await this.redis.hgetall(usageKey2);
if (!usage) return [];
return this.processUsageEntries(usage, packageName);
})
)).flat();
return usages.map(attachPricing);
}
async getFullDailyUsage(packageName) {
return this.getFullUsage(packageName, `${getDateKey()}:*`);
}
async getFullMonthlyUsage(packageName) {
return this.getFullUsage(packageName, `${getDateKeyUntilMonth()}*`);
}
async getFullYearlyUsage(packageName) {
return this.getFullUsage(packageName, `${getDateKeyUntilYear()}*`);
}
};
var createMicrofoxUsagePricing = (config) => {
return new MicrofoxUsagePricing(config);
};
var createDefaultMicrofoxUsagePricing = () => {
if (!process.env.MICROFOX_REDIS_URL_TRACKER || !process.env.MICROFOX_REDIS_TOKEN_TRACKER) {
return;
}
if (!process.env.MICROFOX_CLIENT_REQUEST_ID) {
return;
}
return new MicrofoxUsagePricing({});
};
// src/types/index.ts
var import_usage_tracker = require("@microfox/usage-tracker");
var import_zod = require("zod");
var UsageWithPricingSchema = import_zod.z.object({
priceUSD: import_zod.z.number(),
originalPriceUSD: import_zod.z.number().optional()
}).and(import_usage_tracker.UsageSchema);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
MicrofoxUsagePricing,
PricingConfig,
UsageWithPricingSchema,
attachPricing,
attachPricingApi1,
attachPricingLLM,
createDefaultMicrofoxUsagePricing,
createMicrofoxUsagePricing,
fetchProviderPackage,
getPricingForLLM
});
//# sourceMappingURL=index.js.map