@oharness/engine 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/agent.d.ts +83 -0
- package/dist/agent/agent.js +112 -1
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/memory-backup.d.ts +2 -0
- package/dist/agent/memory-backup.js +9 -1
- package/dist/agent/memory-backup.js.map +1 -1
- package/dist/agent/memory-limits.js +8 -1
- package/dist/agent/memory-limits.js.map +1 -1
- package/dist/agent/memory-usage.d.ts +1 -1
- package/dist/agent/memory-usage.js +2 -3
- package/dist/agent/memory-usage.js.map +1 -1
- package/dist/agent/memory.d.ts +3 -0
- package/dist/agent/memory.js +6 -18
- package/dist/agent/memory.js.map +1 -1
- package/dist/agent/session.d.ts +9 -0
- package/dist/agent/session.js +14 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/settings.js +3 -2
- package/dist/agent/settings.js.map +1 -1
- package/dist/agent/store.d.ts +45 -4
- package/dist/agent/store.js +198 -25
- package/dist/agent/store.js.map +1 -1
- package/dist/artifacts/files.d.ts +52 -0
- package/dist/artifacts/files.js +169 -0
- package/dist/artifacts/files.js.map +1 -0
- package/dist/auth/store.js +3 -2
- package/dist/auth/store.js.map +1 -1
- package/dist/config-files.js +3 -2
- package/dist/config-files.js.map +1 -1
- package/dist/config.d.ts +6 -1
- package/dist/config.js +10 -2
- package/dist/config.js.map +1 -1
- package/dist/harness.d.ts +62 -1
- package/dist/harness.js +174 -12
- package/dist/harness.js.map +1 -1
- package/dist/paths.d.ts +5 -0
- package/dist/paths.js +21 -3
- package/dist/paths.js.map +1 -1
- package/dist/providers/builtin.d.ts +2 -0
- package/dist/providers/builtin.js +38 -24
- package/dist/providers/builtin.js.map +1 -1
- package/dist/providers/catalog.d.ts +5 -0
- package/dist/providers/catalog.js +32 -1
- package/dist/providers/catalog.js.map +1 -1
- package/dist/providers/catalog.json +241 -123
- package/dist/providers/discovery.js +17 -0
- package/dist/providers/discovery.js.map +1 -1
- package/dist/providers/models-dev.d.ts +89 -0
- package/dist/providers/models-dev.js +160 -0
- package/dist/providers/models-dev.js.map +1 -0
- package/dist/providers/models-dev.json +821 -0
- package/dist/providers/registry.d.ts +12 -0
- package/dist/providers/registry.js +33 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/types.d.ts +21 -0
- package/dist/providers/types.js +16 -0
- package/dist/providers/types.js.map +1 -1
- package/dist/runtime-plugins/builtin/memory-migrate.d.ts +5 -21
- package/dist/runtime-plugins/builtin/memory-migrate.js +5 -125
- package/dist/runtime-plugins/builtin/memory-migrate.js.map +1 -1
- package/dist/runtime-plugins/builtin/memory.d.ts +3 -0
- package/dist/runtime-plugins/builtin/memory.js +12 -10
- package/dist/runtime-plugins/builtin/memory.js.map +1 -1
- package/dist/schedule/clock.d.ts +76 -0
- package/dist/schedule/clock.js +147 -0
- package/dist/schedule/clock.js.map +1 -0
- package/dist/schedule/cron.d.ts +9 -0
- package/dist/schedule/cron.js +18 -0
- package/dist/schedule/cron.js.map +1 -1
- package/dist/schedule/lock.d.ts +38 -0
- package/dist/schedule/lock.js +100 -0
- package/dist/schedule/lock.js.map +1 -0
- package/dist/schedule/runner.d.ts +67 -0
- package/dist/schedule/runner.js +100 -0
- package/dist/schedule/runner.js.map +1 -0
- package/dist/schedule/scheduler.d.ts +56 -15
- package/dist/schedule/scheduler.js +80 -107
- package/dist/schedule/scheduler.js.map +1 -1
- package/dist/storage/kv.js +3 -2
- package/dist/storage/kv.js.map +1 -1
- package/dist/storage/project.d.ts +26 -0
- package/dist/storage/project.js +74 -15
- package/dist/storage/project.js.map +1 -1
- package/dist/tools/builtin/routine.d.ts +31 -0
- package/dist/tools/builtin/routine.js +70 -0
- package/dist/tools/builtin/routine.js.map +1 -0
- package/dist/util/fs.d.ts +6 -0
- package/dist/util/fs.js +22 -0
- package/dist/util/fs.js.map +1 -0
- package/package.json +3 -3
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
],
|
|
58
58
|
"docsUrl": "https://console.anthropic.com/settings/keys",
|
|
59
59
|
"popular": true,
|
|
60
|
-
"description": "Claude models, direct API or ant CLI subscription"
|
|
60
|
+
"description": "Claude models, direct API or ant CLI subscription",
|
|
61
|
+
"modelsDev": "anthropic"
|
|
61
62
|
},
|
|
62
63
|
"ottoport": {
|
|
63
64
|
"label": "OttoPort",
|
|
@@ -85,7 +86,8 @@
|
|
|
85
86
|
"$note": "Responses is the API OpenAI's current models are documented against, and some (the pro tiers) are served nowhere else. A proxy that only speaks chat completions needs { \"providers\": { \"openai\": { \"protocol\": \"openai-chat\" } } }.",
|
|
86
87
|
"docsUrl": "https://platform.openai.com/api-keys",
|
|
87
88
|
"popular": true,
|
|
88
|
-
"description": "GPT models, official API"
|
|
89
|
+
"description": "GPT models, official API",
|
|
90
|
+
"modelsDev": "openai"
|
|
89
91
|
},
|
|
90
92
|
"openai-codex": {
|
|
91
93
|
"label": "ChatGPT (Codex)",
|
|
@@ -93,7 +95,11 @@
|
|
|
93
95
|
"baseUrl": "https://chatgpt.com/backend-api",
|
|
94
96
|
"envVars": [],
|
|
95
97
|
"subscription": true,
|
|
96
|
-
"excludeModels": [
|
|
98
|
+
"excludeModels": [
|
|
99
|
+
"gpt-5.3-codex-spark",
|
|
100
|
+
"gpt-5.4",
|
|
101
|
+
"gpt-5.4-mini"
|
|
102
|
+
],
|
|
97
103
|
"$note": "The backend the Codex CLI talks to. It is a different wire format from the OpenAI Responses API and it takes no API key at all — only a ChatGPT OAuth token, which this build reads from the Codex CLI's own credential file rather than running a second login of its own. `excludeModels` lists the models this backend refuses to a ChatGPT account outright — verified against a live Plus account; a plan that does serve one can drop it from this list in a user catalog.",
|
|
98
104
|
"docsUrl": "https://developers.openai.com/codex/cli/",
|
|
99
105
|
"description": "GPT models on a ChatGPT Plus/Pro plan, via the Codex CLI login"
|
|
@@ -108,85 +114,8 @@
|
|
|
108
114
|
],
|
|
109
115
|
"docsUrl": "https://aistudio.google.com/apikey",
|
|
110
116
|
"popular": true,
|
|
111
|
-
"description": "Gemini models, official API"
|
|
112
|
-
|
|
113
|
-
"moonshot": {
|
|
114
|
-
"label": "Moonshot (Kimi)",
|
|
115
|
-
"protocol": "openai-chat",
|
|
116
|
-
"baseUrl": "https://api.moonshot.ai/v1",
|
|
117
|
-
"envVars": [
|
|
118
|
-
"MOONSHOT_API_KEY",
|
|
119
|
-
"KIMI_API_KEY"
|
|
120
|
-
],
|
|
121
|
-
"discovery": "openai",
|
|
122
|
-
"piProvider": "moonshotai",
|
|
123
|
-
"docsUrl": "https://platform.moonshot.ai/console/api-keys",
|
|
124
|
-
"$note": "Mainland China accounts use https://api.moonshot.cn/v1 — override baseUrl.",
|
|
125
|
-
"popular": true,
|
|
126
|
-
"description": "Kimi official API, long context"
|
|
127
|
-
},
|
|
128
|
-
"deepseek": {
|
|
129
|
-
"label": "DeepSeek",
|
|
130
|
-
"protocol": "openai-chat",
|
|
131
|
-
"baseUrl": "https://api.deepseek.com/v1",
|
|
132
|
-
"envVars": [
|
|
133
|
-
"DEEPSEEK_API_KEY"
|
|
134
|
-
],
|
|
135
|
-
"discovery": "openai",
|
|
136
|
-
"docsUrl": "https://platform.deepseek.com/api_keys",
|
|
137
|
-
"popular": true,
|
|
138
|
-
"description": "DeepSeek official API, low cost"
|
|
139
|
-
},
|
|
140
|
-
"zhipu": {
|
|
141
|
-
"label": "Zhipu (GLM)",
|
|
142
|
-
"protocol": "openai-chat",
|
|
143
|
-
"baseUrl": "https://open.bigmodel.cn/api/paas/v4",
|
|
144
|
-
"envVars": [
|
|
145
|
-
"ZHIPU_API_KEY",
|
|
146
|
-
"GLM_API_KEY"
|
|
147
|
-
],
|
|
148
|
-
"discovery": "openai",
|
|
149
|
-
"piProvider": "zai-coding-cn",
|
|
150
|
-
"docsUrl": "https://open.bigmodel.cn/usercenter/apikeys",
|
|
151
|
-
"$note": "pi-ai files the mainland GLM models under `zai-coding-cn`; the model ids are the same ones open.bigmodel.cn serves, so only the name needs reconciling — the endpoint above stays this entry's.",
|
|
152
|
-
"popular": true,
|
|
153
|
-
"description": "Zhipu GLM official API"
|
|
154
|
-
},
|
|
155
|
-
"zai": {
|
|
156
|
-
"label": "Z.ai (GLM)",
|
|
157
|
-
"protocol": "openai-chat",
|
|
158
|
-
"baseUrl": "https://api.z.ai/api/paas/v4",
|
|
159
|
-
"envVars": [
|
|
160
|
-
"ZAI_API_KEY",
|
|
161
|
-
"Z_AI_API_KEY"
|
|
162
|
-
],
|
|
163
|
-
"discovery": "openai",
|
|
164
|
-
"docsUrl": "https://z.ai/manage-apikey/apikey-list",
|
|
165
|
-
"$note": "Zhipu's international arm, a separate host and a separate key from `zhipu`. A GLM Coding Plan subscription is served from https://api.z.ai/api/coding/paas/v4 — override baseUrl for it.",
|
|
166
|
-
"popular": true,
|
|
167
|
-
"description": "GLM models, international endpoint"
|
|
168
|
-
},
|
|
169
|
-
"siliconflow": {
|
|
170
|
-
"label": "SiliconFlow",
|
|
171
|
-
"protocol": "openai-chat",
|
|
172
|
-
"baseUrl": "https://api.siliconflow.cn/v1",
|
|
173
|
-
"envVars": [
|
|
174
|
-
"SILICONFLOW_API_KEY"
|
|
175
|
-
],
|
|
176
|
-
"discovery": "openai",
|
|
177
|
-
"description": "SiliconFlow, aggregated open models"
|
|
178
|
-
},
|
|
179
|
-
"volcengine": {
|
|
180
|
-
"label": "Volcengine (Doubao)",
|
|
181
|
-
"protocol": "openai-chat",
|
|
182
|
-
"baseUrl": "https://ark.cn-beijing.volces.com/api/v3",
|
|
183
|
-
"envVars": [
|
|
184
|
-
"ARK_API_KEY",
|
|
185
|
-
"VOLCENGINE_API_KEY"
|
|
186
|
-
],
|
|
187
|
-
"discovery": "openai",
|
|
188
|
-
"popular": true,
|
|
189
|
-
"description": "Volcengine Ark: Doubao and third-party models"
|
|
117
|
+
"description": "Gemini models, official API",
|
|
118
|
+
"modelsDev": "google"
|
|
190
119
|
},
|
|
191
120
|
"xai": {
|
|
192
121
|
"label": "xAI",
|
|
@@ -197,7 +126,8 @@
|
|
|
197
126
|
],
|
|
198
127
|
"discovery": "openai",
|
|
199
128
|
"docsUrl": "https://console.x.ai",
|
|
200
|
-
"description": "Grok models, official API"
|
|
129
|
+
"description": "Grok models, official API",
|
|
130
|
+
"modelsDev": "xai"
|
|
201
131
|
},
|
|
202
132
|
"mistral": {
|
|
203
133
|
"label": "Mistral",
|
|
@@ -219,7 +149,8 @@
|
|
|
219
149
|
],
|
|
220
150
|
"discovery": "openai",
|
|
221
151
|
"docsUrl": "https://console.groq.com/keys",
|
|
222
|
-
"description": "Very low latency inference"
|
|
152
|
+
"description": "Very low latency inference",
|
|
153
|
+
"modelsDev": "groq"
|
|
223
154
|
},
|
|
224
155
|
"together": {
|
|
225
156
|
"label": "Together AI",
|
|
@@ -230,7 +161,8 @@
|
|
|
230
161
|
],
|
|
231
162
|
"discovery": "openai",
|
|
232
163
|
"docsUrl": "https://api.together.xyz/settings/api-keys",
|
|
233
|
-
"description": "Hosted open-model inference"
|
|
164
|
+
"description": "Hosted open-model inference",
|
|
165
|
+
"modelsDev": "togetherai"
|
|
234
166
|
},
|
|
235
167
|
"cerebras": {
|
|
236
168
|
"label": "Cerebras",
|
|
@@ -241,7 +173,8 @@
|
|
|
241
173
|
],
|
|
242
174
|
"discovery": "openai",
|
|
243
175
|
"docsUrl": "https://cloud.cerebras.ai",
|
|
244
|
-
"description": "Wafer-scale hardware, very high throughput"
|
|
176
|
+
"description": "Wafer-scale hardware, very high throughput",
|
|
177
|
+
"modelsDev": "cerebras"
|
|
245
178
|
},
|
|
246
179
|
"fireworks": {
|
|
247
180
|
"label": "Fireworks",
|
|
@@ -252,7 +185,8 @@
|
|
|
252
185
|
],
|
|
253
186
|
"discovery": "openai",
|
|
254
187
|
"docsUrl": "https://fireworks.ai/api-keys",
|
|
255
|
-
"description": "Fast open-model inference"
|
|
188
|
+
"description": "Fast open-model inference",
|
|
189
|
+
"modelsDev": "fireworks-ai"
|
|
256
190
|
},
|
|
257
191
|
"deepinfra": {
|
|
258
192
|
"label": "DeepInfra",
|
|
@@ -262,33 +196,8 @@
|
|
|
262
196
|
"DEEPINFRA_API_KEY"
|
|
263
197
|
],
|
|
264
198
|
"discovery": "openai",
|
|
265
|
-
"description": "Low-cost open-model inference"
|
|
266
|
-
|
|
267
|
-
"ollama": {
|
|
268
|
-
"label": "Ollama",
|
|
269
|
-
"protocol": "openai-chat",
|
|
270
|
-
"baseUrl": "http://localhost:11434/v1",
|
|
271
|
-
"envVars": [],
|
|
272
|
-
"discovery": "openai",
|
|
273
|
-
"includeUsage": false,
|
|
274
|
-
"description": "Runs locally, no key needed"
|
|
275
|
-
},
|
|
276
|
-
"lmstudio": {
|
|
277
|
-
"label": "LM Studio",
|
|
278
|
-
"protocol": "openai-chat",
|
|
279
|
-
"baseUrl": "http://localhost:1234/v1",
|
|
280
|
-
"envVars": [],
|
|
281
|
-
"discovery": "openai",
|
|
282
|
-
"includeUsage": false,
|
|
283
|
-
"description": "Runs locally, no key needed"
|
|
284
|
-
},
|
|
285
|
-
"vllm": {
|
|
286
|
-
"label": "vLLM",
|
|
287
|
-
"protocol": "openai-chat",
|
|
288
|
-
"baseUrl": "http://localhost:8000/v1",
|
|
289
|
-
"envVars": [],
|
|
290
|
-
"discovery": "openai",
|
|
291
|
-
"description": "Your own vLLM server"
|
|
199
|
+
"description": "Low-cost open-model inference",
|
|
200
|
+
"modelsDev": "deepinfra"
|
|
292
201
|
},
|
|
293
202
|
"perplexity": {
|
|
294
203
|
"label": "Perplexity",
|
|
@@ -299,7 +208,8 @@
|
|
|
299
208
|
],
|
|
300
209
|
"discovery": "openai",
|
|
301
210
|
"docsUrl": "https://www.perplexity.ai/settings/api",
|
|
302
|
-
"description": "Models with live web search"
|
|
211
|
+
"description": "Models with live web search",
|
|
212
|
+
"modelsDev": "perplexity"
|
|
303
213
|
},
|
|
304
214
|
"nvidia": {
|
|
305
215
|
"label": "NVIDIA NIM",
|
|
@@ -310,7 +220,8 @@
|
|
|
310
220
|
],
|
|
311
221
|
"discovery": "openai",
|
|
312
222
|
"docsUrl": "https://build.nvidia.com/",
|
|
313
|
-
"description": "NVIDIA NIM hosted inference"
|
|
223
|
+
"description": "NVIDIA NIM hosted inference",
|
|
224
|
+
"modelsDev": "nvidia"
|
|
314
225
|
},
|
|
315
226
|
"novita": {
|
|
316
227
|
"label": "Novita",
|
|
@@ -321,7 +232,8 @@
|
|
|
321
232
|
],
|
|
322
233
|
"discovery": "openai",
|
|
323
234
|
"docsUrl": "https://novita.ai/settings/key-management",
|
|
324
|
-
"description": "Open-model inference platform"
|
|
235
|
+
"description": "Open-model inference platform",
|
|
236
|
+
"modelsDev": "novita-ai"
|
|
325
237
|
},
|
|
326
238
|
"hyperbolic": {
|
|
327
239
|
"label": "Hyperbolic",
|
|
@@ -334,16 +246,202 @@
|
|
|
334
246
|
"docsUrl": "https://app.hyperbolic.xyz/settings",
|
|
335
247
|
"description": "Low-cost open-model inference"
|
|
336
248
|
},
|
|
337
|
-
"
|
|
338
|
-
"label": "
|
|
249
|
+
"huggingface": {
|
|
250
|
+
"label": "Hugging Face",
|
|
339
251
|
"protocol": "openai-chat",
|
|
340
|
-
"baseUrl": "https://
|
|
252
|
+
"baseUrl": "https://router.huggingface.co/v1",
|
|
341
253
|
"envVars": [
|
|
342
|
-
"
|
|
254
|
+
"HF_TOKEN"
|
|
343
255
|
],
|
|
344
256
|
"discovery": "openai",
|
|
345
|
-
"
|
|
346
|
-
"
|
|
257
|
+
"modelsDev": "huggingface",
|
|
258
|
+
"docsUrl": "https://huggingface.co/settings/tokens",
|
|
259
|
+
"description": "Open models through Hugging Face Inference Providers"
|
|
260
|
+
},
|
|
261
|
+
"baseten": {
|
|
262
|
+
"label": "Baseten",
|
|
263
|
+
"protocol": "openai-chat",
|
|
264
|
+
"baseUrl": "https://inference.baseten.co/v1",
|
|
265
|
+
"envVars": [
|
|
266
|
+
"BASETEN_API_KEY"
|
|
267
|
+
],
|
|
268
|
+
"discovery": "openai",
|
|
269
|
+
"modelsDev": "baseten",
|
|
270
|
+
"docsUrl": "https://app.baseten.co/settings/api_keys",
|
|
271
|
+
"description": "Open models on Baseten Model APIs"
|
|
272
|
+
},
|
|
273
|
+
"nebius": {
|
|
274
|
+
"label": "Nebius Token Factory",
|
|
275
|
+
"protocol": "openai-chat",
|
|
276
|
+
"baseUrl": "https://api.tokenfactory.nebius.com/v1",
|
|
277
|
+
"envVars": [
|
|
278
|
+
"NEBIUS_API_KEY"
|
|
279
|
+
],
|
|
280
|
+
"discovery": "openai",
|
|
281
|
+
"modelsDev": "nebius",
|
|
282
|
+
"docsUrl": "https://tokenfactory.nebius.com/",
|
|
283
|
+
"description": "Open models on Nebius"
|
|
284
|
+
},
|
|
285
|
+
"llama": {
|
|
286
|
+
"label": "Llama API (Meta)",
|
|
287
|
+
"protocol": "openai-chat",
|
|
288
|
+
"baseUrl": "https://api.llama.com/compat/v1",
|
|
289
|
+
"envVars": [
|
|
290
|
+
"LLAMA_API_KEY"
|
|
291
|
+
],
|
|
292
|
+
"modelsDev": "llama",
|
|
293
|
+
"docsUrl": "https://llama.developer.meta.com/",
|
|
294
|
+
"description": "Meta's official Llama API"
|
|
295
|
+
},
|
|
296
|
+
"deepseek": {
|
|
297
|
+
"label": "DeepSeek",
|
|
298
|
+
"protocol": "openai-chat",
|
|
299
|
+
"baseUrl": "https://api.deepseek.com/v1",
|
|
300
|
+
"envVars": [
|
|
301
|
+
"DEEPSEEK_API_KEY"
|
|
302
|
+
],
|
|
303
|
+
"discovery": "openai",
|
|
304
|
+
"docsUrl": "https://platform.deepseek.com/api_keys",
|
|
305
|
+
"popular": true,
|
|
306
|
+
"description": "DeepSeek official API, low cost",
|
|
307
|
+
"modelsDev": "deepseek"
|
|
308
|
+
},
|
|
309
|
+
"qwen": {
|
|
310
|
+
"label": "Qwen (Alibaba Cloud)",
|
|
311
|
+
"protocol": "openai-chat",
|
|
312
|
+
"baseUrl": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
|
|
313
|
+
"envVars": [
|
|
314
|
+
"DASHSCOPE_API_KEY"
|
|
315
|
+
],
|
|
316
|
+
"discovery": "openai",
|
|
317
|
+
"modelsDev": "alibaba",
|
|
318
|
+
"docsUrl": "https://modelstudio.console.alibabacloud.com/?tab=model#/api-key",
|
|
319
|
+
"$note": "Alibaba Cloud International. Only the international endpoint is listed; a mainland account can point this entry at https://dashscope.aliyuncs.com/compatible-mode/v1 in a user catalog.",
|
|
320
|
+
"description": "Qwen official API (Alibaba Cloud Model Studio, international)",
|
|
321
|
+
"popular": true
|
|
322
|
+
},
|
|
323
|
+
"qwen-coding-plan": {
|
|
324
|
+
"label": "Alibaba Coding Plan",
|
|
325
|
+
"protocol": "openai-chat",
|
|
326
|
+
"baseUrl": "https://coding-intl.dashscope.aliyuncs.com/v1",
|
|
327
|
+
"envVars": [
|
|
328
|
+
"ALIBABA_CODING_PLAN_API_KEY"
|
|
329
|
+
],
|
|
330
|
+
"modelsDev": "alibaba-coding-plan",
|
|
331
|
+
"subscription": true,
|
|
332
|
+
"docsUrl": "https://www.alibabacloud.com/help/en/model-studio/coding-plan",
|
|
333
|
+
"$note": "A plan endpoint: its own env var, because a plan key sent to the pay-as-you-go host (or the reverse) is refused or billed per token.",
|
|
334
|
+
"description": "Qwen and partner models on an Alibaba Cloud Coding Plan"
|
|
335
|
+
},
|
|
336
|
+
"moonshot": {
|
|
337
|
+
"label": "Moonshot (Kimi)",
|
|
338
|
+
"protocol": "openai-chat",
|
|
339
|
+
"baseUrl": "https://api.moonshot.ai/v1",
|
|
340
|
+
"envVars": [
|
|
341
|
+
"MOONSHOT_API_KEY",
|
|
342
|
+
"KIMI_API_KEY"
|
|
343
|
+
],
|
|
344
|
+
"discovery": "openai",
|
|
345
|
+
"piProvider": "moonshotai",
|
|
346
|
+
"docsUrl": "https://platform.moonshot.ai/console/api-keys",
|
|
347
|
+
"$note": "The international platform. Mainland accounts use https://api.moonshot.cn/v1 — override baseUrl in a user catalog. A Kimi Code plan is a separate endpoint; see `kimi-coding`.",
|
|
348
|
+
"popular": true,
|
|
349
|
+
"description": "Kimi official API, international",
|
|
350
|
+
"modelsDev": "moonshotai"
|
|
351
|
+
},
|
|
352
|
+
"kimi-coding": {
|
|
353
|
+
"label": "Kimi Code",
|
|
354
|
+
"protocol": "openai-chat",
|
|
355
|
+
"baseUrl": "https://api.kimi.ai/coding/v1",
|
|
356
|
+
"envVars": [
|
|
357
|
+
"KIMI_CODING_API_KEY"
|
|
358
|
+
],
|
|
359
|
+
"modelsDev": "kimi-code-plan-global",
|
|
360
|
+
"subscription": true,
|
|
361
|
+
"docsUrl": "https://www.kimi.ai/code",
|
|
362
|
+
"$note": "The international Kimi Code endpoint (kimi.ai), over the OpenAI-compatible form models.dev records. A plan endpoint: its own env var, because a plan key sent to the pay-as-you-go host (or the reverse) is refused or billed per token.",
|
|
363
|
+
"description": "Kimi models on a Kimi Code subscription"
|
|
364
|
+
},
|
|
365
|
+
"zai": {
|
|
366
|
+
"label": "Z.ai (GLM)",
|
|
367
|
+
"protocol": "openai-chat",
|
|
368
|
+
"baseUrl": "https://api.z.ai/api/paas/v4",
|
|
369
|
+
"envVars": [
|
|
370
|
+
"ZAI_API_KEY",
|
|
371
|
+
"Z_AI_API_KEY"
|
|
372
|
+
],
|
|
373
|
+
"discovery": "openai",
|
|
374
|
+
"docsUrl": "https://z.ai/manage-apikey/apikey-list",
|
|
375
|
+
"$note": "Zhipu's international arm, a separate host and a separate key from `zhipu`. A GLM Coding Plan is served from its own endpoint; see `zai-coding`.",
|
|
376
|
+
"popular": true,
|
|
377
|
+
"description": "GLM official API, international",
|
|
378
|
+
"modelsDev": "zai"
|
|
379
|
+
},
|
|
380
|
+
"zai-coding": {
|
|
381
|
+
"label": "Z.ai GLM Coding Plan",
|
|
382
|
+
"protocol": "openai-chat",
|
|
383
|
+
"baseUrl": "https://api.z.ai/api/coding/paas/v4",
|
|
384
|
+
"envVars": [
|
|
385
|
+
"ZAI_CODING_API_KEY"
|
|
386
|
+
],
|
|
387
|
+
"piProvider": "zai",
|
|
388
|
+
"subscription": true,
|
|
389
|
+
"docsUrl": "https://z.ai/manage-apikey/apikey-list",
|
|
390
|
+
"$note": "The GLM Coding Plan endpoint. A plan key is not accepted on the pay-as-you-go host `zai` uses, and a pay-as-you-go key is not billed against a plan here, so the two are separate entries with separate env vars — sharing ZAI_API_KEY would send one kind of key to the other's endpoint. pi-ai's `zai` roster is this endpoint's, so it seeds both.",
|
|
391
|
+
"description": "GLM models on a GLM Coding Plan subscription",
|
|
392
|
+
"modelsDev": "zai-coding-plan"
|
|
393
|
+
},
|
|
394
|
+
"byteplus": {
|
|
395
|
+
"label": "BytePlus ModelArk",
|
|
396
|
+
"protocol": "openai-chat",
|
|
397
|
+
"baseUrl": "https://ark.ap-southeast.bytepluses.com/api/v3",
|
|
398
|
+
"envVars": [
|
|
399
|
+
"BYTEPLUS_API_KEY"
|
|
400
|
+
],
|
|
401
|
+
"discovery": "openai",
|
|
402
|
+
"docsUrl": "https://docs.byteplus.com/en/docs/ModelArk/1399008",
|
|
403
|
+
"description": "ByteDance's Dola Seed models, international",
|
|
404
|
+
"$note": "BytePlus is ByteDance's international cloud; ModelArk serves the Dola Seed models (Doubao Seed on the mainland) at the pay-as-you-go endpoint. Its own key variable: a Volcengine Ark (mainland) key does not work here, and the Coding Plan's /api/coding/v3 host is a different product. Not in models.dev, whose `volcengine` entry is the mainland host with doubao- ids, so it is not linked; models come from discovery, with the 2.0 family seeded from ids confirmed in use. Seed 2.1 Pro is mainland-only as of September 2026 — BytePlus lists 2.1 Turbo, 2.0 Pro, Lite and Mini — and appears here through discovery when BytePlus ships it."
|
|
405
|
+
},
|
|
406
|
+
"siliconflow": {
|
|
407
|
+
"label": "SiliconFlow",
|
|
408
|
+
"protocol": "openai-chat",
|
|
409
|
+
"baseUrl": "https://api.siliconflow.com/v1",
|
|
410
|
+
"envVars": [
|
|
411
|
+
"SILICONFLOW_API_KEY"
|
|
412
|
+
],
|
|
413
|
+
"discovery": "openai",
|
|
414
|
+
"modelsDev": "siliconflow",
|
|
415
|
+
"docsUrl": "https://cloud.siliconflow.com/account/ak",
|
|
416
|
+
"$note": "siliconflow.com. The mainland host is https://api.siliconflow.cn/v1, with a separate account; override baseUrl in a user catalog for it.",
|
|
417
|
+
"description": "Open models, international"
|
|
418
|
+
},
|
|
419
|
+
"ollama": {
|
|
420
|
+
"label": "Ollama",
|
|
421
|
+
"protocol": "openai-chat",
|
|
422
|
+
"baseUrl": "http://localhost:11434/v1",
|
|
423
|
+
"envVars": [],
|
|
424
|
+
"discovery": "openai",
|
|
425
|
+
"includeUsage": false,
|
|
426
|
+
"description": "Runs locally, no key needed"
|
|
427
|
+
},
|
|
428
|
+
"lmstudio": {
|
|
429
|
+
"label": "LM Studio",
|
|
430
|
+
"protocol": "openai-chat",
|
|
431
|
+
"baseUrl": "http://localhost:1234/v1",
|
|
432
|
+
"envVars": [],
|
|
433
|
+
"discovery": "openai",
|
|
434
|
+
"includeUsage": false,
|
|
435
|
+
"description": "Runs locally, no key needed",
|
|
436
|
+
"modelsDev": "lmstudio"
|
|
437
|
+
},
|
|
438
|
+
"vllm": {
|
|
439
|
+
"label": "vLLM",
|
|
440
|
+
"protocol": "openai-chat",
|
|
441
|
+
"baseUrl": "http://localhost:8000/v1",
|
|
442
|
+
"envVars": [],
|
|
443
|
+
"discovery": "openai",
|
|
444
|
+
"description": "Your own vLLM server"
|
|
347
445
|
}
|
|
348
446
|
},
|
|
349
447
|
"models": [
|
|
@@ -503,6 +601,26 @@
|
|
|
503
601
|
"supportsSampling": true,
|
|
504
602
|
"costPer1MInput": 1,
|
|
505
603
|
"costPer1MOutput": 5
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"id": "dola-seed-2.0-pro",
|
|
607
|
+
"provider": "byteplus",
|
|
608
|
+
"model": "dola-seed-2.0-pro",
|
|
609
|
+
"displayName": "Dola Seed 2.0 Pro",
|
|
610
|
+
"contextWindow": 256000,
|
|
611
|
+
"maxOutputTokens": 128000,
|
|
612
|
+
"supportsTools": true,
|
|
613
|
+
"supportsImages": true
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
"id": "dola-seed-2.0-lite",
|
|
617
|
+
"provider": "byteplus",
|
|
618
|
+
"model": "dola-seed-2.0-lite",
|
|
619
|
+
"displayName": "Dola Seed 2.0 Lite",
|
|
620
|
+
"contextWindow": 256000,
|
|
621
|
+
"maxOutputTokens": 131072,
|
|
622
|
+
"supportsTools": true,
|
|
623
|
+
"supportsImages": true
|
|
506
624
|
}
|
|
507
625
|
]
|
|
508
626
|
}
|
|
@@ -75,6 +75,7 @@ function bareModel(providerId, entry) {
|
|
|
75
75
|
provider: providerId,
|
|
76
76
|
model: id,
|
|
77
77
|
displayName: typeof displayName === "string" ? displayName : id,
|
|
78
|
+
...releasedFrom(entry),
|
|
78
79
|
contextWindow: asNumber(entry["context_window"] ?? entry["context_length"]) ?? 128_000,
|
|
79
80
|
maxOutputTokens: asNumber(entry["max_output_tokens"]) ?? 8_192,
|
|
80
81
|
supportsTools: true,
|
|
@@ -114,6 +115,7 @@ function openRouterModel(providerId, entry) {
|
|
|
114
115
|
provider: providerId,
|
|
115
116
|
model: id,
|
|
116
117
|
displayName: typeof entry["name"] === "string" ? entry["name"] : id,
|
|
118
|
+
...releasedFrom(entry),
|
|
117
119
|
contextWindow: asNumber(topProvider?.["context_length"] ?? entry["context_length"]) ?? 128_000,
|
|
118
120
|
maxOutputTokens: asNumber(topProvider?.["max_completion_tokens"]) ?? 8_192,
|
|
119
121
|
supportsTools: params.includes("tools"),
|
|
@@ -130,6 +132,21 @@ function openRouterModel(providerId, entry) {
|
|
|
130
132
|
costPer1MOutput: perMillion(pricing?.["completion"]),
|
|
131
133
|
};
|
|
132
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* The listing's `created`, in seconds as the OpenAI shape has it, as a
|
|
137
|
+
* release time. Only a plausible one: vendors that fill it with 0, with a
|
|
138
|
+
* constant from 2023 for every model, or with the time of the request would
|
|
139
|
+
* otherwise order a list by nothing. A value is kept if it falls between GPT's
|
|
140
|
+
* public release and tomorrow; the models.dev date, where there is one, wins
|
|
141
|
+
* over it when the list is ordered.
|
|
142
|
+
*/
|
|
143
|
+
function releasedFrom(entry) {
|
|
144
|
+
const seconds = asNumber(entry["created"]);
|
|
145
|
+
if (seconds === undefined)
|
|
146
|
+
return {};
|
|
147
|
+
const ms = seconds * 1000;
|
|
148
|
+
return ms > Date.UTC(2018, 5, 1) && ms < Date.now() + 86_400_000 ? { releasedAt: ms } : {};
|
|
149
|
+
}
|
|
133
150
|
function asRecord(value) {
|
|
134
151
|
return value && typeof value === "object" ? value : undefined;
|
|
135
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/providers/discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/providers/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { CatalogProvider } from "./catalog.ts";
|
|
2
|
+
import type { ModelSpec } from "./types.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Models from models.dev, for the providers catalog.json has chosen.
|
|
5
|
+
*
|
|
6
|
+
* catalog.json decides which providers exist and how they are presented —
|
|
7
|
+
* that is curation, and it stays in this repository. What models each one
|
|
8
|
+
* serves, at what context length and price, is a fact about the vendor that
|
|
9
|
+
* changes weekly, and models.dev tracks it for two hundred providers. Its
|
|
10
|
+
* snapshot is written at build time by scripts/sync-models-dev.mjs, only for
|
|
11
|
+
* the ids catalog.json names under `modelsDev`, and shipped beside the
|
|
12
|
+
* catalog: nothing here fetches at runtime, so a change upstream reaches
|
|
13
|
+
* users only after someone has regenerated and reviewed it.
|
|
14
|
+
*
|
|
15
|
+
* It sits beside pi-ai's snapshot at the bottom of the stack. Where both know
|
|
16
|
+
* a model, pi-ai's entry wins — it carries the per-vendor thinking tiers the
|
|
17
|
+
* wire layer needs, which models.dev describes more loosely — and models.dev
|
|
18
|
+
* adds what pi-ai lacks, which for most of the providers added with it is
|
|
19
|
+
* everything. A live `/models` listing still replaces both.
|
|
20
|
+
*/
|
|
21
|
+
export interface ModelsDevModel {
|
|
22
|
+
id: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
attachment?: boolean;
|
|
25
|
+
reasoning?: boolean;
|
|
26
|
+
reasoning_options?: {
|
|
27
|
+
type: string;
|
|
28
|
+
values?: string[];
|
|
29
|
+
}[];
|
|
30
|
+
tool_call?: boolean;
|
|
31
|
+
temperature?: boolean;
|
|
32
|
+
status?: string;
|
|
33
|
+
modalities?: {
|
|
34
|
+
input?: string[];
|
|
35
|
+
output?: string[];
|
|
36
|
+
};
|
|
37
|
+
limit?: {
|
|
38
|
+
context?: number;
|
|
39
|
+
output?: number;
|
|
40
|
+
};
|
|
41
|
+
cost?: {
|
|
42
|
+
input?: number;
|
|
43
|
+
output?: number;
|
|
44
|
+
cache_read?: number;
|
|
45
|
+
cache_write?: number;
|
|
46
|
+
};
|
|
47
|
+
/** "YYYY-MM-DD", or "YYYY-MM" for a model announced without a day. */
|
|
48
|
+
release_date?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ModelsDevProvider {
|
|
51
|
+
name?: string;
|
|
52
|
+
api?: string;
|
|
53
|
+
models: Record<string, ModelsDevModel>;
|
|
54
|
+
}
|
|
55
|
+
export interface ModelsDevSnapshot {
|
|
56
|
+
fetchedAt?: string;
|
|
57
|
+
providers: Record<string, ModelsDevProvider>;
|
|
58
|
+
}
|
|
59
|
+
/** The bundled snapshot, or an empty one: it is a convenience, never a requirement. */
|
|
60
|
+
export declare function loadModelsDev(): Promise<ModelsDevSnapshot>;
|
|
61
|
+
/**
|
|
62
|
+
* Release dates by model id, across every provider in the snapshot.
|
|
63
|
+
*
|
|
64
|
+
* For ordering a list in which a model arrived with no date of its own, or a
|
|
65
|
+
* doubtful one: a gateway's `deepseek-v4-flash` is DeepSeek's model, and
|
|
66
|
+
* OpenRouter's `anthropic/claude-opus-5` is Anthropic's. Looked up by the
|
|
67
|
+
* whole id and by the part after the last slash, lowercased; where providers
|
|
68
|
+
* disagree about the same id the earliest date is kept, since a reseller
|
|
69
|
+
* listing a model later does not make it newer.
|
|
70
|
+
*/
|
|
71
|
+
export declare function releaseDates(snapshot: ModelsDevSnapshot): Map<string, number>;
|
|
72
|
+
/**
|
|
73
|
+
* The date for a wire id from `releaseDates`: the earlier of the whole id's
|
|
74
|
+
* and its last part's, so a reseller's "vendor/model" entry cannot postdate
|
|
75
|
+
* the vendor's own "model".
|
|
76
|
+
*/
|
|
77
|
+
export declare function releaseDateOf(dates: Map<string, number>, wireId: string): number | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Whether a models.dev entry belongs in a harness picker at all: something
|
|
80
|
+
* that answers in text, can call tools, and is not on its way out.
|
|
81
|
+
*/
|
|
82
|
+
export declare function isUsableModel(model: ModelsDevModel): boolean;
|
|
83
|
+
export declare function specFromModelsDev(entry: CatalogProvider, model: ModelsDevModel): ModelSpec;
|
|
84
|
+
/**
|
|
85
|
+
* Specs for every catalog provider that names a models.dev id, skipping the
|
|
86
|
+
* models already `taken` — by the catalog files and by pi-ai's seed, both of
|
|
87
|
+
* which rank above this.
|
|
88
|
+
*/
|
|
89
|
+
export declare function modelsDevSeeds(providers: Record<string, CatalogProvider>, snapshot: ModelsDevSnapshot, taken: Set<string>, listed?: ReadonlySet<string>): ModelSpec[];
|