ai.matey.core 0.2.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/bridge.js +657 -0
  3. package/dist/cjs/bridge.js.map +1 -0
  4. package/dist/cjs/capability-inference.js +349 -0
  5. package/dist/cjs/capability-inference.js.map +1 -0
  6. package/dist/cjs/capability-matcher.js +216 -0
  7. package/dist/cjs/capability-matcher.js.map +1 -0
  8. package/dist/cjs/index.js +31 -0
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/middleware-stack.js +256 -0
  11. package/dist/cjs/middleware-stack.js.map +1 -0
  12. package/dist/cjs/model-pricing.js +350 -0
  13. package/dist/cjs/model-pricing.js.map +1 -0
  14. package/dist/cjs/model-translation.js +171 -0
  15. package/dist/cjs/model-translation.js.map +1 -0
  16. package/dist/cjs/router.js +1388 -0
  17. package/dist/cjs/router.js.map +1 -0
  18. package/dist/esm/bridge.js +652 -0
  19. package/dist/esm/bridge.js.map +1 -0
  20. package/dist/esm/capability-inference.js +343 -0
  21. package/dist/esm/capability-inference.js.map +1 -0
  22. package/dist/esm/capability-matcher.js +210 -0
  23. package/dist/esm/capability-matcher.js.map +1 -0
  24. package/dist/esm/index.js +15 -0
  25. package/dist/esm/index.js.map +1 -0
  26. package/dist/esm/middleware-stack.js +250 -0
  27. package/dist/esm/middleware-stack.js.map +1 -0
  28. package/dist/esm/model-pricing.js +340 -0
  29. package/dist/esm/model-pricing.js.map +1 -0
  30. package/dist/esm/model-translation.js +163 -0
  31. package/dist/esm/model-translation.js.map +1 -0
  32. package/dist/esm/router.js +1383 -0
  33. package/dist/esm/router.js.map +1 -0
  34. package/dist/types/bridge.d.ts +254 -0
  35. package/dist/types/bridge.d.ts.map +1 -0
  36. package/dist/types/capability-inference.d.ts +35 -0
  37. package/dist/types/capability-inference.d.ts.map +1 -0
  38. package/dist/types/capability-matcher.d.ts +104 -0
  39. package/dist/types/capability-matcher.d.ts.map +1 -0
  40. package/dist/types/index.d.ts +15 -0
  41. package/dist/types/index.d.ts.map +1 -0
  42. package/dist/types/middleware-stack.d.ts +102 -0
  43. package/dist/types/middleware-stack.d.ts.map +1 -0
  44. package/dist/types/model-pricing.d.ts +81 -0
  45. package/dist/types/model-pricing.d.ts.map +1 -0
  46. package/dist/types/model-translation.d.ts +171 -0
  47. package/dist/types/model-translation.d.ts.map +1 -0
  48. package/dist/types/router.d.ts +287 -0
  49. package/dist/types/router.d.ts.map +1 -0
  50. package/package.json +70 -0
  51. package/readme.md +34 -0
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ /**
3
+ * Middleware Stack Implementation
4
+ *
5
+ * Composable middleware system for request/response transformation.
6
+ * Middleware executes in order with "onion" pattern - each middleware
7
+ * can execute code before and after calling next().
8
+ *
9
+ * @module
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MiddlewareStack = void 0;
13
+ exports.createMiddlewareContext = createMiddlewareContext;
14
+ exports.createStreamingMiddlewareContext = createStreamingMiddlewareContext;
15
+ const ai_matey_errors_1 = require("ai.matey.errors");
16
+ // ============================================================================
17
+ // Middleware Stack
18
+ // ============================================================================
19
+ /**
20
+ * Middleware stack for composing middleware functions.
21
+ *
22
+ * Executes middleware in order with proper error handling and context management.
23
+ */
24
+ class MiddlewareStack {
25
+ middleware = [];
26
+ streamingMiddleware = [];
27
+ locked = false;
28
+ /**
29
+ * Add middleware to the stack.
30
+ *
31
+ * @param middleware Middleware function to add
32
+ * @throws {MiddlewareError} If stack is locked
33
+ */
34
+ use(middleware) {
35
+ if (this.locked) {
36
+ throw new ai_matey_errors_1.MiddlewareError({
37
+ message: 'Cannot add middleware after stack is locked',
38
+ middlewareName: 'unknown',
39
+ });
40
+ }
41
+ this.middleware.push(middleware);
42
+ }
43
+ /**
44
+ * Remove middleware from the stack.
45
+ *
46
+ * @param middleware Middleware function to remove
47
+ * @returns true if middleware was found and removed, false otherwise
48
+ * @throws {MiddlewareError} If stack is locked
49
+ */
50
+ remove(middleware) {
51
+ if (this.locked) {
52
+ throw new ai_matey_errors_1.MiddlewareError({
53
+ message: 'Cannot remove middleware after stack is locked',
54
+ middlewareName: 'unknown',
55
+ });
56
+ }
57
+ const index = this.middleware.indexOf(middleware);
58
+ if (index !== -1) {
59
+ this.middleware.splice(index, 1);
60
+ return true;
61
+ }
62
+ return false;
63
+ }
64
+ /**
65
+ * Add streaming middleware to the stack.
66
+ *
67
+ * @param middleware Streaming middleware function to add
68
+ * @throws {MiddlewareError} If stack is locked
69
+ */
70
+ useStreaming(middleware) {
71
+ if (this.locked) {
72
+ throw new ai_matey_errors_1.MiddlewareError({
73
+ message: 'Cannot add streaming middleware after stack is locked',
74
+ middlewareName: 'unknown',
75
+ });
76
+ }
77
+ this.streamingMiddleware.push(middleware);
78
+ }
79
+ /**
80
+ * Lock the stack to prevent further modifications.
81
+ *
82
+ * Called automatically on first request execution.
83
+ */
84
+ lock() {
85
+ this.locked = true;
86
+ }
87
+ /**
88
+ * Get all middleware in the stack.
89
+ */
90
+ getMiddleware() {
91
+ return [...this.middleware];
92
+ }
93
+ /**
94
+ * Get all streaming middleware in the stack.
95
+ */
96
+ getStreamingMiddleware() {
97
+ return [...this.streamingMiddleware];
98
+ }
99
+ /**
100
+ * Check if stack is locked.
101
+ */
102
+ isLocked() {
103
+ return this.locked;
104
+ }
105
+ /**
106
+ * Execute middleware stack for non-streaming requests.
107
+ *
108
+ * @param context Middleware context
109
+ * @param finalHandler Final handler function (backend.execute)
110
+ * @returns Response after middleware chain
111
+ */
112
+ async execute(context, finalHandler) {
113
+ // Lock stack on first execution
114
+ if (!this.locked) {
115
+ this.lock();
116
+ }
117
+ // If no middleware, call handler directly
118
+ if (this.middleware.length === 0) {
119
+ return finalHandler();
120
+ }
121
+ // Compose middleware chain
122
+ let index = 0;
123
+ const next = async () => {
124
+ if (index >= this.middleware.length) {
125
+ // End of middleware chain, call final handler
126
+ return finalHandler();
127
+ }
128
+ const middlewareFn = this.middleware[index];
129
+ if (!middlewareFn) {
130
+ // End of middleware chain, call final handler
131
+ return finalHandler();
132
+ }
133
+ index++;
134
+ try {
135
+ return await middlewareFn(context, next);
136
+ }
137
+ catch (error) {
138
+ // Re-throw as MiddlewareError if not already
139
+ if (error instanceof ai_matey_errors_1.MiddlewareError) {
140
+ throw error;
141
+ }
142
+ throw new ai_matey_errors_1.MiddlewareError({
143
+ message: `Middleware execution failed: ${error instanceof Error ? error.message : String(error)}`,
144
+ cause: error instanceof Error ? error : undefined,
145
+ irState: {
146
+ request: context.request,
147
+ },
148
+ });
149
+ }
150
+ };
151
+ return next();
152
+ }
153
+ /**
154
+ * Execute middleware stack for streaming requests.
155
+ *
156
+ * @param context Streaming middleware context
157
+ * @param finalHandler Final handler function (backend.executeStream)
158
+ * @returns Stream after middleware chain
159
+ */
160
+ async executeStream(context, finalHandler) {
161
+ // Lock stack on first execution
162
+ if (!this.locked) {
163
+ this.lock();
164
+ }
165
+ // If no streaming middleware, call handler directly
166
+ if (this.streamingMiddleware.length === 0) {
167
+ return finalHandler();
168
+ }
169
+ // Compose streaming middleware chain
170
+ let index = 0;
171
+ const next = async () => {
172
+ if (index >= this.streamingMiddleware.length) {
173
+ // End of middleware chain, call final handler
174
+ return finalHandler();
175
+ }
176
+ const middlewareFn = this.streamingMiddleware[index];
177
+ if (!middlewareFn) {
178
+ // End of middleware chain, call final handler
179
+ return finalHandler();
180
+ }
181
+ index++;
182
+ try {
183
+ return await middlewareFn(context, next);
184
+ }
185
+ catch (error) {
186
+ // Re-throw as MiddlewareError if not already
187
+ if (error instanceof ai_matey_errors_1.MiddlewareError) {
188
+ throw error;
189
+ }
190
+ throw new ai_matey_errors_1.MiddlewareError({
191
+ message: `Streaming middleware execution failed: ${error instanceof Error ? error.message : String(error)}`,
192
+ cause: error instanceof Error ? error : undefined,
193
+ irState: {
194
+ request: context.request,
195
+ },
196
+ });
197
+ }
198
+ };
199
+ return next();
200
+ }
201
+ /**
202
+ * Clear all middleware from the stack.
203
+ *
204
+ * @throws {MiddlewareError} If stack is locked
205
+ */
206
+ clear() {
207
+ if (this.locked) {
208
+ throw new ai_matey_errors_1.MiddlewareError({
209
+ message: 'Cannot clear middleware after stack is locked',
210
+ });
211
+ }
212
+ this.middleware = [];
213
+ this.streamingMiddleware = [];
214
+ }
215
+ }
216
+ exports.MiddlewareStack = MiddlewareStack;
217
+ // ============================================================================
218
+ // Helper Functions
219
+ // ============================================================================
220
+ /**
221
+ * Create middleware context from request and config.
222
+ *
223
+ * @param request IR request
224
+ * @param config Bridge configuration
225
+ * @param signal Optional abort signal
226
+ * @returns Middleware context
227
+ */
228
+ function createMiddlewareContext(request, config, signal) {
229
+ return {
230
+ request,
231
+ isStreaming: request.stream ?? false,
232
+ state: {},
233
+ config,
234
+ signal,
235
+ };
236
+ }
237
+ /**
238
+ * Create streaming middleware context from request and config.
239
+ *
240
+ * @param request IR request
241
+ * @param config Bridge configuration
242
+ * @param signal Optional abort signal
243
+ * @returns Streaming middleware context
244
+ */
245
+ function createStreamingMiddlewareContext(request, config, signal) {
246
+ return {
247
+ request,
248
+ isStreaming: true,
249
+ state: {},
250
+ config,
251
+ signal,
252
+ chunksProcessed: 0,
253
+ streamComplete: false,
254
+ };
255
+ }
256
+ //# sourceMappingURL=middleware-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware-stack.js","sourceRoot":"","sources":["../../src/middleware-stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+ /**
3
+ * Model Pricing Registry
4
+ *
5
+ * Centralized pricing database for AI models across providers.
6
+ * Prices are in USD per 1,000 tokens.
7
+ *
8
+ * @module
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getModelPricing = getModelPricing;
12
+ exports.getModelCapabilities = getModelCapabilities;
13
+ exports.getAllPricedModels = getAllPricedModels;
14
+ exports.getModelsByFamily = getModelsByFamily;
15
+ exports.setPricingOverride = setPricingOverride;
16
+ exports.clearPricingOverride = clearPricingOverride;
17
+ exports.clearAllPricingOverrides = clearAllPricingOverrides;
18
+ exports.getPricingWithOverrides = getPricingWithOverrides;
19
+ /**
20
+ * Static pricing database for major AI models.
21
+ * Data sourced from provider APIs and community benchmarks (as of October 2024).
22
+ */
23
+ const MODEL_PRICING_DATABASE = {
24
+ // OpenAI Models
25
+ 'gpt-4': {
26
+ pricing: { input: 0.03, output: 0.06 },
27
+ latency: { p50: 2000, p95: 4000 },
28
+ qualityScore: 95,
29
+ modelFamily: 'gpt-4',
30
+ releaseDate: '2023-03-14',
31
+ contextWindow: 8192,
32
+ maxTokens: 4096,
33
+ supportsStreaming: true,
34
+ supportsVision: false,
35
+ supportsTools: true,
36
+ supportsJSON: true,
37
+ },
38
+ 'gpt-4-turbo': {
39
+ pricing: { input: 0.01, output: 0.03 },
40
+ latency: { p50: 1800, p95: 3500 },
41
+ qualityScore: 95,
42
+ modelFamily: 'gpt-4',
43
+ releaseDate: '2024-04-09',
44
+ contextWindow: 128000,
45
+ maxTokens: 4096,
46
+ supportsStreaming: true,
47
+ supportsVision: true,
48
+ supportsTools: true,
49
+ supportsJSON: true,
50
+ },
51
+ 'gpt-4-turbo-preview': {
52
+ pricing: { input: 0.01, output: 0.03 },
53
+ latency: { p50: 1800, p95: 3500 },
54
+ qualityScore: 94,
55
+ modelFamily: 'gpt-4',
56
+ releaseDate: '2024-01-25',
57
+ contextWindow: 128000,
58
+ maxTokens: 4096,
59
+ supportsStreaming: true,
60
+ supportsVision: true,
61
+ supportsTools: true,
62
+ supportsJSON: true,
63
+ },
64
+ 'gpt-3.5-turbo': {
65
+ pricing: { input: 0.0005, output: 0.0015 },
66
+ latency: { p50: 800, p95: 1500 },
67
+ qualityScore: 75,
68
+ modelFamily: 'gpt-3.5',
69
+ releaseDate: '2023-03-01',
70
+ contextWindow: 16385,
71
+ maxTokens: 4096,
72
+ supportsStreaming: true,
73
+ supportsVision: false,
74
+ supportsTools: true,
75
+ supportsJSON: true,
76
+ },
77
+ 'gpt-4o': {
78
+ pricing: { input: 0.005, output: 0.015 },
79
+ latency: { p50: 1200, p95: 2500 },
80
+ qualityScore: 96,
81
+ modelFamily: 'gpt-4',
82
+ releaseDate: '2024-05-13',
83
+ contextWindow: 128000,
84
+ maxTokens: 4096,
85
+ supportsStreaming: true,
86
+ supportsVision: true,
87
+ supportsTools: true,
88
+ supportsJSON: true,
89
+ },
90
+ 'gpt-4o-mini': {
91
+ pricing: { input: 0.00015, output: 0.0006 },
92
+ latency: { p50: 600, p95: 1200 },
93
+ qualityScore: 80,
94
+ modelFamily: 'gpt-4',
95
+ releaseDate: '2024-07-18',
96
+ contextWindow: 128000,
97
+ maxTokens: 16384,
98
+ supportsStreaming: true,
99
+ supportsVision: true,
100
+ supportsTools: true,
101
+ supportsJSON: true,
102
+ },
103
+ // Anthropic Models
104
+ 'claude-3-5-sonnet-20241022': {
105
+ pricing: { input: 0.003, output: 0.015 },
106
+ latency: { p50: 1500, p95: 3000 },
107
+ qualityScore: 97,
108
+ modelFamily: 'claude-3',
109
+ releaseDate: '2024-10-22',
110
+ contextWindow: 200000,
111
+ maxTokens: 8192,
112
+ supportsStreaming: true,
113
+ supportsVision: true,
114
+ supportsTools: true,
115
+ supportsJSON: false,
116
+ },
117
+ 'claude-3-opus-20240229': {
118
+ pricing: { input: 0.015, output: 0.075 },
119
+ latency: { p50: 2200, p95: 4500 },
120
+ qualityScore: 96,
121
+ modelFamily: 'claude-3',
122
+ releaseDate: '2024-02-29',
123
+ contextWindow: 200000,
124
+ maxTokens: 4096,
125
+ supportsStreaming: true,
126
+ supportsVision: true,
127
+ supportsTools: true,
128
+ supportsJSON: false,
129
+ },
130
+ 'claude-3-sonnet-20240229': {
131
+ pricing: { input: 0.003, output: 0.015 },
132
+ latency: { p50: 1600, p95: 3200 },
133
+ qualityScore: 92,
134
+ modelFamily: 'claude-3',
135
+ releaseDate: '2024-02-29',
136
+ contextWindow: 200000,
137
+ maxTokens: 4096,
138
+ supportsStreaming: true,
139
+ supportsVision: true,
140
+ supportsTools: true,
141
+ supportsJSON: false,
142
+ },
143
+ 'claude-3-haiku-20240307': {
144
+ pricing: { input: 0.00025, output: 0.00125 },
145
+ latency: { p50: 400, p95: 800 },
146
+ qualityScore: 78,
147
+ modelFamily: 'claude-3',
148
+ releaseDate: '2024-03-07',
149
+ contextWindow: 200000,
150
+ maxTokens: 4096,
151
+ supportsStreaming: true,
152
+ supportsVision: true,
153
+ supportsTools: true,
154
+ supportsJSON: false,
155
+ },
156
+ 'claude-3-5-haiku-20241022': {
157
+ pricing: { input: 0.001, output: 0.005 },
158
+ latency: { p50: 500, p95: 1000 },
159
+ qualityScore: 82,
160
+ modelFamily: 'claude-3',
161
+ releaseDate: '2024-10-22',
162
+ contextWindow: 200000,
163
+ maxTokens: 8192,
164
+ supportsStreaming: true,
165
+ supportsVision: false,
166
+ supportsTools: true,
167
+ supportsJSON: false,
168
+ },
169
+ // Google Gemini Models
170
+ 'gemini-1.5-pro': {
171
+ pricing: { input: 0.00125, output: 0.005 },
172
+ latency: { p50: 1400, p95: 2800 },
173
+ qualityScore: 93,
174
+ modelFamily: 'gemini-1.5',
175
+ releaseDate: '2024-02-15',
176
+ contextWindow: 1000000,
177
+ maxTokens: 8192,
178
+ supportsStreaming: true,
179
+ supportsVision: true,
180
+ supportsTools: true,
181
+ supportsJSON: true,
182
+ },
183
+ 'gemini-1.5-flash': {
184
+ pricing: { input: 0.000075, output: 0.0003 },
185
+ latency: { p50: 600, p95: 1200 },
186
+ qualityScore: 80,
187
+ modelFamily: 'gemini-1.5',
188
+ releaseDate: '2024-05-14',
189
+ contextWindow: 1000000,
190
+ maxTokens: 8192,
191
+ supportsStreaming: true,
192
+ supportsVision: true,
193
+ supportsTools: true,
194
+ supportsJSON: true,
195
+ },
196
+ 'gemini-1.5-flash-8b': {
197
+ pricing: { input: 0.0000375, output: 0.00015 },
198
+ latency: { p50: 400, p95: 800 },
199
+ qualityScore: 70,
200
+ modelFamily: 'gemini-1.5',
201
+ releaseDate: '2024-10-03',
202
+ contextWindow: 1000000,
203
+ maxTokens: 8192,
204
+ supportsStreaming: true,
205
+ supportsVision: true,
206
+ supportsTools: true,
207
+ supportsJSON: true,
208
+ },
209
+ // Mistral AI Models
210
+ 'mistral-large-latest': {
211
+ pricing: { input: 0.002, output: 0.006 },
212
+ latency: { p50: 1300, p95: 2600 },
213
+ qualityScore: 90,
214
+ modelFamily: 'mistral',
215
+ releaseDate: '2024-07-24',
216
+ contextWindow: 128000,
217
+ maxTokens: 4096,
218
+ supportsStreaming: true,
219
+ supportsVision: false,
220
+ supportsTools: true,
221
+ supportsJSON: true,
222
+ },
223
+ 'mistral-medium-latest': {
224
+ pricing: { input: 0.0027, output: 0.0081 },
225
+ latency: { p50: 1100, p95: 2200 },
226
+ qualityScore: 85,
227
+ modelFamily: 'mistral',
228
+ releaseDate: '2023-12-11',
229
+ contextWindow: 32000,
230
+ maxTokens: 4096,
231
+ supportsStreaming: true,
232
+ supportsVision: false,
233
+ supportsTools: true,
234
+ supportsJSON: true,
235
+ },
236
+ 'mistral-small-latest': {
237
+ pricing: { input: 0.001, output: 0.003 },
238
+ latency: { p50: 700, p95: 1400 },
239
+ qualityScore: 78,
240
+ modelFamily: 'mistral',
241
+ releaseDate: '2024-02-26',
242
+ contextWindow: 32000,
243
+ maxTokens: 4096,
244
+ supportsStreaming: true,
245
+ supportsVision: false,
246
+ supportsTools: true,
247
+ supportsJSON: true,
248
+ },
249
+ // DeepSeek Models
250
+ 'deepseek-chat': {
251
+ pricing: { input: 0.00014, output: 0.00028 },
252
+ latency: { p50: 900, p95: 1800 },
253
+ qualityScore: 82,
254
+ modelFamily: 'deepseek',
255
+ releaseDate: '2024-01-01',
256
+ contextWindow: 64000,
257
+ maxTokens: 4096,
258
+ supportsStreaming: true,
259
+ supportsVision: false,
260
+ supportsTools: true,
261
+ supportsJSON: true,
262
+ },
263
+ 'deepseek-coder': {
264
+ pricing: { input: 0.00014, output: 0.00028 },
265
+ latency: { p50: 900, p95: 1800 },
266
+ qualityScore: 88,
267
+ modelFamily: 'deepseek',
268
+ releaseDate: '2024-01-01',
269
+ contextWindow: 64000,
270
+ maxTokens: 4096,
271
+ supportsStreaming: true,
272
+ supportsVision: false,
273
+ supportsTools: true,
274
+ supportsJSON: true,
275
+ },
276
+ };
277
+ /**
278
+ * Get pricing information for a specific model.
279
+ *
280
+ * @param modelId - The model identifier (e.g., "gpt-4", "claude-3-opus-20240229")
281
+ * @returns Pricing data or null if not found
282
+ */
283
+ function getModelPricing(modelId) {
284
+ const data = MODEL_PRICING_DATABASE[modelId];
285
+ return data?.pricing ?? null;
286
+ }
287
+ /**
288
+ * Get extended capabilities for a specific model.
289
+ *
290
+ * @param modelId - The model identifier
291
+ * @returns Extended capabilities or null if not found
292
+ */
293
+ function getModelCapabilities(modelId) {
294
+ return MODEL_PRICING_DATABASE[modelId] ?? null;
295
+ }
296
+ /**
297
+ * Get all models with pricing data.
298
+ *
299
+ * @returns Array of model IDs with pricing information
300
+ */
301
+ function getAllPricedModels() {
302
+ return Object.keys(MODEL_PRICING_DATABASE);
303
+ }
304
+ /**
305
+ * Find models by model family.
306
+ *
307
+ * @param family - The model family (e.g., "gpt-4", "claude-3")
308
+ * @returns Array of model IDs in the family
309
+ */
310
+ function getModelsByFamily(family) {
311
+ return Object.keys(MODEL_PRICING_DATABASE).filter((modelId) => MODEL_PRICING_DATABASE[modelId]?.modelFamily === family);
312
+ }
313
+ /**
314
+ * User-defined pricing overrides.
315
+ * Allows users to specify custom pricing for models.
316
+ */
317
+ const pricingOverrides = new Map();
318
+ /**
319
+ * Set custom pricing for a model (overrides static database).
320
+ *
321
+ * @param modelId - The model identifier
322
+ * @param pricing - Custom pricing data
323
+ */
324
+ function setPricingOverride(modelId, pricing) {
325
+ pricingOverrides.set(modelId, pricing);
326
+ }
327
+ /**
328
+ * Clear pricing override for a model.
329
+ *
330
+ * @param modelId - The model identifier
331
+ */
332
+ function clearPricingOverride(modelId) {
333
+ pricingOverrides.delete(modelId);
334
+ }
335
+ /**
336
+ * Clear all pricing overrides.
337
+ */
338
+ function clearAllPricingOverrides() {
339
+ pricingOverrides.clear();
340
+ }
341
+ /**
342
+ * Get pricing with user overrides applied.
343
+ *
344
+ * @param modelId - The model identifier
345
+ * @returns Pricing data (override if set, else from database)
346
+ */
347
+ function getPricingWithOverrides(modelId) {
348
+ return pricingOverrides.get(modelId) ?? getModelPricing(modelId);
349
+ }
350
+ //# sourceMappingURL=model-pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-pricing.js","sourceRoot":"","sources":["../../src/model-pricing.ts"],"names":[],"mappings":"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"}