@just-every/ensemble 0.1.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 (127) hide show
  1. package/README.md +245 -0
  2. package/dist/cost_tracker.d.ts +2 -0
  3. package/dist/cost_tracker.d.ts.map +1 -0
  4. package/dist/cost_tracker.js +2 -0
  5. package/dist/cost_tracker.js.map +1 -0
  6. package/dist/errors.d.ts +55 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +134 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/external_models.d.ts +10 -0
  11. package/dist/external_models.d.ts.map +1 -0
  12. package/dist/external_models.js +36 -0
  13. package/dist/external_models.js.map +1 -0
  14. package/dist/index.d.ts +31 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +47 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/model_data.d.ts +63 -0
  19. package/dist/model_data.d.ts.map +1 -0
  20. package/dist/model_data.js +1070 -0
  21. package/dist/model_data.js.map +1 -0
  22. package/dist/model_providers/base_provider.d.ts +37 -0
  23. package/dist/model_providers/base_provider.d.ts.map +1 -0
  24. package/dist/model_providers/base_provider.js +146 -0
  25. package/dist/model_providers/base_provider.js.map +1 -0
  26. package/dist/model_providers/claude.d.ts +11 -0
  27. package/dist/model_providers/claude.d.ts.map +1 -0
  28. package/dist/model_providers/claude.js +788 -0
  29. package/dist/model_providers/claude.js.map +1 -0
  30. package/dist/model_providers/deepseek.d.ts +8 -0
  31. package/dist/model_providers/deepseek.d.ts.map +1 -0
  32. package/dist/model_providers/deepseek.js +136 -0
  33. package/dist/model_providers/deepseek.js.map +1 -0
  34. package/dist/model_providers/gemini.d.ts +11 -0
  35. package/dist/model_providers/gemini.d.ts.map +1 -0
  36. package/dist/model_providers/gemini.js +711 -0
  37. package/dist/model_providers/gemini.js.map +1 -0
  38. package/dist/model_providers/grok.d.ts +8 -0
  39. package/dist/model_providers/grok.d.ts.map +1 -0
  40. package/dist/model_providers/grok.js +22 -0
  41. package/dist/model_providers/grok.js.map +1 -0
  42. package/dist/model_providers/model_provider.d.ts +11 -0
  43. package/dist/model_providers/model_provider.d.ts.map +1 -0
  44. package/dist/model_providers/model_provider.js +170 -0
  45. package/dist/model_providers/model_provider.js.map +1 -0
  46. package/dist/model_providers/openai.d.ts +13 -0
  47. package/dist/model_providers/openai.d.ts.map +1 -0
  48. package/dist/model_providers/openai.js +822 -0
  49. package/dist/model_providers/openai.js.map +1 -0
  50. package/dist/model_providers/openai_chat.d.ts +14 -0
  51. package/dist/model_providers/openai_chat.d.ts.map +1 -0
  52. package/dist/model_providers/openai_chat.js +719 -0
  53. package/dist/model_providers/openai_chat.js.map +1 -0
  54. package/dist/model_providers/openrouter.d.ts +6 -0
  55. package/dist/model_providers/openrouter.d.ts.map +1 -0
  56. package/dist/model_providers/openrouter.js +18 -0
  57. package/dist/model_providers/openrouter.js.map +1 -0
  58. package/dist/model_providers/refactored_openai.d.ts +22 -0
  59. package/dist/model_providers/refactored_openai.d.ts.map +1 -0
  60. package/dist/model_providers/refactored_openai.js +310 -0
  61. package/dist/model_providers/refactored_openai.js.map +1 -0
  62. package/dist/model_providers/test_provider.d.ts +27 -0
  63. package/dist/model_providers/test_provider.d.ts.map +1 -0
  64. package/dist/model_providers/test_provider.js +185 -0
  65. package/dist/model_providers/test_provider.js.map +1 -0
  66. package/dist/tsconfig.tsbuildinfo +1 -0
  67. package/dist/types/api_types.d.ts +249 -0
  68. package/dist/types/api_types.d.ts.map +1 -0
  69. package/dist/types/api_types.js +2 -0
  70. package/dist/types/api_types.js.map +1 -0
  71. package/dist/types/extended_types.d.ts +43 -0
  72. package/dist/types/extended_types.d.ts.map +1 -0
  73. package/dist/types/extended_types.js +2 -0
  74. package/dist/types/extended_types.js.map +1 -0
  75. package/dist/types.d.ts +301 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +2 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/utils/async_queue.d.ts +14 -0
  80. package/dist/utils/async_queue.d.ts.map +1 -0
  81. package/dist/utils/async_queue.js +68 -0
  82. package/dist/utils/async_queue.js.map +1 -0
  83. package/dist/utils/cache.d.ts +60 -0
  84. package/dist/utils/cache.d.ts.map +1 -0
  85. package/dist/utils/cache.js +205 -0
  86. package/dist/utils/cache.js.map +1 -0
  87. package/dist/utils/communication.d.ts +3 -0
  88. package/dist/utils/communication.d.ts.map +1 -0
  89. package/dist/utils/communication.js +8 -0
  90. package/dist/utils/communication.js.map +1 -0
  91. package/dist/utils/cost_tracker.d.ts +26 -0
  92. package/dist/utils/cost_tracker.d.ts.map +1 -0
  93. package/dist/utils/cost_tracker.js +177 -0
  94. package/dist/utils/cost_tracker.js.map +1 -0
  95. package/dist/utils/delta_buffer.d.ts +14 -0
  96. package/dist/utils/delta_buffer.d.ts.map +1 -0
  97. package/dist/utils/delta_buffer.js +60 -0
  98. package/dist/utils/delta_buffer.js.map +1 -0
  99. package/dist/utils/image_to_text.d.ts +3 -0
  100. package/dist/utils/image_to_text.d.ts.map +1 -0
  101. package/dist/utils/image_to_text.js +81 -0
  102. package/dist/utils/image_to_text.js.map +1 -0
  103. package/dist/utils/image_utils.d.ts +18 -0
  104. package/dist/utils/image_utils.d.ts.map +1 -0
  105. package/dist/utils/image_utils.js +132 -0
  106. package/dist/utils/image_utils.js.map +1 -0
  107. package/dist/utils/llm_logger.d.ts +8 -0
  108. package/dist/utils/llm_logger.d.ts.map +1 -0
  109. package/dist/utils/llm_logger.js +24 -0
  110. package/dist/utils/llm_logger.js.map +1 -0
  111. package/dist/utils/quota_tracker.d.ts +22 -0
  112. package/dist/utils/quota_tracker.d.ts.map +1 -0
  113. package/dist/utils/quota_tracker.js +338 -0
  114. package/dist/utils/quota_tracker.js.map +1 -0
  115. package/dist/utils/stream_converter.d.ts +19 -0
  116. package/dist/utils/stream_converter.d.ts.map +1 -0
  117. package/dist/utils/stream_converter.js +172 -0
  118. package/dist/utils/stream_converter.js.map +1 -0
  119. package/dist/validation.d.ts +1789 -0
  120. package/dist/validation.d.ts.map +1 -0
  121. package/dist/validation.js +289 -0
  122. package/dist/validation.js.map +1 -0
  123. package/dist/vitest.config.d.ts +3 -0
  124. package/dist/vitest.config.d.ts.map +1 -0
  125. package/dist/vitest.config.js +34 -0
  126. package/dist/vitest.config.js.map +1 -0
  127. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,289 @@
