megabuff 0.9.2 → 0.10.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/cost.js ADDED
@@ -0,0 +1,159 @@
1
+ // Pricing data for all supported models
2
+ const MODEL_PRICING = {
3
+ // OpenAI models
4
+ "gpt-5.2": { input: 2.50, output: 10.00 },
5
+ "gpt-4o": { input: 2.50, output: 10.00 },
6
+ "gpt-4o-mini": { input: 0.15, output: 0.60 },
7
+ "gpt-4-turbo": { input: 10.00, output: 30.00 },
8
+ "gpt-4": { input: 30.00, output: 60.00 },
9
+ "gpt-3.5-turbo": { input: 0.50, output: 1.50 },
10
+ // Anthropic models
11
+ "claude-opus-4-5": { input: 15.00, output: 75.00 },
12
+ "claude-sonnet-4-5": { input: 3.00, output: 15.00 },
13
+ "claude-sonnet-4-0": { input: 3.00, output: 15.00 },
14
+ "claude-sonnet-4": { input: 3.00, output: 15.00 },
15
+ "claude-3-5-sonnet-20241022": { input: 3.00, output: 15.00 },
16
+ "claude-sonnet-4-5-20250929": { input: 3.00, output: 15.00 },
17
+ "claude-3-opus-20240229": { input: 15.00, output: 75.00 },
18
+ "claude-3-sonnet-20240229": { input: 3.00, output: 15.00 },
19
+ "claude-3-haiku-20240307": { input: 0.25, output: 1.25 },
20
+ // Google Gemini models (prices are approximate, Google uses different pricing tiers)
21
+ "gemini-flash-latest": { input: 0.075, output: 0.30 },
22
+ "gemini-2.5-flash": { input: 0.075, output: 0.30 },
23
+ "gemini-3-flash-preview": { input: 0.075, output: 0.30 },
24
+ "gemini-3-pro-preview": { input: 1.25, output: 5.00 },
25
+ "gemini-2.5-flash-lite": { input: 0.04, output: 0.15 },
26
+ "gemini-2.5-pro": { input: 1.25, output: 5.00 },
27
+ "gemini-2.0-flash": { input: 0.075, output: 0.30 },
28
+ "gemini-2.0-flash-lite": { input: 0.04, output: 0.15 },
29
+ // xAI (Grok) models
30
+ "grok-beta": { input: 5.00, output: 15.00 },
31
+ "grok-vision-beta": { input: 5.00, output: 15.00 },
32
+ // DeepSeek models
33
+ "deepseek-chat": { input: 0.14, output: 0.28 },
34
+ "deepseek-reasoner": { input: 0.55, output: 2.19 },
35
+ };
36
+ /**
37
+ * Estimate token count from text (rough approximation)
38
+ * More accurate token counting would require the actual tokenizer for each model
39
+ */
40
+ export function estimateTokens(text) {
41
+ // Rough approximation: ~4 characters per token on average
42
+ // This is a conservative estimate and works reasonably well for English text
43
+ return Math.ceil(text.length / 4);
44
+ }
45
+ /**
46
+ * Get pricing for a specific model
47
+ */
48
+ export function getModelPricing(model) {
49
+ return MODEL_PRICING[model] || null;
50
+ }
51
+ /**
52
+ * Calculate cost for a given number of tokens
53
+ */
54
+ export function calculateCost(inputTokens, outputTokens, model) {
55
+ const pricing = getModelPricing(model);
56
+ if (!pricing) {
57
+ return 0; // Unknown model, can't estimate
58
+ }
59
+ const inputCost = (inputTokens / 1_000_000) * pricing.input;
60
+ const outputCost = (outputTokens / 1_000_000) * pricing.output;
61
+ return inputCost + outputCost;
62
+ }
63
+ /**
64
+ * Estimate cost for a prompt optimization
65
+ */
66
+ export function estimateOptimizationCost(promptText, model, iterations = 1, systemPromptLength = 500 // Approximate system prompt size
67
+ ) {
68
+ const promptTokens = estimateTokens(promptText);
69
+ const systemTokens = systemPromptLength;
70
+ // For each iteration:
71
+ // Input = system prompt + current prompt
72
+ // Output = optimized prompt (assume similar size to input, maybe slightly larger)
73
+ let totalInputTokens = 0;
74
+ let totalOutputTokens = 0;
75
+ let currentPromptTokens = promptTokens;
76
+ for (let i = 0; i < iterations; i++) {
77
+ totalInputTokens += systemTokens + currentPromptTokens;
78
+ // Assume output is 1.2x the input prompt size (optimization often adds detail)
79
+ const iterationOutput = Math.ceil(currentPromptTokens * 1.2);
80
+ totalOutputTokens += iterationOutput;
81
+ currentPromptTokens = iterationOutput; // Next iteration uses this output as input
82
+ }
83
+ const estimatedCost = calculateCost(totalInputTokens, totalOutputTokens, model);
84
+ return {
85
+ inputTokens: totalInputTokens,
86
+ outputTokens: totalOutputTokens,
87
+ estimatedCost,
88
+ };
89
+ }
90
+ /**
91
+ * Estimate cost for a prompt analysis
92
+ */
93
+ export function estimateAnalysisCost(promptText, model, systemPromptLength = 400) {
94
+ const promptTokens = estimateTokens(promptText);
95
+ const systemTokens = systemPromptLength;
96
+ const inputTokens = systemTokens + promptTokens;
97
+ // Analysis typically generates a detailed report, estimate ~800 tokens
98
+ const outputTokens = 800;
99
+ const estimatedCost = calculateCost(inputTokens, outputTokens, model);
100
+ return {
101
+ inputTokens,
102
+ outputTokens,
103
+ estimatedCost,
104
+ };
105
+ }
106
+ /**
107
+ * Format cost as a human-readable string
108
+ */
109
+ export function formatCost(cost) {
110
+ if (cost < 0.0001) {
111
+ return "<$0.0001";
112
+ }
113
+ else if (cost < 0.01) {
114
+ return `$${cost.toFixed(4)}`;
115
+ }
116
+ else if (cost < 1) {
117
+ return `$${cost.toFixed(3)}`;
118
+ }
119
+ else {
120
+ return `$${cost.toFixed(2)}`;
121
+ }
122
+ }
123
+ /**
124
+ * Get default model for a provider (for cost estimation)
125
+ */
126
+ const DEFAULT_MODELS = {
127
+ openai: "gpt-5.2",
128
+ anthropic: "claude-opus-4-5",
129
+ google: "gemini-2.5-flash",
130
+ xai: "grok-beta",
131
+ deepseek: "deepseek-chat",
132
+ "azure-openai": "gpt-4o-mini",
133
+ };
134
+ export function getDefaultModelForProvider(provider) {
135
+ return DEFAULT_MODELS[provider];
136
+ }
137
+ /**
138
+ * Format tokens with comma separators
139
+ */
140
+ export function formatTokens(tokens) {
141
+ return tokens.toLocaleString();
142
+ }
143
+ /**
144
+ * Get detailed pricing breakdown for a model
145
+ */
146
+ export function getPricingBreakdown(model) {
147
+ const pricing = getModelPricing(model);
148
+ if (!pricing) {
149
+ return null;
150
+ }
151
+ return {
152
+ model,
153
+ inputPricePer1M: pricing.input,
154
+ outputPricePer1M: pricing.output,
155
+ inputPricePerToken: `$${(pricing.input / 1_000_000).toFixed(9)}`,
156
+ outputPricePerToken: `$${(pricing.output / 1_000_000).toFixed(9)}`,
157
+ };
158
+ }
159
+ //# sourceMappingURL=cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}