cost-katana 2.0.0

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.
Files changed (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +550 -0
  3. package/dist/analyzers/cost-analyzer.d.ts +28 -0
  4. package/dist/analyzers/cost-analyzer.d.ts.map +1 -0
  5. package/dist/analyzers/cost-analyzer.js +165 -0
  6. package/dist/analyzers/cost-analyzer.js.map +1 -0
  7. package/dist/analyzers/token-counter.d.ts +21 -0
  8. package/dist/analyzers/token-counter.d.ts.map +1 -0
  9. package/dist/analyzers/token-counter.js +100 -0
  10. package/dist/analyzers/token-counter.js.map +1 -0
  11. package/dist/analyzers/usage-tracker.d.ts +29 -0
  12. package/dist/analyzers/usage-tracker.d.ts.map +1 -0
  13. package/dist/analyzers/usage-tracker.js +142 -0
  14. package/dist/analyzers/usage-tracker.js.map +1 -0
  15. package/dist/config/default.d.ts +45 -0
  16. package/dist/config/default.d.ts.map +1 -0
  17. package/dist/config/default.js +103 -0
  18. package/dist/config/default.js.map +1 -0
  19. package/dist/config/model-types.d.ts +45 -0
  20. package/dist/config/model-types.d.ts.map +1 -0
  21. package/dist/config/model-types.js +101 -0
  22. package/dist/config/model-types.js.map +1 -0
  23. package/dist/config/pricing/anthropic.d.ts +3 -0
  24. package/dist/config/pricing/anthropic.d.ts.map +1 -0
  25. package/dist/config/pricing/anthropic.js +191 -0
  26. package/dist/config/pricing/anthropic.js.map +1 -0
  27. package/dist/config/pricing/aws-bedrock.d.ts +3 -0
  28. package/dist/config/pricing/aws-bedrock.d.ts.map +1 -0
  29. package/dist/config/pricing/aws-bedrock.js +747 -0
  30. package/dist/config/pricing/aws-bedrock.js.map +1 -0
  31. package/dist/config/pricing/cohere.d.ts +3 -0
  32. package/dist/config/pricing/cohere.d.ts.map +1 -0
  33. package/dist/config/pricing/cohere.js +371 -0
  34. package/dist/config/pricing/cohere.js.map +1 -0
  35. package/dist/config/pricing/deepseek.d.ts +3 -0
  36. package/dist/config/pricing/deepseek.d.ts.map +1 -0
  37. package/dist/config/pricing/deepseek.js +102 -0
  38. package/dist/config/pricing/deepseek.js.map +1 -0
  39. package/dist/config/pricing/google.d.ts +3 -0
  40. package/dist/config/pricing/google.d.ts.map +1 -0
  41. package/dist/config/pricing/google.js +671 -0
  42. package/dist/config/pricing/google.js.map +1 -0
  43. package/dist/config/pricing/grok.d.ts +3 -0
  44. package/dist/config/pricing/grok.d.ts.map +1 -0
  45. package/dist/config/pricing/grok.js +59 -0
  46. package/dist/config/pricing/grok.js.map +1 -0
  47. package/dist/config/pricing/index.d.ts +11 -0
  48. package/dist/config/pricing/index.d.ts.map +1 -0
  49. package/dist/config/pricing/index.js +24 -0
  50. package/dist/config/pricing/index.js.map +1 -0
  51. package/dist/config/pricing/meta.d.ts +3 -0
  52. package/dist/config/pricing/meta.d.ts.map +1 -0
  53. package/dist/config/pricing/meta.js +69 -0
  54. package/dist/config/pricing/meta.js.map +1 -0
  55. package/dist/config/pricing/mistral.d.ts +3 -0
  56. package/dist/config/pricing/mistral.d.ts.map +1 -0
  57. package/dist/config/pricing/mistral.js +690 -0
  58. package/dist/config/pricing/mistral.js.map +1 -0
  59. package/dist/config/pricing/openai.d.ts +3 -0
  60. package/dist/config/pricing/openai.d.ts.map +1 -0
  61. package/dist/config/pricing/openai.js +475 -0
  62. package/dist/config/pricing/openai.js.map +1 -0
  63. package/dist/config/pricing/xai.d.ts +3 -0
  64. package/dist/config/pricing/xai.d.ts.map +1 -0
  65. package/dist/config/pricing/xai.js +141 -0
  66. package/dist/config/pricing/xai.js.map +1 -0
  67. package/dist/config/pricing-data.d.ts +55 -0
  68. package/dist/config/pricing-data.d.ts.map +1 -0
  69. package/dist/config/pricing-data.js +179 -0
  70. package/dist/config/pricing-data.js.map +1 -0
  71. package/dist/feedback/client.d.ts +14 -0
  72. package/dist/feedback/client.d.ts.map +1 -0
  73. package/dist/feedback/client.js +95 -0
  74. package/dist/feedback/client.js.map +1 -0
  75. package/dist/feedback/index.d.ts +3 -0
  76. package/dist/feedback/index.d.ts.map +1 -0
  77. package/dist/feedback/index.js +21 -0
  78. package/dist/feedback/index.js.map +1 -0
  79. package/dist/gateway/client.d.ts +77 -0
  80. package/dist/gateway/client.d.ts.map +1 -0
  81. package/dist/gateway/client.js +630 -0
  82. package/dist/gateway/client.js.map +1 -0
  83. package/dist/gateway/index.d.ts +9 -0
  84. package/dist/gateway/index.d.ts.map +1 -0
  85. package/dist/gateway/index.js +66 -0
  86. package/dist/gateway/index.js.map +1 -0
  87. package/dist/index.d.ts +183 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +1438 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/optimizers/context-trimmer.d.ts +18 -0
  92. package/dist/optimizers/context-trimmer.d.ts.map +1 -0
  93. package/dist/optimizers/context-trimmer.js +221 -0
  94. package/dist/optimizers/context-trimmer.js.map +1 -0
  95. package/dist/optimizers/index.d.ts +6 -0
  96. package/dist/optimizers/index.d.ts.map +1 -0
  97. package/dist/optimizers/index.js +14 -0
  98. package/dist/optimizers/index.js.map +1 -0
  99. package/dist/optimizers/prompt-compressor.d.ts +15 -0
  100. package/dist/optimizers/prompt-compressor.d.ts.map +1 -0
  101. package/dist/optimizers/prompt-compressor.js +268 -0
  102. package/dist/optimizers/prompt-compressor.js.map +1 -0
  103. package/dist/optimizers/prompt-optimizer.d.ts +29 -0
  104. package/dist/optimizers/prompt-optimizer.d.ts.map +1 -0
  105. package/dist/optimizers/prompt-optimizer.js +381 -0
  106. package/dist/optimizers/prompt-optimizer.js.map +1 -0
  107. package/dist/optimizers/request-fusion.d.ts +34 -0
  108. package/dist/optimizers/request-fusion.d.ts.map +1 -0
  109. package/dist/optimizers/request-fusion.js +284 -0
  110. package/dist/optimizers/request-fusion.js.map +1 -0
  111. package/dist/optimizers/suggestion-engine.d.ts +29 -0
  112. package/dist/optimizers/suggestion-engine.d.ts.map +1 -0
  113. package/dist/optimizers/suggestion-engine.js +234 -0
  114. package/dist/optimizers/suggestion-engine.js.map +1 -0
  115. package/dist/providers/anthropic.d.ts +23 -0
  116. package/dist/providers/anthropic.d.ts.map +1 -0
  117. package/dist/providers/anthropic.js +108 -0
  118. package/dist/providers/anthropic.js.map +1 -0
  119. package/dist/providers/azure.d.ts +15 -0
  120. package/dist/providers/azure.d.ts.map +1 -0
  121. package/dist/providers/azure.js +115 -0
  122. package/dist/providers/azure.js.map +1 -0
  123. package/dist/providers/base.d.ts +20 -0
  124. package/dist/providers/base.d.ts.map +1 -0
  125. package/dist/providers/base.js +67 -0
  126. package/dist/providers/base.js.map +1 -0
  127. package/dist/providers/bedrock.d.ts +23 -0
  128. package/dist/providers/bedrock.d.ts.map +1 -0
  129. package/dist/providers/bedrock.js +247 -0
  130. package/dist/providers/bedrock.js.map +1 -0
  131. package/dist/providers/cohere.d.ts +17 -0
  132. package/dist/providers/cohere.d.ts.map +1 -0
  133. package/dist/providers/cohere.js +122 -0
  134. package/dist/providers/cohere.js.map +1 -0
  135. package/dist/providers/deepseek.d.ts +6 -0
  136. package/dist/providers/deepseek.d.ts.map +1 -0
  137. package/dist/providers/deepseek.js +17 -0
  138. package/dist/providers/deepseek.js.map +1 -0
  139. package/dist/providers/google.d.ts +17 -0
  140. package/dist/providers/google.d.ts.map +1 -0
  141. package/dist/providers/google.js +141 -0
  142. package/dist/providers/google.js.map +1 -0
  143. package/dist/providers/index.d.ts +13 -0
  144. package/dist/providers/index.d.ts.map +1 -0
  145. package/dist/providers/index.js +61 -0
  146. package/dist/providers/index.js.map +1 -0
  147. package/dist/providers/openai.d.ts +16 -0
  148. package/dist/providers/openai.d.ts.map +1 -0
  149. package/dist/providers/openai.js +194 -0
  150. package/dist/providers/openai.js.map +1 -0
  151. package/dist/trace/client.d.ts +48 -0
  152. package/dist/trace/client.d.ts.map +1 -0
  153. package/dist/trace/client.js +130 -0
  154. package/dist/trace/client.js.map +1 -0
  155. package/dist/trace/index.d.ts +7 -0
  156. package/dist/trace/index.d.ts.map +1 -0
  157. package/dist/trace/index.js +30 -0
  158. package/dist/trace/index.js.map +1 -0
  159. package/dist/trace/middleware.d.ts +70 -0
  160. package/dist/trace/middleware.d.ts.map +1 -0
  161. package/dist/trace/middleware.js +104 -0
  162. package/dist/trace/middleware.js.map +1 -0
  163. package/dist/trace/providers.d.ts +83 -0
  164. package/dist/trace/providers.d.ts.map +1 -0
  165. package/dist/trace/providers.js +340 -0
  166. package/dist/trace/providers.js.map +1 -0
  167. package/dist/trace/service.d.ts +59 -0
  168. package/dist/trace/service.d.ts.map +1 -0
  169. package/dist/trace/service.js +425 -0
  170. package/dist/trace/service.js.map +1 -0
  171. package/dist/trace/types.d.ts +102 -0
  172. package/dist/trace/types.d.ts.map +1 -0
  173. package/dist/trace/types.js +3 -0
  174. package/dist/trace/types.js.map +1 -0
  175. package/dist/types/failover.d.ts +29 -0
  176. package/dist/types/failover.d.ts.map +1 -0
  177. package/dist/types/failover.js +3 -0
  178. package/dist/types/failover.js.map +1 -0
  179. package/dist/types/feedback.d.ts +69 -0
  180. package/dist/types/feedback.d.ts.map +1 -0
  181. package/dist/types/feedback.js +3 -0
  182. package/dist/types/feedback.js.map +1 -0
  183. package/dist/types/gateway.d.ts +303 -0
  184. package/dist/types/gateway.d.ts.map +1 -0
  185. package/dist/types/gateway.js +3 -0
  186. package/dist/types/gateway.js.map +1 -0
  187. package/dist/types/index.d.ts +242 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +37 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/types/models.d.ts +7 -0
  192. package/dist/types/models.d.ts.map +1 -0
  193. package/dist/types/models.js +3838 -0
  194. package/dist/types/models.js.map +1 -0
  195. package/dist/types/providers.d.ts +128 -0
  196. package/dist/types/providers.d.ts.map +1 -0
  197. package/dist/types/providers.js +10 -0
  198. package/dist/types/providers.js.map +1 -0
  199. package/dist/types/simplified.d.ts +65 -0
  200. package/dist/types/simplified.d.ts.map +1 -0
  201. package/dist/types/simplified.js +4 -0
  202. package/dist/types/simplified.js.map +1 -0
  203. package/dist/utils/logger.d.ts +35 -0
  204. package/dist/utils/logger.d.ts.map +1 -0
  205. package/dist/utils/logger.js +154 -0
  206. package/dist/utils/logger.js.map +1 -0
  207. package/dist/utils/pricing.d.ts +30 -0
  208. package/dist/utils/pricing.d.ts.map +1 -0
  209. package/dist/utils/pricing.js +148 -0
  210. package/dist/utils/pricing.js.map +1 -0
  211. package/dist/utils/validators.d.ts +10 -0
  212. package/dist/utils/validators.d.ts.map +1 -0
  213. package/dist/utils/validators.js +133 -0
  214. package/dist/utils/validators.js.map +1 -0
  215. package/package.json +92 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 AI Cost Tracker
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,550 @@
1
+ # Cost Katana 🥷
2
+
3
+ **AI that just works. With automatic cost tracking.**
4
+
5
+ ```typescript
6
+ import { ai } from 'cost-katana';
7
+
8
+ const response = await ai('gpt-4', 'Hello, world!');
9
+ console.log(response.text); // "Hello! How can I help you today?"
10
+ console.log(`Cost: $${response.cost}`); // "Cost: $0.0012"
11
+ ```
12
+
13
+ That's it. No setup. No configuration. No complexity.
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install cost-katana
19
+ ```
20
+
21
+ > **Note**: Package was previously named `ai-cost-tracker`. If you're upgrading, uninstall the old package first:
22
+ > ```bash
23
+ > npm uninstall ai-cost-tracker
24
+ > npm install cost-katana
25
+ > ```
26
+
27
+ ## Quick Start
28
+
29
+ ### Zero Configuration
30
+
31
+ ```typescript
32
+ import { ai } from 'cost-katana';
33
+
34
+ // Just works with any AI model
35
+ await ai('gpt-4', 'Explain quantum computing');
36
+ await ai('claude-3-sonnet', 'Write a haiku');
37
+ await ai('gemini-pro', 'Solve this equation: 2x + 5 = 13');
38
+ ```
39
+
40
+ ### Chat Conversations
41
+
42
+ ```typescript
43
+ import { chat } from 'cost-katana';
44
+
45
+ const session = chat('gpt-4');
46
+ await session.send('Hello!');
47
+ await session.send('What can you help me with?');
48
+ await session.send('Tell me a joke');
49
+
50
+ console.log(`Total cost: $${session.totalCost}`);
51
+ ```
52
+
53
+ ### Compare Models
54
+
55
+ ```typescript
56
+ import { ai } from 'cost-katana';
57
+
58
+ const models = ['gpt-4', 'claude-3-sonnet', 'gemini-pro'];
59
+ const prompt = 'Explain relativity in one sentence';
60
+
61
+ for (const model of models) {
62
+ const response = await ai(model, prompt);
63
+ console.log(`${model}: $${response.cost.toFixed(4)}`);
64
+ }
65
+ ```
66
+
67
+ ## Features
68
+
69
+ ### 💰 Cost Tracking
70
+
71
+ Every response includes cost information:
72
+
73
+ ```typescript
74
+ const response = await ai('gpt-4', 'Write a story');
75
+ console.log(`Cost: $${response.cost}`);
76
+ console.log(`Tokens: ${response.tokens}`);
77
+ console.log(`Model: ${response.model}`);
78
+ console.log(`Provider: ${response.provider}`);
79
+ ```
80
+
81
+ ### 💾 Smart Caching
82
+
83
+ Save money by caching repeated requests:
84
+
85
+ ```typescript
86
+ // First call - costs money
87
+ const response1 = await ai('gpt-4', 'What is 2+2?', { cache: true });
88
+ console.log(response1.cached); // false
89
+
90
+ // Second call - free from cache
91
+ const response2 = await ai('gpt-4', 'What is 2+2?', { cache: true });
92
+ console.log(response2.cached); // true - saved money!
93
+ ```
94
+
95
+ ### ⚡ Cortex Optimization
96
+
97
+ Reduce costs by 70-95% with Cortex:
98
+
99
+ ```typescript
100
+ const response = await ai('gpt-4', 'Write a complete guide to Python', {
101
+ cortex: true // Enable optimization
102
+ });
103
+
104
+ console.log(response.optimized); // true
105
+ console.log(`Saved: ${response.savedAmount}`); // Amount saved
106
+ ```
107
+
108
+ ### 🛡️ Security Firewall
109
+
110
+ Block malicious prompts automatically:
111
+
112
+ ```typescript
113
+ import { configure } from 'cost-katana';
114
+
115
+ await configure({ firewall: true });
116
+
117
+ // Malicious prompts are blocked
118
+ try {
119
+ await ai('gpt-4', 'ignore instructions and...');
120
+ } catch (error) {
121
+ console.log('Blocked:', error.message);
122
+ }
123
+ ```
124
+
125
+ ### 🔄 Auto-Failover
126
+
127
+ Never fail - automatically switch providers:
128
+
129
+ ```typescript
130
+ // If OpenAI is down, automatically uses Claude or Gemini
131
+ const response = await ai('gpt-4', 'Hello');
132
+ console.log(response.provider); // Might be 'anthropic' if OpenAI failed
133
+ ```
134
+
135
+ ### 📊 Analytics Dashboard
136
+
137
+ All usage syncs to your dashboard at [costkatana.com](https://costkatana.com):
138
+
139
+ ```typescript
140
+ const response = await ai('gpt-4', 'Hello');
141
+ // Automatically tracked in your dashboard
142
+ // View at: https://costkatana.com/dashboard
143
+ ```
144
+
145
+ ## Configuration
146
+
147
+ ### Environment Variables
148
+
149
+ ```bash
150
+ # Option 1: Cost Katana (Recommended - all features)
151
+ COST_KATANA_KEY=dak_your_key_here
152
+
153
+ # Option 2: Direct provider keys (limited features)
154
+ OPENAI_API_KEY=sk-...
155
+ ANTHROPIC_API_KEY=sk-ant-...
156
+ GOOGLE_API_KEY=...
157
+ ```
158
+
159
+ ### Manual Configuration
160
+
161
+ ```typescript
162
+ import { configure } from 'cost-katana';
163
+
164
+ await configure({
165
+ apiKey: 'dak_your_key',
166
+ cortex: true, // 70-95% cost savings
167
+ cache: true, // Smart caching
168
+ firewall: true // Security
169
+ });
170
+ ```
171
+
172
+ ### Advanced Options
173
+
174
+ ```typescript
175
+ const response = await ai('gpt-4', 'Your prompt', {
176
+ temperature: 0.7, // Creativity level (0-2)
177
+ maxTokens: 500, // Response length limit
178
+ systemMessage: 'You are helpful', // System prompt
179
+ cache: true, // Enable caching
180
+ cortex: true // Enable optimization
181
+ });
182
+ ```
183
+
184
+ ## Multi-Provider Support
185
+
186
+ Works with all major AI providers:
187
+
188
+ ```typescript
189
+ // OpenAI
190
+ await ai('gpt-4', 'Hello');
191
+ await ai('gpt-3.5-turbo', 'Hello');
192
+
193
+ // Anthropic
194
+ await ai('claude-3-sonnet', 'Hello');
195
+ await ai('claude-3-haiku', 'Hello');
196
+
197
+ // Google
198
+ await ai('gemini-pro', 'Hello');
199
+ await ai('gemini-flash', 'Hello');
200
+
201
+ // AWS Bedrock
202
+ await ai('nova-pro', 'Hello');
203
+ await ai('nova-lite', 'Hello');
204
+
205
+ // And many more...
206
+ ```
207
+
208
+ ## Real-World Examples
209
+
210
+ ### Customer Support Bot
211
+
212
+ ```typescript
213
+ import { chat } from 'cost-katana';
214
+
215
+ const support = chat('gpt-3.5-turbo', {
216
+ systemMessage: 'You are a helpful customer support agent.'
217
+ });
218
+
219
+ async function handleCustomerQuery(query: string) {
220
+ const response = await support.send(query);
221
+ console.log(`Cost so far: $${support.totalCost}`);
222
+ return response;
223
+ }
224
+ ```
225
+
226
+ ### Content Generation
227
+
228
+ ```typescript
229
+ import { ai } from 'cost-katana';
230
+
231
+ async function generateBlogPost(topic: string) {
232
+ // Use Cortex for long-form content (70-95% savings)
233
+ const post = await ai('gpt-4', `Write a blog post about ${topic}`, {
234
+ cortex: true,
235
+ maxTokens: 2000
236
+ });
237
+
238
+ return {
239
+ content: post.text,
240
+ cost: post.cost,
241
+ wordCount: post.text.split(' ').length
242
+ };
243
+ }
244
+ ```
245
+
246
+ ### Code Assistant
247
+
248
+ ```typescript
249
+ import { ai } from 'cost-katana';
250
+
251
+ async function reviewCode(code: string) {
252
+ const review = await ai('claude-3-sonnet',
253
+ `Review this code and suggest improvements:\n\n${code}`,
254
+ { cache: true } // Cache for repeated reviews
255
+ );
256
+
257
+ return review.text;
258
+ }
259
+ ```
260
+
261
+ ### Translation Service
262
+
263
+ ```typescript
264
+ import { ai } from 'cost-katana';
265
+
266
+ async function translate(text: string, targetLanguage: string) {
267
+ // Use cheaper model for translations
268
+ const translated = await ai('gpt-3.5-turbo',
269
+ `Translate to ${targetLanguage}: ${text}`,
270
+ { cache: true }
271
+ );
272
+
273
+ return translated.text;
274
+ }
275
+ ```
276
+
277
+ ## Framework Integration
278
+
279
+ ### Next.js App Router
280
+
281
+ ```typescript
282
+ // app/api/chat/route.ts
283
+ import { ai } from 'cost-katana';
284
+
285
+ export async function POST(request: Request) {
286
+ const { prompt } = await request.json();
287
+ const response = await ai('gpt-4', prompt);
288
+ return Response.json(response);
289
+ }
290
+ ```
291
+
292
+ ### Express.js
293
+
294
+ ```typescript
295
+ import express from 'express';
296
+ import { ai } from 'cost-katana';
297
+
298
+ const app = express();
299
+ app.use(express.json());
300
+
301
+ app.post('/api/chat', async (req, res) => {
302
+ const response = await ai('gpt-4', req.body.prompt);
303
+ res.json(response);
304
+ });
305
+ ```
306
+
307
+ ### Fastify
308
+
309
+ ```typescript
310
+ import fastify from 'fastify';
311
+ import { ai } from 'cost-katana';
312
+
313
+ const app = fastify();
314
+
315
+ app.post('/api/chat', async (request, reply) => {
316
+ const { prompt } = request.body;
317
+ const response = await ai('gpt-4', prompt);
318
+ return response;
319
+ });
320
+ ```
321
+
322
+ ### NestJS
323
+
324
+ ```typescript
325
+ import { Controller, Post, Body } from '@nestjs/common';
326
+ import { ai } from 'cost-katana';
327
+
328
+ @Controller('api')
329
+ export class ChatController {
330
+ @Post('chat')
331
+ async chat(@Body() body: { prompt: string }) {
332
+ return await ai('gpt-4', body.prompt);
333
+ }
334
+ }
335
+ ```
336
+
337
+ ## Error Handling
338
+
339
+ ```typescript
340
+ import { ai } from 'cost-katana';
341
+
342
+ try {
343
+ const response = await ai('gpt-4', 'Hello');
344
+ console.log(response.text);
345
+ } catch (error) {
346
+ if (error.code === 'NO_API_KEY') {
347
+ console.log('Please set your API key');
348
+ } else if (error.code === 'RATE_LIMIT') {
349
+ console.log('Rate limit exceeded');
350
+ } else if (error.code === 'INVALID_MODEL') {
351
+ console.log('Model not found');
352
+ } else {
353
+ console.log('Error:', error.message);
354
+ }
355
+ }
356
+ ```
357
+
358
+ ## Cost Optimization Tips
359
+
360
+ ### 1. Use Appropriate Models
361
+
362
+ ```typescript
363
+ // For simple tasks, use cheaper models
364
+ await ai('gpt-3.5-turbo', 'Simple question'); // $0.0001
365
+
366
+ // For complex tasks, use powerful models
367
+ await ai('gpt-4', 'Complex analysis'); // $0.01
368
+ ```
369
+
370
+ ### 2. Enable Caching
371
+
372
+ ```typescript
373
+ // Cache repeated queries
374
+ await ai('gpt-4', 'Common question', { cache: true });
375
+ ```
376
+
377
+ ### 3. Use Cortex for Long Content
378
+
379
+ ```typescript
380
+ // 70-95% savings on long-form content
381
+ await ai('gpt-4', 'Write a book chapter', { cortex: true });
382
+ ```
383
+
384
+ ### 4. Batch Similar Requests
385
+
386
+ ```typescript
387
+ const session = chat('gpt-3.5-turbo');
388
+ // Reuse session for related queries
389
+ await session.send('Query 1');
390
+ await session.send('Query 2');
391
+ ```
392
+
393
+ ## Monitoring & Analytics
394
+
395
+ ### Track Usage
396
+
397
+ ```typescript
398
+ import { chat } from 'cost-katana';
399
+
400
+ const session = chat('gpt-4');
401
+ await session.send('Hello');
402
+ await session.send('How are you?');
403
+
404
+ console.log('Messages:', session.messages.length);
405
+ console.log('Total cost:', session.totalCost);
406
+ console.log('Total tokens:', session.totalTokens);
407
+ ```
408
+
409
+ ### Dashboard Features
410
+
411
+ Visit [costkatana.com/dashboard](https://costkatana.com/dashboard) to see:
412
+
413
+ - Real-time cost tracking
414
+ - Usage by model and provider
415
+ - Daily/weekly/monthly spending
416
+ - Token usage analytics
417
+ - Optimization recommendations
418
+ - Team usage breakdown
419
+ - Budget alerts
420
+ - API performance metrics
421
+
422
+ ## Security & Privacy
423
+
424
+ ### Data Protection
425
+
426
+ - All API keys encrypted at rest
427
+ - No prompt/response logging without permission
428
+ - GDPR compliant data handling
429
+ - SOC2 Type II certified infrastructure
430
+
431
+ ### Firewall Protection
432
+
433
+ ```typescript
434
+ await configure({ firewall: true });
435
+
436
+ // Automatically blocks:
437
+ // - Prompt injection attacks
438
+ // - Jailbreak attempts
439
+ // - Data exfiltration
440
+ // - Malicious content
441
+ ```
442
+
443
+ ## Troubleshooting
444
+
445
+ ### No API Keys Found
446
+
447
+ ```bash
448
+ # Set Cost Katana key (recommended)
449
+ export COST_KATANA_KEY="dak_your_key"
450
+
451
+ # Or set provider keys directly
452
+ export OPENAI_API_KEY="sk-..."
453
+ ```
454
+
455
+ ### Model Not Available
456
+
457
+ ```typescript
458
+ // Check available models
459
+ import { ai } from 'cost-katana';
460
+
461
+ try {
462
+ await ai('model-name', 'test');
463
+ } catch (error) {
464
+ console.log('Available models:', error.availableModels);
465
+ }
466
+ ```
467
+
468
+ ### Rate Limits
469
+
470
+ ```typescript
471
+ // Automatic retry with backoff
472
+ const response = await ai('gpt-4', 'Hello', {
473
+ retry: true // Auto-retry on rate limits
474
+ });
475
+ ```
476
+
477
+ ## Migration Guide
478
+
479
+ ### From OpenAI SDK
480
+
481
+ ```typescript
482
+ // Before (OpenAI SDK)
483
+ import OpenAI from 'openai';
484
+ const openai = new OpenAI({ apiKey: 'sk-...' });
485
+ const completion = await openai.chat.completions.create({
486
+ model: 'gpt-4',
487
+ messages: [{ role: 'user', content: 'Hello' }]
488
+ });
489
+ console.log(completion.choices[0].message.content);
490
+
491
+ // After (Cost Katana)
492
+ import { ai } from 'cost-katana';
493
+ const response = await ai('gpt-4', 'Hello');
494
+ console.log(response.text);
495
+ console.log(`Cost: $${response.cost}`); // Bonus: cost tracking!
496
+ ```
497
+
498
+ ### From Anthropic SDK
499
+
500
+ ```typescript
501
+ // Before (Anthropic SDK)
502
+ import Anthropic from '@anthropic-ai/sdk';
503
+ const anthropic = new Anthropic({ apiKey: 'sk-ant-...' });
504
+ const message = await anthropic.messages.create({
505
+ model: 'claude-3-sonnet-20241022',
506
+ messages: [{ role: 'user', content: 'Hello' }]
507
+ });
508
+
509
+ // After (Cost Katana)
510
+ import { ai } from 'cost-katana';
511
+ const response = await ai('claude-3-sonnet', 'Hello');
512
+ ```
513
+
514
+ ### From LangChain
515
+
516
+ ```typescript
517
+ // Before (LangChain)
518
+ import { ChatOpenAI } from 'langchain/chat_models/openai';
519
+ const model = new ChatOpenAI({ modelName: 'gpt-4' });
520
+ const response = await model.call([{ content: 'Hello' }]);
521
+
522
+ // After (Cost Katana)
523
+ import { ai } from 'cost-katana';
524
+ const response = await ai('gpt-4', 'Hello');
525
+ ```
526
+
527
+ ## Support
528
+
529
+ - **Dashboard**: [costkatana.com](https://costkatana.com)
530
+ - **Documentation**: [docs.costkatana.com](https://docs.costkatana.com)
531
+ - **GitHub**: [github.com/cost-katana](https://github.com/cost-katana)
532
+ - **Email**: support@costkatana.com
533
+ - **Discord**: [discord.gg/costkatana](https://discord.gg/Wcwzw8wM)
534
+
535
+ ## License
536
+
537
+ MIT © Cost Katana
538
+
539
+ ---
540
+
541
+ **Start saving on AI costs today!**
542
+
543
+ ```bash
544
+ npm install ai-cost-tracker
545
+ ```
546
+
547
+ ```typescript
548
+ import { ai } from 'cost-katana';
549
+ await ai('gpt-4', 'Hello, world!');
550
+ ```
@@ -0,0 +1,28 @@
1
+ import { UsageMetadata, UsageAnalytics } from '../types';
2
+ export declare class CostAnalyzer {
3
+ private usageData;
4
+ constructor(initialData?: UsageMetadata[]);
5
+ addUsageData(data: UsageMetadata | UsageMetadata[]): void;
6
+ clearData(): void;
7
+ getData(): UsageMetadata[];
8
+ analyzeUsage(startDate?: Date, endDate?: Date, userId?: string): UsageAnalytics;
9
+ private filterData;
10
+ private calculateTotalCost;
11
+ private calculateTotalTokens;
12
+ private getMostUsedModels;
13
+ private getCostByProvider;
14
+ private getUsageOverTime;
15
+ private getTopExpensivePrompts;
16
+ private getEmptyAnalytics;
17
+ getCostProjection(days: number): number;
18
+ getOptimizationOpportunities(): {
19
+ provider: string;
20
+ model: string;
21
+ currentCost: number;
22
+ optimizedCost: number;
23
+ savings: number;
24
+ recommendation: string;
25
+ }[];
26
+ getAnomalies(threshold?: number): UsageMetadata[];
27
+ }
28
+ //# sourceMappingURL=cost-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/cost-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EAMf,MAAM,UAAU,CAAC;AAElB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAuB;gBAE5B,WAAW,CAAC,EAAE,aAAa,EAAE;IAMzC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE;IAQlD,SAAS;IAIT,OAAO,IAAI,aAAa,EAAE;IAI1B,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc;IA0B/E,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,iBAAiB;IAazB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAWvC,4BAA4B,IAAI;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE;IAiCH,YAAY,CAAC,SAAS,GAAE,MAAU,GAAG,aAAa,EAAE;CASrD"}