1
+ import { z } from 'zod';
2
+ export const ToolParameterTypeSchema = z.enum([
3
+ 'string',
4
+ 'number',
5
+ 'boolean',
6
+ 'object',
7
+ 'array',
8
+ 'null'
9
+ ]);
10
+ export const ToolParameterSchema = z.lazy(() => z.object({
11
+ type: ToolParameterTypeSchema.optional(),
12
+ description: z.union([z.string(), z.function()]).optional(),
13
+ enum: z.union([
14
+ z.array(z.string()),
15
+ z.function().returns(z.promise(z.array(z.string())))
16
+ ]).optional(),
17
+ items: z.union([
18
+ ToolParameterSchema,
19
+ z.object({
20
+ type: ToolParameterTypeSchema,
21
+ enum: z.union([
22
+ z.array(z.string()),
23
+ z.function().returns(z.promise(z.array(z.string())))
24
+ ]).optional()
25
+ })
26
+ ]).optional(),
27
+ properties: z.record(z.string(), ToolParameterSchema).optional(),
28
+ required: z.array(z.string()).optional(),
29
+ optional: z.boolean().optional(),
30
+ minItems: z.number().optional(),
31
+ additionalProperties: z.boolean().optional(),
32
+ default: z.unknown().optional(),
33
+ minimum: z.number().optional(),
34
+ maximum: z.number().optional(),
35
+ minLength: z.number().optional(),
36
+ maxLength: z.number().optional(),
37
+ pattern: z.string().optional()
38
+ }).strict());
39
+ export const ToolDefinitionSchema = z.object({
40
+ type: z.literal('function'),
41
+ function: z.object({
42
+ name: z.string().regex(/^[a-zA-Z0-9_-]+$/, 'Tool name must be alphanumeric with underscores and dashes'),
43
+ description: z.string().min(1, 'Tool description is required'),
44
+ parameters: z.object({
45
+ type: z.literal('object'),
46
+ properties: z.record(z.string(), ToolParameterSchema),
47
+ required: z.array(z.string())
48
+ })
49
+ })
50
+ });
51
+ export const ResponseContentTextSchema = z.object({
52
+ type: z.literal('input_text'),
53
+ text: z.string()
54
+ });
55
+ export const ResponseContentImageSchema = z.object({
56
+ type: z.literal('input_image'),
57
+ detail: z.enum(['high', 'low', 'auto']),
58
+ file_id: z.string().optional(),
59
+ image_url: z.string().url().optional()
60
+ });
61
+ export const ResponseContentFileInputSchema = z.object({
62
+ type: z.literal('input_file'),
63
+ file_data: z.string().optional(),
64
+ file_id: z.string().optional(),
65
+ filename: z.string().optional()
66
+ });
67
+ export const ResponseContentSchema = z.union([
68
+ z.string(),
69
+ z.array(z.union([
70
+ ResponseContentTextSchema,
71
+ ResponseContentImageSchema,
72
+ ResponseContentFileInputSchema
73
+ ]))
74
+ ]);
75
+ export const ResponseInputMessageSchema = z.object({
76
+ type: z.literal('message'),
77
+ name: z.string().optional(),
78
+ content: ResponseContentSchema,
79
+ role: z.enum(['user', 'system', 'developer']),
80
+ status: z.enum(['in_progress', 'completed', 'incomplete']).optional(),
81
+ model: z.string().optional(),
82
+ timestamp: z.number().optional()
83
+ });
84
+ export const ResponseThinkingMessageSchema = z.object({
85
+ type: z.literal('thinking'),
86
+ content: ResponseContentSchema,
87
+ signature: ResponseContentSchema.optional(),
88
+ thinking_id: z.string().optional(),
89
+ role: z.literal('assistant'),
90
+ status: z.enum(['in_progress', 'completed', 'incomplete']).optional(),
91
+ model: z.string().optional(),
92
+ timestamp: z.number().optional()
93
+ });
94
+ export const ResponseOutputMessageSchema = z.object({
95
+ id: z.string().optional(),
96
+ type: z.literal('message'),
97
+ content: ResponseContentSchema,
98
+ role: z.literal('assistant'),
99
+ status: z.enum(['in_progress', 'completed', 'incomplete']),
100
+ model: z.string().optional(),
101
+ timestamp: z.number().optional()
102
+ });
103
+ export const ResponseInputFunctionCallSchema = z.object({
104
+ type: z.literal('function_call'),
105
+ call_id: z.string(),
106
+ name: z.string(),
107
+ arguments: z.string(),
108
+ id: z.string().optional(),
109
+ status: z.enum(['in_progress', 'completed', 'incomplete']).optional(),
110
+ model: z.string().optional(),
111
+ timestamp: z.number().optional()
112
+ });
113
+ export const ResponseInputFunctionCallOutputSchema = z.object({
114
+ type: z.literal('function_call_output'),
115
+ call_id: z.string(),
116
+ name: z.string().optional(),
117
+ output: z.string(),
118
+ id: z.string().optional(),
119
+ status: z.enum(['in_progress', 'completed', 'incomplete']).optional(),
120
+ model: z.string().optional(),
121
+ timestamp: z.number().optional()
122
+ });
123
+ export const ResponseInputSchema = z.array(z.union([
124
+ ResponseInputMessageSchema,
125
+ ResponseThinkingMessageSchema,
126
+ ResponseOutputMessageSchema,
127
+ ResponseInputFunctionCallSchema,
128
+ ResponseInputFunctionCallOutputSchema
129
+ ]));
130
+ export const ModelProviderIDSchema = z.enum([
131
+ 'openai',
132
+ 'anthropic',
133
+ 'google',
134
+ 'xai',
135
+ 'deepseek',
136
+ 'openrouter',
137
+ 'test'
138
+ ]);
139
+ export const ModelClassIDSchema = z.enum([
140
+ 'standard',
141
+ 'mini',
142
+ 'reasoning',
143
+ 'reasoning_mini',
144
+ 'monologue',
145
+ 'metacognition',
146
+ 'code',
147
+ 'writing',
148
+ 'summary',
149
+ 'vision',
150
+ 'vision_mini',
151
+ 'search',
152
+ 'image_generation',
153
+ 'embedding'
154
+ ]);
155
+ export const ModelSettingsSchema = z.object({
156
+ temperature: z.number().min(0).max(2).optional(),
157
+ top_p: z.number().min(0).max(1).optional(),
158
+ top_k: z.number().positive().optional(),
159
+ max_tokens: z.number().positive().optional(),
160
+ stop_sequence: z.string().optional(),
161
+ seed: z.number().optional(),
162
+ text: z.object({ format: z.string() }).optional(),
163
+ tool_choice: z.union([
164
+ z.literal('auto'),
165
+ z.literal('none'),
166
+ z.literal('required'),
167
+ z.object({
168
+ type: z.string(),
169
+ function: z.object({ name: z.string() })
170
+ })
171
+ ]).optional(),
172
+ sequential_tools: z.boolean().optional(),
173
+ json_schema: z.object({
174
+ name: z.string().regex(/^[a-zA-Z0-9_-]{1,64}$/, 'Invalid schema name'),
175
+ schema: z.record(z.unknown()),
176
+ type: z.literal('json_schema'),
177
+ description: z.string().optional(),
178
+ strict: z.boolean().nullable().optional()
179
+ }).optional(),
180
+ force_json: z.boolean().optional()
181
+ });
182
+ export const RequestOptionsSchema = z.object({
183
+ model: z.string().min(1, 'Model name is required'),
184
+ messages: ResponseInputSchema,
185
+ temperature: z.number().min(0).max(2).optional(),
186
+ max_tokens: z.number().positive().optional(),
187
+ top_p: z.number().min(0).max(1).optional(),
188
+ stream: z.boolean().optional(),
189
+ tools: z.array(ToolDefinitionSchema).optional(),
190
+ tool_choice: z.union([
191
+ z.literal('auto'),
192
+ z.literal('none'),
193
+ z.literal('required'),
194
+ z.object({
195
+ type: z.literal('function'),
196
+ function: z.object({ name: z.string() })
197
+ })
198
+ ]).optional()
199
+ });
200
+ export const validateAPIResponse = (schema, data, context) => {
201
+ try {
202
+ return schema.parse(data);
203
+ }
204
+ catch (error) {
205
+ if (error instanceof z.ZodError) {
206
+ const issues = error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ');
207
+ throw new Error(`${context} validation failed: ${issues}`);
208
+ }
209
+ throw error;
210
+ }
211
+ };
212
+ export const StreamEventTypeSchema = z.enum([
213
+ 'connected',
214
+ 'command_start',
215
+ 'command_done',
216
+ 'project_create',
217
+ 'project_update',
218
+ 'process_start',
219
+ 'process_running',
220
+ 'process_updated',
221
+ 'process_done',
222
+ 'process_failed',
223
+ 'process_waiting',
224
+ 'process_terminated',
225
+ 'agent_start',
226
+ 'agent_updated',
227
+ 'agent_done',
228
+ 'agent_status',
229
+ 'message_start',
230
+ 'message_delta',
231
+ 'message_complete',
232
+ 'talk_start',
233
+ 'talk_delta',
234
+ 'talk_complete',
235
+ 'audio_stream',
236
+ 'tool_start',
237
+ 'tool_delta',
238
+ 'tool_done',
239
+ 'file_start',
240
+ 'file_delta',
241
+ 'file_complete',
242
+ 'cost_update',
243
+ 'system_status',
244
+ 'system_update',
245
+ 'quota_update',
246
+ 'screenshot',
247
+ 'design_grid',
248
+ 'console',
249
+ 'error',
250
+ 'tool_wait_start',
251
+ 'tool_waiting',
252
+ 'tool_wait_complete',
253
+ 'task_wait_start',
254
+ 'task_waiting',
255
+ 'task_wait_complete',
256
+ 'git_pull_request',
257
+ 'stream_end'
258
+ ]);
259
+ export const ModelUsageSchema = z.object({
260
+ model: z.string(),
261
+ cost: z.number().optional(),
262
+ input_tokens: z.number().nonnegative().optional(),
263
+ output_tokens: z.number().nonnegative().optional(),
264
+ cached_tokens: z.number().nonnegative().optional(),
265
+ image_count: z.number().nonnegative().optional(),
266
+ metadata: z.record(z.unknown()).optional(),
267
+ timestamp: z.date().optional(),
268
+ isFreeTierUsage: z.boolean().optional()
269
+ });
270
+ export const validateModel = (model) => {
271
+ return z.string().min(1, 'Model name cannot be empty').parse(model);
272
+ };
273
+ export const validateMessages = (messages) => {
274
+ return ResponseInputSchema.parse(messages);
275
+ };
276
+ export const validateTools = (tools) => {
277
+ return z.array(ToolDefinitionSchema).parse(tools);
278
+ };
279
+ export const validateTemperature = (temperature) => {
280
+ if (temperature === undefined)
281
+ return undefined;
282
+ return z.number().min(0).max(2).parse(temperature);
283
+ };
284
+ export const validateMaxTokens = (maxTokens) => {
285
+ if (maxTokens === undefined)
286
+ return undefined;
287
+ return z.number().positive().int().parse(maxTokens);
288
+ };
289
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vitest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":";AAGA,wBA8BG"}
@@ -0,0 +1,34 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import path from 'path';
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true,
6
+ environment: 'node',
7
+ include: ['test/**/*.test.ts'],
8
+ env: {
9
+ OPENAI_API_KEY: 'test-api-key',
10
+ ANTHROPIC_API_KEY: 'test-api-key',
11
+ GOOGLE_API_KEY: 'test-api-key',
12
+ DEEPSEEK_API_KEY: 'test-api-key',
13
+ XAI_API_KEY: 'test-api-key',
14
+ OPENROUTER_API_KEY: 'test-api-key',
15
+ },
16
+ coverage: {
17
+ provider: 'v8',
18
+ reporter: ['text', 'json', 'html'],
19
+ exclude: [
20
+ '**/node_modules/**',
21
+ '**/dist/**',
22
+ '**/*.d.ts',
23
+ '**/*.config.ts',
24
+ '**/test/**',
25
+ ],
26
+ },
27
+ },
28
+ resolve: {
29
+ alias: {
30
+ '@just-every/ensemble': path.resolve(__dirname, './dist'),
31
+ },
32
+ },
33
+ });
34
+ //# sourceMappingURL=vitest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,eAAe,YAAY,CAAC;IACxB,IAAI,EAAE;QACF,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,GAAG,EAAE;YACD,cAAc,EAAE,cAAc;YAC9B,iBAAiB,EAAE,cAAc;YACjC,cAAc,EAAE,cAAc;YAC9B,gBAAgB,EAAE,cAAc;YAChC,WAAW,EAAE,cAAc;YAC3B,kBAAkB,EAAE,cAAc;SACrC;QACD,QAAQ,EAAE;YACN,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAClC,OAAO,EAAE;gBACL,oBAAoB;gBACpB,YAAY;gBACZ,WAAW;gBACX,gBAAgB;gBAChB,YAAY;aACf;SACJ;KACJ;IACD,OAAO,EAAE;QACL,KAAK,EAAE;YACH,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC5D;KACJ;CACJ,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "@just-every/ensemble",
3
+ "version": "0.1.0",
4
+ "description": "LLM provider abstraction layer with unified streaming interface",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "package.json",
11
+ "README.md"
12
+ ],
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/just-every/ensemble.git"
16
+ },
17
+ "keywords": [
18
+ "llm",
19
+ "ai",
20
+ "openai",
21
+ "anthropic",
22
+ "gemini",
23
+ "deepseek",
24
+ "grok",
25
+ "streaming",
26
+ "model-providers"
27
+ ],
28
+ "author": "just-every",
29
+ "license": "MIT",
30
+ "bugs": {
31
+ "url": "https://github.com/just-every/ensemble/issues"
32
+ },
33
+ "homepage": "https://github.com/just-every/ensemble#readme",
34
+ "scripts": {
35
+ "build": "tsc -p .",
36
+ "clean": "rimraf dist",
37
+ "prepare": "npm run build",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest",
40
+ "test:coverage": "vitest run --coverage",
41
+ "release": "./scripts/release.sh",
42
+ "release:patch": "./scripts/release.sh patch",
43
+ "release:minor": "./scripts/release.sh minor",
44
+ "release:major": "./scripts/release.sh major"
45
+ },
46
+ "exports": {
47
+ ".": {
48
+ "import": "./dist/index.js",
49
+ "types": "./dist/index.d.ts"
50
+ },
51
+ "./types": {
52
+ "import": "./dist/types.js",
53
+ "types": "./dist/types.d.ts"
54
+ },
55
+ "./cost_tracker": {
56
+ "import": "./dist/cost_tracker.js",
57
+ "types": "./dist/cost_tracker.d.ts"
58
+ },
59
+ "./model_providers/*": {
60
+ "import": "./dist/model_providers/*.js",
61
+ "types": "./dist/model_providers/*.d.ts"
62
+ },
63
+ "./utils/*": {
64
+ "import": "./dist/utils/*.js",
65
+ "types": "./dist/utils/*.d.ts"
66
+ }
67
+ },
68
+ "dependencies": {
69
+ "@anthropic-ai/sdk": "^0.51.0",
70
+ "@google/genai": "^0.12.0",
71
+ "dotenv": "^16.5.0",
72
+ "openai": "^4.100.0",
73
+ "sharp": "^0.32.0",
74
+ "zod": "^3.25.42"
75
+ },
76
+ "devDependencies": {
77
+ "@types/node": "^22.14.0",
78
+ "@vitest/coverage-v8": "^1.0.0",
79
+ "rimraf": "^5.0.0",
80
+ "typescript": "^5.8.2",
81
+ "vitest": "^1.0.0"
82
+ },
83
+ "publishConfig": {
84
+ "access": "public"
85
+ }
86
+ }