@oharness/engine 0.5.1 → 0.7.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 (90) hide show
  1. package/dist/agent/agent.d.ts +12 -0
  2. package/dist/agent/agent.js +3 -0
  3. package/dist/agent/agent.js.map +1 -1
  4. package/dist/agent/memory-backup.d.ts +2 -0
  5. package/dist/agent/memory-backup.js +9 -1
  6. package/dist/agent/memory-backup.js.map +1 -1
  7. package/dist/agent/memory-limits.js +8 -1
  8. package/dist/agent/memory-limits.js.map +1 -1
  9. package/dist/agent/memory-usage.d.ts +1 -1
  10. package/dist/agent/memory-usage.js +2 -3
  11. package/dist/agent/memory-usage.js.map +1 -1
  12. package/dist/agent/memory.d.ts +3 -0
  13. package/dist/agent/memory.js +6 -18
  14. package/dist/agent/memory.js.map +1 -1
  15. package/dist/agent/session.d.ts +9 -0
  16. package/dist/agent/session.js +14 -2
  17. package/dist/agent/session.js.map +1 -1
  18. package/dist/agent/settings.js +3 -2
  19. package/dist/agent/settings.js.map +1 -1
  20. package/dist/agent/store.d.ts +45 -4
  21. package/dist/agent/store.js +198 -25
  22. package/dist/agent/store.js.map +1 -1
  23. package/dist/artifacts/files.d.ts +52 -0
  24. package/dist/artifacts/files.js +169 -0
  25. package/dist/artifacts/files.js.map +1 -0
  26. package/dist/auth/store.js +3 -2
  27. package/dist/auth/store.js.map +1 -1
  28. package/dist/config-files.js +3 -2
  29. package/dist/config-files.js.map +1 -1
  30. package/dist/config.d.ts +6 -1
  31. package/dist/config.js +10 -2
  32. package/dist/config.js.map +1 -1
  33. package/dist/harness.d.ts +62 -1
  34. package/dist/harness.js +174 -12
  35. package/dist/harness.js.map +1 -1
  36. package/dist/paths.d.ts +5 -0
  37. package/dist/paths.js +21 -3
  38. package/dist/paths.js.map +1 -1
  39. package/dist/providers/builtin.d.ts +2 -0
  40. package/dist/providers/builtin.js +38 -24
  41. package/dist/providers/builtin.js.map +1 -1
  42. package/dist/providers/catalog.d.ts +5 -0
  43. package/dist/providers/catalog.js +32 -1
  44. package/dist/providers/catalog.js.map +1 -1
  45. package/dist/providers/catalog.json +241 -123
  46. package/dist/providers/discovery.js +17 -0
  47. package/dist/providers/discovery.js.map +1 -1
  48. package/dist/providers/models-dev.d.ts +89 -0
  49. package/dist/providers/models-dev.js +160 -0
  50. package/dist/providers/models-dev.js.map +1 -0
  51. package/dist/providers/models-dev.json +821 -0
  52. package/dist/providers/registry.d.ts +12 -0
  53. package/dist/providers/registry.js +33 -1
  54. package/dist/providers/registry.js.map +1 -1
  55. package/dist/providers/types.d.ts +21 -0
  56. package/dist/providers/types.js +16 -0
  57. package/dist/providers/types.js.map +1 -1
  58. package/dist/runtime-plugins/builtin/memory-migrate.d.ts +5 -21
  59. package/dist/runtime-plugins/builtin/memory-migrate.js +5 -125
  60. package/dist/runtime-plugins/builtin/memory-migrate.js.map +1 -1
  61. package/dist/runtime-plugins/builtin/memory.d.ts +3 -0
  62. package/dist/runtime-plugins/builtin/memory.js +12 -10
  63. package/dist/runtime-plugins/builtin/memory.js.map +1 -1
  64. package/dist/schedule/clock.d.ts +76 -0
  65. package/dist/schedule/clock.js +147 -0
  66. package/dist/schedule/clock.js.map +1 -0
  67. package/dist/schedule/cron.d.ts +9 -0
  68. package/dist/schedule/cron.js +18 -0
  69. package/dist/schedule/cron.js.map +1 -1
  70. package/dist/schedule/lock.d.ts +38 -0
  71. package/dist/schedule/lock.js +100 -0
  72. package/dist/schedule/lock.js.map +1 -0
  73. package/dist/schedule/runner.d.ts +67 -0
  74. package/dist/schedule/runner.js +100 -0
  75. package/dist/schedule/runner.js.map +1 -0
  76. package/dist/schedule/scheduler.d.ts +56 -15
  77. package/dist/schedule/scheduler.js +80 -107
  78. package/dist/schedule/scheduler.js.map +1 -1
  79. package/dist/storage/kv.js +3 -2
  80. package/dist/storage/kv.js.map +1 -1
  81. package/dist/storage/project.d.ts +26 -0
  82. package/dist/storage/project.js +74 -15
  83. package/dist/storage/project.js.map +1 -1
  84. package/dist/tools/builtin/routine.d.ts +31 -0
  85. package/dist/tools/builtin/routine.js +70 -0
  86. package/dist/tools/builtin/routine.js.map +1 -0
  87. package/dist/util/fs.d.ts +6 -0
  88. package/dist/util/fs.js +22 -0
  89. package/dist/util/fs.js.map +1 -0
  90. package/package.json +3 -3
