@sylphai/adal-cli-linux-x64 0.1.3-beta.9 → 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.
- package/adal-cli.js +862 -781
- package/backend/adal-backend/_internal/base_library.zip +0 -0
- package/backend/adal-backend/_internal/deep_research/models/model_pricing.json +368 -0
- package/backend/adal-backend/_internal/websockets/speedups.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/LICENSE +24 -0
- package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/METADATA +179 -0
- package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/RECORD +59 -0
- package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/WHEEL +8 -0
- package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/entry_points.txt +2 -0
- package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/top_level.txt +1 -0
- package/backend/adal-backend/adal-backend +0 -0
- package/package.json +1 -1
- package/backend/adal-backend/_internal/numpy/_core/_multiarray_tests.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/_core/_multiarray_umath.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/fft/_pocketfft_umath.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/linalg/_umath_linalg.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_bounded_integers.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_common.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_generator.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_mt19937.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_pcg64.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_philox.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/_sfc64.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/bit_generator.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy/random/mtrand.cpython-312-x86_64-linux-gnu.so +0 -0
- package/backend/adal-backend/_internal/numpy-2.3.2.dist-info/LICENSE.txt +0 -971
- package/backend/adal-backend/_internal/numpy-2.3.2.dist-info/METADATA +0 -1093
- package/backend/adal-backend/_internal/numpy-2.3.2.dist-info/RECORD +0 -904
- package/backend/adal-backend/_internal/numpy-2.3.2.dist-info/WHEEL +0 -6
- package/backend/adal-backend/_internal/numpy-2.3.2.dist-info/entry_points.txt +0 -13
- package/backend/adal-backend/_internal/numpy.libs/libgfortran-040039e1-0352e75f.so.5.0.0 +0 -0
- package/backend/adal-backend/_internal/numpy.libs/libquadmath-96973f99-934c22de.so.0.0.0 +0 -0
- package/backend/adal-backend/_internal/numpy.libs/libscipy_openblas64_-8fb3d286.so +0 -0
- /package/backend/adal-backend/_internal/{numpy-2.3.2.dist-info → websockets-15.0.1.dist-info}/INSTALLER +0 -0
|
Binary file
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"last_updated": "2025-10-13",
|
|
5
|
+
"description": "Centralized API model pricing configuration for deep_research",
|
|
6
|
+
"sync_note": "⚠️ IMPORTANT: This file must be kept in sync with backend/src/adal_backend/services/model_pricing.json. If you update pricing here, update it there too!",
|
|
7
|
+
"sources": {
|
|
8
|
+
"anthropic": "https://www.claude.com/pricing",
|
|
9
|
+
"openai": "https://openai.com/api/pricing/",
|
|
10
|
+
"google": "https://ai.google.dev/pricing",
|
|
11
|
+
"deepseek": "https://www.deepseek.com/pricing",
|
|
12
|
+
"prompt_caching_anthropic": "https://www.anthropic.com/news/prompt-caching"
|
|
13
|
+
},
|
|
14
|
+
"notes": {
|
|
15
|
+
"pricing_unit": "USD per million tokens (MTok)",
|
|
16
|
+
"local_models": "All Ollama models are FREE (no API costs)",
|
|
17
|
+
"cached_discount": "Anthropic: 90% off cached input, OpenAI GPT-5: 90% off, GPT-4o: 50% off",
|
|
18
|
+
"reasoning_tokens": "GPT-5 reasoning tokens billed at input token rate",
|
|
19
|
+
"minimum_cacheable": "1,024 tokens for Anthropic and OpenAI",
|
|
20
|
+
"cache_ttl": "5 minutes for Anthropic (OpenAI not publicly documented)",
|
|
21
|
+
"openai_models": "Only GPT-5 and GPT-4o are officially supported. Other models have been removed."
|
|
22
|
+
},
|
|
23
|
+
"providers": {
|
|
24
|
+
"anthropic": {
|
|
25
|
+
"models": {
|
|
26
|
+
"claude-opus-4-1": {
|
|
27
|
+
"display_name": "Claude Opus 4.1",
|
|
28
|
+
"input_price_per_mtok": 15.0,
|
|
29
|
+
"cached_input_price_per_mtok": 1.5,
|
|
30
|
+
"cache_write_price_per_mtok": 18.75,
|
|
31
|
+
"output_price_per_mtok": 75.0,
|
|
32
|
+
"cache_discount_percent": 90,
|
|
33
|
+
"cache_write_markup_percent": 25,
|
|
34
|
+
"supports_caching": true,
|
|
35
|
+
"supports_thinking": true,
|
|
36
|
+
"model_type": "flagship",
|
|
37
|
+
"notes": "Latest flagship, thinking model"
|
|
38
|
+
},
|
|
39
|
+
"claude-opus-4": {
|
|
40
|
+
"display_name": "Claude Opus 4",
|
|
41
|
+
"input_price_per_mtok": 15.0,
|
|
42
|
+
"cached_input_price_per_mtok": 1.5,
|
|
43
|
+
"cache_write_price_per_mtok": 18.75,
|
|
44
|
+
"output_price_per_mtok": 75.0,
|
|
45
|
+
"cache_discount_percent": 90,
|
|
46
|
+
"cache_write_markup_percent": 25,
|
|
47
|
+
"supports_caching": true,
|
|
48
|
+
"supports_thinking": true,
|
|
49
|
+
"model_type": "flagship",
|
|
50
|
+
"notes": "Thinking model (extended reasoning)"
|
|
51
|
+
},
|
|
52
|
+
"claude-sonnet-4-5": {
|
|
53
|
+
"display_name": "Claude Sonnet 4.5",
|
|
54
|
+
"input_price_per_mtok": 3.0,
|
|
55
|
+
"cached_input_price_per_mtok": 0.3,
|
|
56
|
+
"cache_write_price_per_mtok": 3.75,
|
|
57
|
+
"output_price_per_mtok": 15.0,
|
|
58
|
+
"cache_discount_percent": 90,
|
|
59
|
+
"cache_write_markup_percent": 25,
|
|
60
|
+
"supports_caching": true,
|
|
61
|
+
"supports_thinking": true,
|
|
62
|
+
"model_type": "mid-tier",
|
|
63
|
+
"notes": "State-of-the-art, thinking model, best value"
|
|
64
|
+
},
|
|
65
|
+
"claude-sonnet-4-5-1m": {
|
|
66
|
+
"display_name": "Claude Sonnet 4.5 (1M)",
|
|
67
|
+
"input_price_per_mtok": 6.0,
|
|
68
|
+
"cached_input_price_per_mtok": 0.6,
|
|
69
|
+
"cache_write_price_per_mtok": 7.5,
|
|
70
|
+
"output_price_per_mtok": 22.5,
|
|
71
|
+
"cache_discount_percent": 90,
|
|
72
|
+
"cache_write_markup_percent": 25,
|
|
73
|
+
"supports_caching": true,
|
|
74
|
+
"supports_thinking": true,
|
|
75
|
+
"model_type": "extended-context",
|
|
76
|
+
"notes": "1M context window variant, 2x base pricing"
|
|
77
|
+
},
|
|
78
|
+
"claude-sonnet-4": {
|
|
79
|
+
"display_name": "Claude Sonnet 4",
|
|
80
|
+
"input_price_per_mtok": 3.0,
|
|
81
|
+
"cached_input_price_per_mtok": 0.3,
|
|
82
|
+
"cache_write_price_per_mtok": 3.75,
|
|
83
|
+
"output_price_per_mtok": 15.0,
|
|
84
|
+
"cache_discount_percent": 90,
|
|
85
|
+
"cache_write_markup_percent": 25,
|
|
86
|
+
"supports_caching": true,
|
|
87
|
+
"supports_thinking": true,
|
|
88
|
+
"model_type": "mid-tier",
|
|
89
|
+
"notes": "Thinking model"
|
|
90
|
+
},
|
|
91
|
+
"claude-3-7-sonnet": {
|
|
92
|
+
"display_name": "Claude 3.7 Sonnet",
|
|
93
|
+
"input_price_per_mtok": 3.0,
|
|
94
|
+
"cached_input_price_per_mtok": 0.3,
|
|
95
|
+
"cache_write_price_per_mtok": 3.75,
|
|
96
|
+
"output_price_per_mtok": 15.0,
|
|
97
|
+
"cache_discount_percent": 90,
|
|
98
|
+
"cache_write_markup_percent": 25,
|
|
99
|
+
"supports_caching": true,
|
|
100
|
+
"supports_thinking": true,
|
|
101
|
+
"model_type": "mid-tier",
|
|
102
|
+
"notes": "Thinking model"
|
|
103
|
+
},
|
|
104
|
+
"claude-3-5-sonnet": {
|
|
105
|
+
"display_name": "Claude 3.5 Sonnet",
|
|
106
|
+
"input_price_per_mtok": 3.0,
|
|
107
|
+
"cached_input_price_per_mtok": 0.3,
|
|
108
|
+
"cache_write_price_per_mtok": 3.75,
|
|
109
|
+
"output_price_per_mtok": 15.0,
|
|
110
|
+
"cache_discount_percent": 90,
|
|
111
|
+
"cache_write_markup_percent": 25,
|
|
112
|
+
"supports_caching": true,
|
|
113
|
+
"supports_thinking": false,
|
|
114
|
+
"model_type": "mid-tier",
|
|
115
|
+
"notes": "Standard model (no thinking)"
|
|
116
|
+
},
|
|
117
|
+
"claude-haiku-4-5": {
|
|
118
|
+
"display_name": "Claude Haiku 4.5",
|
|
119
|
+
"input_price_per_mtok": 1.0,
|
|
120
|
+
"cached_input_price_per_mtok": 0.1,
|
|
121
|
+
"cache_write_price_per_mtok": 1.25,
|
|
122
|
+
"output_price_per_mtok": 5.0,
|
|
123
|
+
"cache_discount_percent": 90,
|
|
124
|
+
"cache_write_markup_percent": 25,
|
|
125
|
+
"supports_caching": true,
|
|
126
|
+
"supports_thinking": true,
|
|
127
|
+
"model_type": "budget",
|
|
128
|
+
"notes": "Claude Haiku 4.5 released Oct 2025, $1/$5 per MTok with prompt caching support"
|
|
129
|
+
},
|
|
130
|
+
"claude-3-haiku": {
|
|
131
|
+
"display_name": "Claude 3 Haiku",
|
|
132
|
+
"input_price_per_mtok": 0.8,
|
|
133
|
+
"cached_input_price_per_mtok": 0.08,
|
|
134
|
+
"cache_write_price_per_mtok": 1.0,
|
|
135
|
+
"output_price_per_mtok": 4.0,
|
|
136
|
+
"cache_discount_percent": 90,
|
|
137
|
+
"cache_write_markup_percent": 25,
|
|
138
|
+
"supports_caching": true,
|
|
139
|
+
"supports_thinking": false,
|
|
140
|
+
"model_type": "budget",
|
|
141
|
+
"notes": "Fastest, lightweight model"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"cache_write_markup": 0.25,
|
|
145
|
+
"cache_ttl_minutes": 5,
|
|
146
|
+
"minimum_cacheable_tokens": 1024
|
|
147
|
+
},
|
|
148
|
+
"openai": {
|
|
149
|
+
"models": {
|
|
150
|
+
"gpt-5": {
|
|
151
|
+
"display_name": "GPT-5",
|
|
152
|
+
"input_price_per_mtok": 1.25,
|
|
153
|
+
"cached_input_price_per_mtok": 0.125,
|
|
154
|
+
"output_price_per_mtok": 10.0,
|
|
155
|
+
"reasoning_price_per_mtok": 1.25,
|
|
156
|
+
"cache_discount_percent": 90,
|
|
157
|
+
"supports_caching": true,
|
|
158
|
+
"supports_thinking": true,
|
|
159
|
+
"model_type": "flagship",
|
|
160
|
+
"notes": "Thinking model, reasoning effort configurable, cheapest flagship"
|
|
161
|
+
},
|
|
162
|
+
"gpt-5-codex": {
|
|
163
|
+
"display_name": "GPT-5-Codex",
|
|
164
|
+
"input_price_per_mtok": 1.25,
|
|
165
|
+
"cached_input_price_per_mtok": 0.125,
|
|
166
|
+
"output_price_per_mtok": 10.0,
|
|
167
|
+
"reasoning_price_per_mtok": 1.25,
|
|
168
|
+
"cache_discount_percent": 90,
|
|
169
|
+
"supports_caching": true,
|
|
170
|
+
"supports_thinking": true,
|
|
171
|
+
"model_type": "specialized",
|
|
172
|
+
"notes": "Coding-specialized variant of GPT-5, same pricing"
|
|
173
|
+
},
|
|
174
|
+
"gpt-5.1": {
|
|
175
|
+
"display_name": "GPT-5.1",
|
|
176
|
+
"input_price_per_mtok": 1.25,
|
|
177
|
+
"cached_input_price_per_mtok": 0.125,
|
|
178
|
+
"output_price_per_mtok": 10.0,
|
|
179
|
+
"reasoning_price_per_mtok": 1.25,
|
|
180
|
+
"cache_discount_percent": 90,
|
|
181
|
+
"supports_caching": true,
|
|
182
|
+
"supports_thinking": true,
|
|
183
|
+
"model_type": "flagship",
|
|
184
|
+
"notes": "Adaptive reasoning, 196K context, 24h cache TTL, improved over GPT-5"
|
|
185
|
+
},
|
|
186
|
+
"gpt-4.1": {
|
|
187
|
+
"display_name": "GPT-4.1",
|
|
188
|
+
"input_price_per_mtok": 2.0,
|
|
189
|
+
"cached_input_price_per_mtok": 0.5,
|
|
190
|
+
"output_price_per_mtok": 8.0,
|
|
191
|
+
"cache_discount_percent": 75,
|
|
192
|
+
"supports_caching": true,
|
|
193
|
+
"supports_thinking": false,
|
|
194
|
+
"model_type": "flagship",
|
|
195
|
+
"notes": "1M context window, 75% cache discount, optimized for coding"
|
|
196
|
+
},
|
|
197
|
+
"gpt-4o": {
|
|
198
|
+
"display_name": "GPT-4o",
|
|
199
|
+
"input_price_per_mtok": 2.5,
|
|
200
|
+
"cached_input_price_per_mtok": 1.25,
|
|
201
|
+
"output_price_per_mtok": 10.0,
|
|
202
|
+
"cache_discount_percent": 50,
|
|
203
|
+
"supports_caching": true,
|
|
204
|
+
"supports_thinking": false,
|
|
205
|
+
"model_type": "flagship",
|
|
206
|
+
"notes": "Standard model, no extended reasoning"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"minimum_cacheable_tokens": 1024
|
|
210
|
+
},
|
|
211
|
+
"google": {
|
|
212
|
+
"models": {
|
|
213
|
+
"gemini-3-pro-preview": {
|
|
214
|
+
"display_name": "Gemini 3 Pro (Preview)",
|
|
215
|
+
"input_price_per_mtok": 2.0,
|
|
216
|
+
"cached_input_price_per_mtok": 0.5,
|
|
217
|
+
"output_price_per_mtok": 12.0,
|
|
218
|
+
"cache_discount_percent": 75,
|
|
219
|
+
"supports_caching": true,
|
|
220
|
+
"supports_thinking": true,
|
|
221
|
+
"notes": "Latest flagship model (Nov 2025), 1M context window, state-of-the-art reasoning. Best model in the world for multimodal understanding"
|
|
222
|
+
},
|
|
223
|
+
"gemini-2.5-pro": {
|
|
224
|
+
"display_name": "Gemini 2.5 Pro",
|
|
225
|
+
"input_price_per_mtok": 1.25,
|
|
226
|
+
"cached_input_price_per_mtok": 0.3125,
|
|
227
|
+
"output_price_per_mtok": 10.0,
|
|
228
|
+
"cache_discount_percent": 75,
|
|
229
|
+
"supports_caching": true,
|
|
230
|
+
"supports_thinking": true,
|
|
231
|
+
"notes": "Context <200K: $1.25 input, $10 output; >200K: $2.50 input, $15 output. Using base rate for simplicity. Cached rate estimated based on 75% discount"
|
|
232
|
+
},
|
|
233
|
+
"gemini-2.5-flash": {
|
|
234
|
+
"display_name": "Gemini 2.5 Flash",
|
|
235
|
+
"input_price_per_mtok": 0.30,
|
|
236
|
+
"cached_input_price_per_mtok": 0.075,
|
|
237
|
+
"output_price_per_mtok": 2.50,
|
|
238
|
+
"cache_discount_percent": 75,
|
|
239
|
+
"batch_discount_percent": 50,
|
|
240
|
+
"supports_caching": true,
|
|
241
|
+
"supports_thinking": true,
|
|
242
|
+
"notes": "Budget-friendly, 1M context, thinking mode, batch: $0.05 input/$0.20 output; cached rate estimated based on 75% discount"
|
|
243
|
+
},
|
|
244
|
+
"gemini-2.0-flash-exp": {
|
|
245
|
+
"display_name": "Gemini 2.0 Flash (Experimental)",
|
|
246
|
+
"input_price_per_mtok": 0.0,
|
|
247
|
+
"output_price_per_mtok": 0.0,
|
|
248
|
+
"cached_input_price_per_mtok": 0.0,
|
|
249
|
+
"supports_caching": false,
|
|
250
|
+
"supports_thinking": false,
|
|
251
|
+
"model_type": "experimental",
|
|
252
|
+
"notes": "Free experimental model"
|
|
253
|
+
},
|
|
254
|
+
"gemini-1.5-pro": {
|
|
255
|
+
"display_name": "Gemini 1.5 Pro",
|
|
256
|
+
"input_price_per_mtok": 1.25,
|
|
257
|
+
"cached_input_price_per_mtok": 0.3125,
|
|
258
|
+
"output_price_per_mtok": 5.0,
|
|
259
|
+
"cache_discount_percent": 75,
|
|
260
|
+
"supports_caching": true,
|
|
261
|
+
"supports_thinking": false,
|
|
262
|
+
"model_type": "flagship"
|
|
263
|
+
},
|
|
264
|
+
"gemini-1.5-flash": {
|
|
265
|
+
"display_name": "Gemini 1.5 Flash",
|
|
266
|
+
"input_price_per_mtok": 0.075,
|
|
267
|
+
"cached_input_price_per_mtok": 0.01875,
|
|
268
|
+
"output_price_per_mtok": 0.3,
|
|
269
|
+
"cache_discount_percent": 75,
|
|
270
|
+
"supports_caching": true,
|
|
271
|
+
"supports_thinking": false,
|
|
272
|
+
"model_type": "mid-tier"
|
|
273
|
+
},
|
|
274
|
+
"gemini-1.5-flash-8b": {
|
|
275
|
+
"display_name": "Gemini 1.5 Flash 8B",
|
|
276
|
+
"input_price_per_mtok": 0.0375,
|
|
277
|
+
"cached_input_price_per_mtok": 0.009375,
|
|
278
|
+
"output_price_per_mtok": 0.15,
|
|
279
|
+
"cache_discount_percent": 75,
|
|
280
|
+
"supports_caching": true,
|
|
281
|
+
"supports_thinking": false,
|
|
282
|
+
"model_type": "budget"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"deepseek": {
|
|
287
|
+
"models": {
|
|
288
|
+
"deepseek-chat": {
|
|
289
|
+
"display_name": "DeepSeek Chat",
|
|
290
|
+
"input_price_per_mtok": 0.27,
|
|
291
|
+
"cached_input_price_per_mtok": 0.014,
|
|
292
|
+
"output_price_per_mtok": 1.1,
|
|
293
|
+
"cache_discount_percent": 95,
|
|
294
|
+
"supports_caching": true,
|
|
295
|
+
"supports_thinking": false,
|
|
296
|
+
"model_type": "mid-tier"
|
|
297
|
+
},
|
|
298
|
+
"deepseek-reasoner": {
|
|
299
|
+
"display_name": "DeepSeek Reasoner",
|
|
300
|
+
"input_price_per_mtok": 0.55,
|
|
301
|
+
"cached_input_price_per_mtok": 0.014,
|
|
302
|
+
"output_price_per_mtok": 2.19,
|
|
303
|
+
"cache_discount_percent": 97,
|
|
304
|
+
"supports_caching": true,
|
|
305
|
+
"supports_thinking": true,
|
|
306
|
+
"model_type": "thinking"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"ollama": {
|
|
311
|
+
"models": {
|
|
312
|
+
"gpt-oss-20b": {
|
|
313
|
+
"display_name": "GPT-OSS 20B",
|
|
314
|
+
"input_price_per_mtok": 0.0,
|
|
315
|
+
"output_price_per_mtok": 0.0,
|
|
316
|
+
"supports_caching": false,
|
|
317
|
+
"supports_thinking": false,
|
|
318
|
+
"model_type": "local",
|
|
319
|
+
"notes": "FREE - Local model, no API costs"
|
|
320
|
+
},
|
|
321
|
+
"qwen3-coder-30b": {
|
|
322
|
+
"display_name": "Qwen3 Coder 30B",
|
|
323
|
+
"input_price_per_mtok": 0.0,
|
|
324
|
+
"output_price_per_mtok": 0.0,
|
|
325
|
+
"supports_caching": false,
|
|
326
|
+
"supports_thinking": false,
|
|
327
|
+
"model_type": "local",
|
|
328
|
+
"notes": "FREE - Local model, no API costs"
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
"notes": "All Ollama models are FREE. Skip credit deduction, only save usage with cost=$0, is_local=true"
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"cost_calculation_examples": {
|
|
335
|
+
"claude_sonnet_4_5_with_caching": {
|
|
336
|
+
"description": "100K context (cached) + 2K new input + 5K output",
|
|
337
|
+
"first_call_cache_miss": {
|
|
338
|
+
"input_tokens": 102000,
|
|
339
|
+
"input_cost": 0.306,
|
|
340
|
+
"cache_write_tokens": 100000,
|
|
341
|
+
"cache_write_cost": 0.075,
|
|
342
|
+
"output_tokens": 5000,
|
|
343
|
+
"output_cost": 0.075,
|
|
344
|
+
"total_cost": 0.456
|
|
345
|
+
},
|
|
346
|
+
"subsequent_call_cache_hit": {
|
|
347
|
+
"cached_tokens": 100000,
|
|
348
|
+
"cached_cost": 0.03,
|
|
349
|
+
"new_input_tokens": 2000,
|
|
350
|
+
"new_input_cost": 0.006,
|
|
351
|
+
"output_tokens": 5000,
|
|
352
|
+
"output_cost": 0.075,
|
|
353
|
+
"total_cost": 0.111,
|
|
354
|
+
"savings_percent": 76
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"gpt5_with_reasoning": {
|
|
358
|
+
"description": "50K input + 10K reasoning tokens (medium effort) + 3K output",
|
|
359
|
+
"input_tokens": 50000,
|
|
360
|
+
"input_cost": 0.0625,
|
|
361
|
+
"reasoning_tokens": 10000,
|
|
362
|
+
"reasoning_cost": 0.0125,
|
|
363
|
+
"output_tokens": 3000,
|
|
364
|
+
"output_cost": 0.03,
|
|
365
|
+
"total_cost": 0.105
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Copyright (c) Aymeric Augustin and contributors
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions are met:
|
|
5
|
+
|
|
6
|
+
* Redistributions of source code must retain the above copyright notice,
|
|
7
|
+
this list of conditions and the following disclaimer.
|
|
8
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
9
|
+
this list of conditions and the following disclaimer in the documentation
|
|
10
|
+
and/or other materials provided with the distribution.
|
|
11
|
+
* Neither the name of the copyright holder nor the names of its contributors
|
|
12
|
+
may be used to endorse or promote products derived from this software
|
|
13
|
+
without specific prior written permission.
|
|
14
|
+
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
16
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
17
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
19
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
20
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
21
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
22
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
23
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
24
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: websockets
|
|
3
|
+
Version: 15.0.1
|
|
4
|
+
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
|
|
5
|
+
Author-email: Aymeric Augustin <aymeric.augustin@m4x.org>
|
|
6
|
+
License: BSD-3-Clause
|
|
7
|
+
Project-URL: Homepage, https://github.com/python-websockets/websockets
|
|
8
|
+
Project-URL: Changelog, https://websockets.readthedocs.io/en/stable/project/changelog.html
|
|
9
|
+
Project-URL: Documentation, https://websockets.readthedocs.io/
|
|
10
|
+
Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-websockets?utm_source=pypi-websockets&utm_medium=referral&utm_campaign=readme
|
|
11
|
+
Project-URL: Tracker, https://github.com/python-websockets/websockets/issues
|
|
12
|
+
Keywords: WebSocket
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Requires-Python: >=3.9
|
|
26
|
+
Description-Content-Type: text/x-rst
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Dynamic: description
|
|
29
|
+
Dynamic: description-content-type
|
|
30
|
+
|
|
31
|
+
.. image:: logo/horizontal.svg
|
|
32
|
+
:width: 480px
|
|
33
|
+
:alt: websockets
|
|
34
|
+
|
|
35
|
+
|licence| |version| |pyversions| |tests| |docs| |openssf|
|
|
36
|
+
|
|
37
|
+
.. |licence| image:: https://img.shields.io/pypi/l/websockets.svg
|
|
38
|
+
:target: https://pypi.python.org/pypi/websockets
|
|
39
|
+
|
|
40
|
+
.. |version| image:: https://img.shields.io/pypi/v/websockets.svg
|
|
41
|
+
:target: https://pypi.python.org/pypi/websockets
|
|
42
|
+
|
|
43
|
+
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/websockets.svg
|
|
44
|
+
:target: https://pypi.python.org/pypi/websockets
|
|
45
|
+
|
|
46
|
+
.. |tests| image:: https://img.shields.io/github/checks-status/python-websockets/websockets/main?label=tests
|
|
47
|
+
:target: https://github.com/python-websockets/websockets/actions/workflows/tests.yml
|
|
48
|
+
|
|
49
|
+
.. |docs| image:: https://img.shields.io/readthedocs/websockets.svg
|
|
50
|
+
:target: https://websockets.readthedocs.io/
|
|
51
|
+
|
|
52
|
+
.. |openssf| image:: https://bestpractices.coreinfrastructure.org/projects/6475/badge
|
|
53
|
+
:target: https://bestpractices.coreinfrastructure.org/projects/6475
|
|
54
|
+
|
|
55
|
+
What is ``websockets``?
|
|
56
|
+
-----------------------
|
|
57
|
+
|
|
58
|
+
websockets is a library for building WebSocket_ servers and clients in Python
|
|
59
|
+
with a focus on correctness, simplicity, robustness, and performance.
|
|
60
|
+
|
|
61
|
+
.. _WebSocket: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
|
|
62
|
+
|
|
63
|
+
Built on top of ``asyncio``, Python's standard asynchronous I/O framework, the
|
|
64
|
+
default implementation provides an elegant coroutine-based API.
|
|
65
|
+
|
|
66
|
+
An implementation on top of ``threading`` and a Sans-I/O implementation are also
|
|
67
|
+
available.
|
|
68
|
+
|
|
69
|
+
`Documentation is available on Read the Docs. <https://websockets.readthedocs.io/>`_
|
|
70
|
+
|
|
71
|
+
.. copy-pasted because GitHub doesn't support the include directive
|
|
72
|
+
|
|
73
|
+
Here's an echo server with the ``asyncio`` API:
|
|
74
|
+
|
|
75
|
+
.. code:: python
|
|
76
|
+
|
|
77
|
+
#!/usr/bin/env python
|
|
78
|
+
|
|
79
|
+
import asyncio
|
|
80
|
+
from websockets.asyncio.server import serve
|
|
81
|
+
|
|
82
|
+
async def echo(websocket):
|
|
83
|
+
async for message in websocket:
|
|
84
|
+
await websocket.send(message)
|
|
85
|
+
|
|
86
|
+
async def main():
|
|
87
|
+
async with serve(echo, "localhost", 8765) as server:
|
|
88
|
+
await server.serve_forever()
|
|
89
|
+
|
|
90
|
+
asyncio.run(main())
|
|
91
|
+
|
|
92
|
+
Here's how a client sends and receives messages with the ``threading`` API:
|
|
93
|
+
|
|
94
|
+
.. code:: python
|
|
95
|
+
|
|
96
|
+
#!/usr/bin/env python
|
|
97
|
+
|
|
98
|
+
from websockets.sync.client import connect
|
|
99
|
+
|
|
100
|
+
def hello():
|
|
101
|
+
with connect("ws://localhost:8765") as websocket:
|
|
102
|
+
websocket.send("Hello world!")
|
|
103
|
+
message = websocket.recv()
|
|
104
|
+
print(f"Received: {message}")
|
|
105
|
+
|
|
106
|
+
hello()
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
Does that look good?
|
|
110
|
+
|
|
111
|
+
`Get started with the tutorial! <https://websockets.readthedocs.io/en/stable/intro/index.html>`_
|
|
112
|
+
|
|
113
|
+
Why should I use ``websockets``?
|
|
114
|
+
--------------------------------
|
|
115
|
+
|
|
116
|
+
The development of ``websockets`` is shaped by four principles:
|
|
117
|
+
|
|
118
|
+
1. **Correctness**: ``websockets`` is heavily tested for compliance with
|
|
119
|
+
:rfc:`6455`. Continuous integration fails under 100% branch coverage.
|
|
120
|
+
|
|
121
|
+
2. **Simplicity**: all you need to understand is ``msg = await ws.recv()`` and
|
|
122
|
+
``await ws.send(msg)``. ``websockets`` takes care of managing connections
|
|
123
|
+
so you can focus on your application.
|
|
124
|
+
|
|
125
|
+
3. **Robustness**: ``websockets`` is built for production. For example, it was
|
|
126
|
+
the only library to `handle backpressure correctly`_ before the issue
|
|
127
|
+
became widely known in the Python community.
|
|
128
|
+
|
|
129
|
+
4. **Performance**: memory usage is optimized and configurable. A C extension
|
|
130
|
+
accelerates expensive operations. It's pre-compiled for Linux, macOS and
|
|
131
|
+
Windows and packaged in the wheel format for each system and Python version.
|
|
132
|
+
|
|
133
|
+
Documentation is a first class concern in the project. Head over to `Read the
|
|
134
|
+
Docs`_ and see for yourself.
|
|
135
|
+
|
|
136
|
+
.. _Read the Docs: https://websockets.readthedocs.io/
|
|
137
|
+
.. _handle backpressure correctly: https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#websocket-servers
|
|
138
|
+
|
|
139
|
+
Why shouldn't I use ``websockets``?
|
|
140
|
+
-----------------------------------
|
|
141
|
+
|
|
142
|
+
* If you prefer callbacks over coroutines: ``websockets`` was created to
|
|
143
|
+
provide the best coroutine-based API to manage WebSocket connections in
|
|
144
|
+
Python. Pick another library for a callback-based API.
|
|
145
|
+
|
|
146
|
+
* If you're looking for a mixed HTTP / WebSocket library: ``websockets`` aims
|
|
147
|
+
at being an excellent implementation of :rfc:`6455`: The WebSocket Protocol
|
|
148
|
+
and :rfc:`7692`: Compression Extensions for WebSocket. Its support for HTTP
|
|
149
|
+
is minimal — just enough for an HTTP health check.
|
|
150
|
+
|
|
151
|
+
If you want to do both in the same server, look at HTTP + WebSocket servers
|
|
152
|
+
that build on top of ``websockets`` to support WebSocket connections, like
|
|
153
|
+
uvicorn_ or Sanic_.
|
|
154
|
+
|
|
155
|
+
.. _uvicorn: https://www.uvicorn.org/
|
|
156
|
+
.. _Sanic: https://sanic.dev/en/
|
|
157
|
+
|
|
158
|
+
What else?
|
|
159
|
+
----------
|
|
160
|
+
|
|
161
|
+
Bug reports, patches and suggestions are welcome!
|
|
162
|
+
|
|
163
|
+
To report a security vulnerability, please use the `Tidelift security
|
|
164
|
+
contact`_. Tidelift will coordinate the fix and disclosure.
|
|
165
|
+
|
|
166
|
+
.. _Tidelift security contact: https://tidelift.com/security
|
|
167
|
+
|
|
168
|
+
For anything else, please open an issue_ or send a `pull request`_.
|
|
169
|
+
|
|
170
|
+
.. _issue: https://github.com/python-websockets/websockets/issues/new
|
|
171
|
+
.. _pull request: https://github.com/python-websockets/websockets/compare/
|
|
172
|
+
|
|
173
|
+
Participants must uphold the `Contributor Covenant code of conduct`_.
|
|
174
|
+
|
|
175
|
+
.. _Contributor Covenant code of conduct: https://github.com/python-websockets/websockets/blob/main/CODE_OF_CONDUCT.md
|
|
176
|
+
|
|
177
|
+
``websockets`` is released under the `BSD license`_.
|
|
178
|
+
|
|
179
|
+
.. _BSD license: https://github.com/python-websockets/websockets/blob/main/LICENSE
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
../../../bin/websockets,sha256=4i4hGCyAWQFA5qMT7JFyNGzDAsAF078ibLwpsoVVjBU,255
|
|
2
|
+
websockets-15.0.1.dist-info/LICENSE,sha256=PWoMBQ2L7FL6utUC5F-yW9ArytvXDeo01Ee2oP9Obag,1514
|
|
3
|
+
websockets-15.0.1.dist-info/WHEEL,sha256=AgdMHnMTjkZpUyUKDovd66wbI5wZTb2aEgD7363XPtM,224
|
|
4
|
+
websockets-15.0.1.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
|
|
5
|
+
websockets-15.0.1.dist-info/entry_points.txt,sha256=Dnhn4dm5EsI4ZMAsHldGF6CwBXZrGXnR7cnK2-XR7zY,51
|
|
6
|
+
websockets-15.0.1.dist-info/METADATA,sha256=VR5K6egG_PpJ2-GQ4hyd-Ck1geIlRMLQpvhB5qfnElQ,6817
|
|
7
|
+
websockets/frames.py,sha256=p6e3R05-SKtMDcHh8SHYspFOHG1ei5yJvTWr5Lebxxs,12759
|
|
8
|
+
websockets/http11.py,sha256=a2IEvTU6E5UtozqdtWoam31rKn1POVKFwglaeTBSjuY,14925
|
|
9
|
+
websockets/http.py,sha256=T1tNLmbkFCneXQ6qepBmsVVDXyP9i500IVzTJTeBMR4,659
|
|
10
|
+
websockets/streams.py,sha256=kcI0JXNRqVPoVEhL67-urICwi0sgLNyPyWdccFzBuVU,4047
|
|
11
|
+
websockets/exceptions.py,sha256=BczwKlo-oxgijKCLsuPp-PG77tDDWPy8vCFjAa5WylE,12811
|
|
12
|
+
websockets/typing.py,sha256=1Zt2P-lXTC3KJhOhzW2ILyEo1I5ZR9jHVP7b_rnJyQs,2025
|
|
13
|
+
websockets/connection.py,sha256=OLiMVkNd25_86sB8Q7CrCwBoXy9nA0OCgdgLRA8WUR8,323
|
|
14
|
+
websockets/__main__.py,sha256=wu5N2wk8mvBgyvr2ghmQf4prezAe0_i-p123VVreyYc,62
|
|
15
|
+
websockets/speedups.pyi,sha256=NikZ3sAxs9Z2uWH_ZvctvMJUBbsHeC2D1L954EVSwJc,55
|
|
16
|
+
websockets/version.py,sha256=POhkZh1W0RcVoqXZmWUHBR--4hr8-Bx_3-XDnyXotug,3204
|
|
17
|
+
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
websockets/protocol.py,sha256=Fyog1EsV8xthnJdX3MH9-bHbEGgPRC0tqwGWCPK4Jrg,26537
|
|
19
|
+
websockets/client.py,sha256=hwaoOHuZhulxyUqEiU27Cx5oUSvJuHJRN65aip7bTvU,13564
|
|
20
|
+
websockets/utils.py,sha256=ZpH3WJLsQS29Jf5R6lTacxf_hPd8E4zS2JmGyNpg4bA,1150
|
|
21
|
+
websockets/uri.py,sha256=MpdIigZII7Rpw7_-61DisZwDtV-68v4YexzPmRP8Lhk,6986
|
|
22
|
+
websockets/speedups.cpython-312-x86_64-linux-gnu.so,sha256=3QmaMCm3-DmuIesjHt0234XcsD6QDU2073NNvxPtjb4,35968
|
|
23
|
+
websockets/__init__.py,sha256=AC2Hq92uSc_WOo9_xvITpGshJ7Dy0Md5m2_ywsdSt_Y,7058
|
|
24
|
+
websockets/cli.py,sha256=YnegH59z93JxSVIGiXiWhR3ktgI6k1_pf_BRLanxKrQ,5336
|
|
25
|
+
websockets/datastructures.py,sha256=zj0emMN8pLtWyqg2l9aYnlJhat_8IzPhIuLCvhGkEj0,5615
|
|
26
|
+
websockets/server.py,sha256=o2lPQgY7sgHaqst-wMcDtsixaEssapW_A7yZHGBzLiE,21565
|
|
27
|
+
websockets/headers.py,sha256=yQnPljVZwV1_V-pOSRKNLG_u827wFC1h72cciojcQ8M,16046
|
|
28
|
+
websockets/auth.py,sha256=U_Jwmn59ZRQ6EecpOvMizQCG_ZbAvgUf1ik7haZRC3c,568
|
|
29
|
+
websockets/speedups.c,sha256=j-damnT02MKRoYw8MtTT45qLGX6z6TnriqhTkyfcNZE,5767
|
|
30
|
+
websockets/imports.py,sha256=T_B9TUmHoceKMQ-PNphdQQAH2XdxAxwSQNeQEgqILkE,2795
|
|
31
|
+
websockets/asyncio/compatibility.py,sha256=gkenDDhzNbm6_iXV5Edvbvp6uHZYdrTvGNjt8P_JtyQ,786
|
|
32
|
+
websockets/asyncio/messages.py,sha256=EfY6a6WW6gJdnENFqvVbzwm8noFJovKAQZwoFGf0p4s,10993
|
|
33
|
+
websockets/asyncio/async_timeout.py,sha256=N-6Mubyiaoh66PAXGvCzhgxCM-7V2XiRnH32Xi6J6TE,8971
|
|
34
|
+
websockets/asyncio/connection.py,sha256=6hoPpanp-TuirEIiOi6O2Pyq5wJQmE2osCqIKb22Xpo,48722
|
|
35
|
+
websockets/asyncio/client.py,sha256=lH083GGunFfEFzOpL1nPcp7ol4fp9n3lnhwnBE7KFL0,31490
|
|
36
|
+
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
websockets/asyncio/server.py,sha256=oWrh9ZZ5yw3v99jpZ8cs2ajCw9ygdCjvH7ELh_Vxcr4,37385
|
|
38
|
+
websockets/asyncio/router.py,sha256=TW2PRiEGEIunyEDf3X1-yabEwrni8a8-MP_wD8Wo0Io,6601
|
|
39
|
+
websockets/sync/messages.py,sha256=mthVtlDkXDIqVU0aGxjb6EohDea6_eZVTWyDw5eZzkU,12607
|
|
40
|
+
websockets/sync/connection.py,sha256=AvZnIgthHPkjEsxDRkupsHFEMqRlnASA1XkycTAbOgY,41574
|
|
41
|
+
websockets/sync/client.py,sha256=63X0yHNqZGMBKaVVYe5sreiyseXu3CwriSvPpk4Jhfo,22648
|
|
42
|
+
websockets/sync/utils.py,sha256=TtW-ncYFvJmiSW2gO86ngE2BVsnnBdL-4H88kWNDYbg,1107
|
|
43
|
+
websockets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
websockets/sync/server.py,sha256=hHckE3Tv1c8wG9CbxqB3SyMRgispSLcef4pM2ereFn0,27436
|
|
45
|
+
websockets/sync/router.py,sha256=hf6eZvGU0W_BqjiC88DAIpKEB7swJ2wz8bJzwbiEJ54,6291
|
|
46
|
+
websockets/legacy/http.py,sha256=cOCQmDWhIKQmm8UWGXPW7CDZg03wjogCsb0LP9oetNQ,7061
|
|
47
|
+
websockets/legacy/exceptions.py,sha256=ViEjpoT09fzx_Zqf0aNGDVtRDNjXaOw0gdCta3LkjFc,1924
|
|
48
|
+
websockets/legacy/handshake.py,sha256=2Nzr5AN2xvDC5EdNP-kB3lOcrAaUNlYuj_-hr_jv7pM,5285
|
|
49
|
+
websockets/legacy/framing.py,sha256=RbLG5T9Y0zJoS0RybTJ-zpo3GVGjcwIt7aJkCTV29dg,6366
|
|
50
|
+
websockets/legacy/protocol.py,sha256=GqPR2EIrYe0hcuOzqSa06jzX7mCNjUCSC6TpPzSzWaU,63902
|
|
51
|
+
websockets/legacy/client.py,sha256=2JJqsVCHz4cXSTf--jSuUKvC04GcOYXEgy_1GQzxGMI,26985
|
|
52
|
+
websockets/legacy/__init__.py,sha256=wQ5zRIENGUS_5eKNAX9CRE7x1TwKapKimrQFFWN9Sxs,276
|
|
53
|
+
websockets/legacy/server.py,sha256=BNhoo8Q6jDrmd42HrZlBYGL7xfiSoVvUB-yRBozh-D0,45250
|
|
54
|
+
websockets/legacy/auth.py,sha256=DcQcCSeVeP93JcH8vFWE0HIJL-X-f23LZ0DsJpav1So,6531
|
|
55
|
+
websockets/extensions/base.py,sha256=JNfyk543C7VuPH0QOobiqKoGrzjJILje6sz5ILvOPl4,2903
|
|
56
|
+
websockets/extensions/__init__.py,sha256=QkZsxaJVllVSp1uhdD5uPGibdbx_091GrVVfS5LXcpw,98
|
|
57
|
+
websockets/extensions/permessage_deflate.py,sha256=_tu4-N4V6-UY9mhBhBTE009TSDqvY1y6PkYanIYphOM,25711
|
|
58
|
+
websockets-15.0.1.dist-info/INSTALLER,sha256=sz0Tnp99msIbbLB51q7U9nA6AvRKcsOeUKhrHH0Ulg4,12
|
|
59
|
+
websockets-15.0.1.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
websockets
|
|
Binary file
|
package/package.json
CHANGED
package/backend/adal-backend/_internal/numpy/_core/_multiarray_tests.cpython-312-x86_64-linux-gnu.so
DELETED
|
Binary file
|