@@ -37,6 +37,11 @@ export interface CatalogProvider {
37
37
  * endpoint and credentials stay this entry's.
38
38
  */
39
39
  piProvider?: string;
40
+ /**
41
+ * The id this endpoint goes by on models.dev, whose snapshot supplies the
42
+ * models pi-ai does not know. See models-dev.ts.
43
+ */
44
+ modelsDev?: string;
40
45
  /**
41
46
  * This endpoint bills against a subscription rather than per token.
42
47
  *
@@ -5,6 +5,7 @@ import { fileURLToPath } from "node:url";
5
5
  import { ConfigError } from "../core/errors.js";
6
6
  import { parseJson } from "../util/json.js";
7
7
  import { builtinModels, hasGuessedReasoning, refineReasoning } from "./builtin.js";
8
+ import { loadModelsDev, modelsDevSeeds } from "./models-dev.js";
8
9
  const HERE = path.dirname(fileURLToPath(import.meta.url));
9
10
  /** Where a user's own catalog lives; overrides the bundled one. */
10
11
  export function userCatalogPath() {
@@ -51,7 +52,15 @@ export async function loadCatalog(extraPaths = []) {
51
52
  const refined = new Map((await refineReasoning(guessed, catalog.providers)).map((m) => [m.id, m]));
52
53
  catalog.models = catalog.models.map((m) => refined.get(m.id) ?? m);
53
54
  }
54
- catalog.models.push(...(await builtinModels(catalog.providers, { existing: catalog.models })));
55
+ const listed = await listedProviders(userCatalogPath());
56
+ catalog.models.push(...(await builtinModels(catalog.providers, {
57
+ existing: catalog.models,
58
+ listed,
59
+ })));
60
+ // models.dev fills in under pi-ai: every model either snapshot knows,
61
+ // pi-ai's entry where both do. See models-dev.ts.
62
+ const taken = new Set(catalog.models.flatMap((m) => [m.id, `${m.provider} ${m.model}`]));
63
+ catalog.models.push(...modelsDevSeeds(catalog.providers, await loadModelsDev(), taken, listed));
55
64
  }
56
65
  return catalog;
57
66
  }
@@ -94,6 +103,9 @@ export function parsePatch(raw, source = "catalog") {
94
103
  ...(typeof provider["piProvider"] === "string"
95
104
  ? { piProvider: provider["piProvider"] }
96
105
  : {}),
106
+ ...(typeof provider["modelsDev"] === "string"
107
+ ? { modelsDev: provider["modelsDev"] }
108
+ : {}),
97
109
  ...(typeof provider["popular"] === "boolean" ? { popular: provider["popular"] } : {}),
98
110
  ...(typeof provider["recommended"] === "boolean"
99
111
  ? { recommended: provider["recommended"] }
@@ -172,6 +184,7 @@ export function finalize(patch) {
172
184
  ...(provider.headers ? { headers: provider.headers } : {}),
173
185
  ...(provider.discovery ? { discovery: provider.discovery } : {}),
174
186
  ...(provider.piProvider ? { piProvider: provider.piProvider } : {}),
187
+ ...(provider.modelsDev ? { modelsDev: provider.modelsDev } : {}),
175
188
  ...(provider.popular !== undefined ? { popular: provider.popular } : {}),
176
189
  ...(provider.recommended !== undefined ? { recommended: provider.recommended } : {}),
177
190
  ...(provider.description !== undefined ? { description: provider.description } : {}),
@@ -211,6 +224,7 @@ export function normalizeModel(entry) {
211
224
  provider: value["provider"],
212
225
  model: value["model"],
213
226
  displayName: typeof value["displayName"] === "string" ? value["displayName"] : value["model"],
227
+ ...(asNumber(value["releasedAt"]) !== undefined ? { releasedAt: asNumber(value["releasedAt"]) } : {}),
214
228
  contextWindow: asNumber(value["contextWindow"]) ?? 128_000,
215
229
  maxOutputTokens: asNumber(value["maxOutputTokens"]) ?? 8_192,
216
230
  supportsTools: value["supportsTools"] !== false,
@@ -240,6 +254,23 @@ export function normalizeModel(entry) {
240
254
  : {}),
241
255
  };
242
256
  }
257
+ /**
258
+ * Providers whose own `/models` listing is on file.
259
+ *
260
+ * For those the listing is the roster, and the pi-ai snapshot is a build-time
261
+ * copy of an older one: filling in from it would bring back exactly the models
262
+ * the vendor has since withdrawn.
263
+ */
264
+ async function listedProviders(file) {
265
+ try {
266
+ const parsed = parseJson(await readFile(file, "utf8"));
267
+ const record = parsed.ok ? asRecord(parsed.value["discovered"]) : undefined;
268
+ return new Set(Object.keys(record ?? {}));
269
+ }
270
+ catch {
271
+ return new Set();
272
+ }
273
+ }
243
274
  async function readCatalogFile(file) {
244
275
  let raw;
245
276
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/providers/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/providers/catalog.ts"],"names":[],"mappings":"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"}
@@ -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": ["gpt-5.3-codex-spark", "gpt-5.4", "gpt-5.4-mini"],
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
- "minimax": {
338
- "label": "MiniMax",
249
+ "huggingface": {
250
+ "label": "Hugging Face",
339
251
  "protocol": "openai-chat",
340
- "baseUrl": "https://api.minimax.chat/v1",
252
+ "baseUrl": "https://router.huggingface.co/v1",
341
253
  "envVars": [
342
- "MINIMAX_API_KEY"
254
+ "HF_TOKEN"
343
255
  ],
344
256
  "discovery": "openai",
345
- "docsUrl": "https://platform.minimaxi.com/user-center/basic-information/interface-key",
346
- "description": "MiniMax official API"
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
  }