oricore 1.4.0 → 1.5.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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  __toESM,
3
3
  require_undici
4
- } from "./chunk-SXDGT4YB.js";
4
+ } from "./chunk-DO76AL42.js";
5
5
 
6
6
  // src/core/history.ts
7
7
  import createDebug7 from "debug";
@@ -929,6 +929,7 @@ async function runLoop(opts) {
929
929
  request: result.request,
930
930
  response: result.response
931
931
  });
932
+ let finishChunkReceived = false;
932
933
  for await (const chunk of result.stream) {
933
934
  if (opts.signal?.aborted) {
934
935
  return createCancelError();
@@ -960,6 +961,7 @@ async function runLoop(opts) {
960
961
  });
961
962
  break;
962
963
  case "finish":
964
+ finishChunkReceived = true;
963
965
  lastUsage = Usage.fromEventUsage(chunk.usage);
964
966
  totalUsage.add(lastUsage);
965
967
  if (toolCalls.length === 0 && text.trim() === "") {
@@ -998,6 +1000,13 @@ async function runLoop(opts) {
998
1000
  break;
999
1001
  }
1000
1002
  }
1003
+ if (!finishChunkReceived && toolCalls.length === 0 && text.trim() === "") {
1004
+ const error = new Error(
1005
+ "Empty response: stream ended without any chunks"
1006
+ );
1007
+ error.isRetryable = true;
1008
+ throw error;
1009
+ }
1001
1010
  break;
1002
1011
  } catch (error) {
1003
1012
  const nextRetryCount = retryCount + 1;
@@ -1165,6 +1174,8 @@ async function runLoop(opts) {
1165
1174
  }
1166
1175
  }
1167
1176
  };
1177
+ const approvedToolUses = [];
1178
+ let earlyReturn = null;
1168
1179
  for (const toolCall of toolCalls) {
1169
1180
  let toolUse = {
1170
1181
  name: toolCall.toolName,
@@ -1188,25 +1199,10 @@ async function runLoop(opts) {
1188
1199
  }
1189
1200
  }
1190
1201
  if (approved) {
1191
- toolCallsCount++;
1192
1202
  if (updatedParams) {
1193
1203
  toolUse.params = { ...toolUse.params, ...updatedParams };
1194
1204
  }
1195
- let toolResult = await opts.tools.invoke(
1196
- toolUse.name,
1197
- JSON.stringify(toolUse.params),
1198
- toolUse.callId
1199
- );
1200
- if (opts.onToolResult) {
1201
- toolResult = await opts.onToolResult(toolUse, toolResult, approved);
1202
- }
1203
- toolResults.push({
1204
- toolCallId: toolUse.callId,
1205
- toolName: toolUse.name,
1206
- input: toolUse.params,
1207
- result: toolResult
1208
- });
1209
- turnsCount--;
1205
+ approvedToolUses.push(toolUse);
1210
1206
  } else {
1211
1207
  let message = "Error: Tool execution was denied by user.";
1212
1208
  if (denyReason) {
@@ -1217,7 +1213,7 @@ async function runLoop(opts) {
1217
1213
  isError: true
1218
1214
  };
1219
1215
  if (opts.onToolResult) {
1220
- toolResult = await opts.onToolResult(toolUse, toolResult, approved);
1216
+ toolResult = await opts.onToolResult(toolUse, toolResult, false);
1221
1217
  }
1222
1218
  toolResults.push({
1223
1219
  toolCallId: toolUse.callId,
@@ -1225,8 +1221,8 @@ async function runLoop(opts) {
1225
1221
  input: toolUse.params,
1226
1222
  result: toolResult
1227
1223
  });
1228
- await addDeniedResultsForRemainingTools();
1229
1224
  if (!denyReason) {
1225
+ await addDeniedResultsForRemainingTools();
1230
1226
  await history.addMessage({
1231
1227
  role: "tool",
1232
1228
  content: toolResults.map(
@@ -1238,7 +1234,7 @@ async function runLoop(opts) {
1238
1234
  )
1239
1235
  )
1240
1236
  });
1241
- return {
1237
+ earlyReturn = {
1242
1238
  success: false,
1243
1239
  error: {
1244
1240
  type: "tool_denied",
@@ -1250,9 +1246,60 @@ async function runLoop(opts) {
1250
1246
  }
1251
1247
  }
1252
1248
  };
1253
- } else {
1254
1249
  break;
1255
1250
  }
1251
+ await addDeniedResultsForRemainingTools();
1252
+ break;
1253
+ }
1254
+ }
1255
+ if (earlyReturn) {
1256
+ return earlyReturn;
1257
+ }
1258
+ if (approvedToolUses.length > 0) {
1259
+ const executionResults = await Promise.allSettled(
1260
+ approvedToolUses.map(async (toolUse) => {
1261
+ let toolResult = await opts.tools.invoke(
1262
+ toolUse.name,
1263
+ JSON.stringify(toolUse.params),
1264
+ toolUse.callId
1265
+ );
1266
+ if (opts.onToolResult) {
1267
+ toolResult = await opts.onToolResult(toolUse, toolResult, true);
1268
+ }
1269
+ return {
1270
+ toolCallId: toolUse.callId,
1271
+ toolName: toolUse.name,
1272
+ input: toolUse.params,
1273
+ result: toolResult
1274
+ };
1275
+ })
1276
+ );
1277
+ toolCallsCount += approvedToolUses.length;
1278
+ turnsCount -= approvedToolUses.length;
1279
+ for (let i = 0; i < executionResults.length; i++) {
1280
+ const settledResult = executionResults[i];
1281
+ if (settledResult.status === "fulfilled") {
1282
+ toolResults.push(settledResult.value);
1283
+ } else {
1284
+ const failedToolUse = approvedToolUses[i];
1285
+ let errorResult = {
1286
+ llmContent: `Tool execution error: ${settledResult.reason instanceof Error ? settledResult.reason.message : String(settledResult.reason)}`,
1287
+ isError: true
1288
+ };
1289
+ if (opts.onToolResult) {
1290
+ errorResult = await opts.onToolResult(
1291
+ failedToolUse,
1292
+ errorResult,
1293
+ true
1294
+ );
1295
+ }
1296
+ toolResults.push({
1297
+ toolCallId: failedToolUse.callId,
1298
+ toolName: failedToolUse.name,
1299
+ input: failedToolUse.params,
1300
+ result: errorResult
1301
+ });
1302
+ }
1256
1303
  }
1257
1304
  }
1258
1305
  if (opts.signal?.aborted) {
@@ -1614,6 +1661,22 @@ var models = {
1614
1661
  open_weights: false,
1615
1662
  limit: { context: 2e5, output: 65536 }
1616
1663
  },
1664
+ "gemini-3.1-pro-preview": {
1665
+ name: "Gemini 3.1 Pro Preview",
1666
+ attachment: true,
1667
+ reasoning: true,
1668
+ temperature: true,
1669
+ tool_call: true,
1670
+ knowledge: "2025-01",
1671
+ release_date: "2026-02-19",
1672
+ last_updated: "2026-02-19",
1673
+ modalities: {
1674
+ input: ["text", "image", "audio", "video", "pdf"],
1675
+ output: ["text"]
1676
+ },
1677
+ open_weights: false,
1678
+ limit: { context: 1048576, output: 65536 }
1679
+ },
1617
1680
  "gemini-3-flash-preview": {
1618
1681
  name: "Gemini 3 Flash Preview",
1619
1682
  attachment: true,
@@ -1900,6 +1963,19 @@ var models = {
1900
1963
  open_weights: false,
1901
1964
  limit: { context: 4e5, output: 128e3 }
1902
1965
  },
1966
+ "gpt-5.3-codex": {
1967
+ name: "GPT-5.3 Codex",
1968
+ attachment: true,
1969
+ reasoning: true,
1970
+ temperature: false,
1971
+ tool_call: true,
1972
+ knowledge: "2025-08-31",
1973
+ release_date: "2026-02-05",
1974
+ last_updated: "2026-02-05",
1975
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
1976
+ open_weights: false,
1977
+ limit: { context: 4e5, output: 128e3 }
1978
+ },
1903
1979
  "gpt-4.1": {
1904
1980
  name: "GPT-4.1",
1905
1981
  attachment: true,
@@ -2082,6 +2158,19 @@ var models = {
2082
2158
  open_weights: true,
2083
2159
  limit: { context: 204800, output: 131072 }
2084
2160
  },
2161
+ "glm-5": {
2162
+ name: "GLM-5",
2163
+ attachment: false,
2164
+ reasoning: true,
2165
+ temperature: true,
2166
+ tool_call: true,
2167
+ knowledge: "2025-06",
2168
+ release_date: "2026-02-10",
2169
+ last_updated: "2026-02-10",
2170
+ modalities: { input: ["text"], output: ["text"] },
2171
+ open_weights: true,
2172
+ limit: { context: 262144, output: 131072 }
2173
+ },
2085
2174
  "sonoma-dusk-alpha": {
2086
2175
  name: "Sonoma Dusk Alpha",
2087
2176
  attachment: true,
@@ -2160,6 +2249,33 @@ var models = {
2160
2249
  open_weights: false,
2161
2250
  limit: { context: 2e5, output: 64e3 }
2162
2251
  },
2252
+ "claude-opus-4-6": {
2253
+ name: "Claude Opus 4.6",
2254
+ attachment: true,
2255
+ reasoning: true,
2256
+ temperature: true,
2257
+ tool_call: true,
2258
+ knowledge: "2025-05-31",
2259
+ release_date: "2026-02-05",
2260
+ last_updated: "2026-02-05",
2261
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
2262
+ open_weights: false,
2263
+ limit: { context: 2e5, output: 128e3 }
2264
+ },
2265
+ "claude-sonnet-4-6": {
2266
+ name: "Claude Sonnet 4.6",
2267
+ shortName: "Sonnet 4.6",
2268
+ attachment: true,
2269
+ reasoning: true,
2270
+ temperature: true,
2271
+ tool_call: true,
2272
+ knowledge: "2025-07-31",
2273
+ release_date: "2026-02-17",
2274
+ last_updated: "2026-02-17",
2275
+ modalities: { input: ["text", "image", "pdf"], output: ["text"] },
2276
+ open_weights: false,
2277
+ limit: { context: 1e6, output: 64e3 }
2278
+ },
2163
2279
  "ling-1t": {
2164
2280
  name: "InclusionAI Ling-1T",
2165
2281
  attachment: true,
@@ -2302,6 +2418,32 @@ var models = {
2302
2418
  modalities: { input: ["text"], output: ["text"] },
2303
2419
  open_weights: true,
2304
2420
  limit: { context: 204800, output: 131072 }
2421
+ },
2422
+ "minimax-m2.5": {
2423
+ name: "MiniMax M2.5",
2424
+ attachment: false,
2425
+ reasoning: true,
2426
+ temperature: true,
2427
+ tool_call: true,
2428
+ knowledge: "",
2429
+ release_date: "2026-02-13",
2430
+ last_updated: "2026-02-13",
2431
+ modalities: { input: ["text"], output: ["text"] },
2432
+ open_weights: true,
2433
+ limit: { context: 204800, output: 131072 }
2434
+ },
2435
+ "minimax-m2.7": {
2436
+ name: "MiniMax M2.7",
2437
+ attachment: false,
2438
+ reasoning: true,
2439
+ temperature: true,
2440
+ tool_call: true,
2441
+ knowledge: "",
2442
+ release_date: "2026-03-18",
2443
+ last_updated: "2026-03-18",
2444
+ modalities: { input: ["text"], output: ["text"] },
2445
+ open_weights: true,
2446
+ limit: { context: 204800, output: 131072 }
2305
2447
  }
2306
2448
  };
2307
2449
 
@@ -2418,7 +2560,7 @@ function createProxyFetch(proxyUrl) {
2418
2560
  }
2419
2561
  return async (input, init) => {
2420
2562
  if (!undiciFetch) {
2421
- undiciFetch = (await import("./undici-DJO5UB2C.js")).fetch;
2563
+ undiciFetch = (await import("./undici-326ZBRKH.js")).fetch;
2422
2564
  }
2423
2565
  let url;
2424
2566
  let requestInit = init;
@@ -2465,36 +2607,6 @@ function withProxyConfig(config, provider) {
2465
2607
  return result;
2466
2608
  }
2467
2609
 
2468
- // src/utils/mergeSystemMessagesMiddleware.ts
2469
- var mergeSystemMessagesMiddleware = {
2470
- specificationVersion: "v3",
2471
- transformParams: async ({ params }) => {
2472
- const mergedPrompt = [];
2473
- let pendingSystemContent = [];
2474
- for (const msg of params.prompt) {
2475
- if (msg.role === "system") {
2476
- pendingSystemContent.push(msg.content);
2477
- } else {
2478
- if (pendingSystemContent.length > 0) {
2479
- mergedPrompt.push({
2480
- role: "system",
2481
- content: pendingSystemContent.join("\n\n")
2482
- });
2483
- pendingSystemContent = [];
2484
- }
2485
- mergedPrompt.push(msg);
2486
- }
2487
- }
2488
- if (pendingSystemContent.length > 0) {
2489
- mergedPrompt.push({
2490
- role: "system",
2491
- content: pendingSystemContent.join("\n\n")
2492
- });
2493
- }
2494
- return { ...params, prompt: mergedPrompt };
2495
- }
2496
- };
2497
-
2498
2610
  // src/core/model/providers.ts
2499
2611
  var defaultModelCreator = (name, provider) => {
2500
2612
  if (provider.id !== "openai") {
@@ -2602,7 +2714,8 @@ var providers = {
2602
2714
  "gpt-5-codex": models["gpt-5-codex"],
2603
2715
  "gpt-5.2": models["gpt-5.2"],
2604
2716
  "gpt-5.2-pro": models["gpt-5.2-pro"],
2605
- "gpt-5.2-codex": models["gpt-5.2-codex"]
2717
+ "gpt-5.2-codex": models["gpt-5.2-codex"],
2718
+ "gpt-5.3-codex": models["gpt-5.3-codex"]
2606
2719
  },
2607
2720
  createModel: openaiModelCreator
2608
2721
  },
@@ -2619,6 +2732,7 @@ var providers = {
2619
2732
  "gemini-2.5-flash-lite": models["gemini-2.5-flash-lite-preview-06-17"],
2620
2733
  "gemini-2.5-pro": models["gemini-2.5-pro"],
2621
2734
  "gemini-3-pro-preview": models["gemini-3-pro-preview"],
2735
+ "gemini-3.1-pro-preview": models["gemini-3.1-pro-preview"],
2622
2736
  "gemini-3-flash-preview": models["gemini-3-flash-preview"]
2623
2737
  },
2624
2738
  createModel(name, provider) {
@@ -2685,7 +2799,9 @@ var providers = {
2685
2799
  "claude-3-7-sonnet-20250219-thinking": models["claude-3-7-sonnet"],
2686
2800
  "claude-3-5-sonnet-20241022": models["claude-3-5-sonnet-20241022"],
2687
2801
  "claude-haiku-4-5": models["claude-haiku-4-5"],
2688
- "claude-opus-4-5": models["claude-opus-4-5"]
2802
+ "claude-opus-4-5": models["claude-opus-4-5"],
2803
+ "claude-opus-4-6": models["claude-opus-4-6"],
2804
+ "claude-sonnet-4-6": models["claude-sonnet-4-6"]
2689
2805
  },
2690
2806
  apiFormat: "anthropic",
2691
2807
  headers: {
@@ -2755,6 +2871,8 @@ var providers = {
2755
2871
  "anthropic/claude-opus-4": models["claude-4-opus"],
2756
2872
  "anthropic/claude-opus-4.1": models["claude-4.1-opus"],
2757
2873
  "anthropic/claude-opus-4.5": models["claude-opus-4-5"],
2874
+ "anthropic/claude-sonnet-4.6": models["claude-sonnet-4-6"],
2875
+ "anthropic/claude-opus-4.6": models["claude-opus-4-6"],
2758
2876
  "deepseek/deepseek-r1-0528": models["deepseek-r1-0528"],
2759
2877
  "deepseek/deepseek-chat-v3-0324": models["deepseek-v3-0324"],
2760
2878
  "deepseek/deepseek-chat-v3.1": models["deepseek-v3-1"],
@@ -2780,6 +2898,7 @@ var providers = {
2780
2898
  "openai/gpt-5.2": models["gpt-5.2"],
2781
2899
  "openai/gpt-5.2-pro": models["gpt-5.2-pro"],
2782
2900
  "openai/gpt-5.2-codex": models["gpt-5.2-codex"],
2901
+ "openai/gpt-5.3-codex": models["gpt-5.3-codex"],
2783
2902
  "google/gemini-3-flash-preview": models["gemini-3-flash-preview"],
2784
2903
  "google/gemini-3-pro-preview": models["gemini-3-pro-preview"],
2785
2904
  "moonshotai/kimi-k2": models["kimi-k2"],
@@ -2797,7 +2916,9 @@ var providers = {
2797
2916
  "z-ai/glm-4.6": models["glm-4.6"],
2798
2917
  "z-ai/glm-4.6v": models["glm-4.6v"],
2799
2918
  "z-ai/glm-4.7": models["glm-4.7"],
2919
+ "z-ai/glm-5": models["glm-5"],
2800
2920
  "minimax/minimax-m2": models["minimax-m2"],
2921
+ "minimax/minimax-m2.5": models["minimax-m2.5"],
2801
2922
  "openrouter/sherlock-dash-alpha": models["sherlock-dash-alpha"],
2802
2923
  "openrouter/sherlock-think-alpha": models["sherlock-think-alpha"],
2803
2924
  "xiaomi/mimo-v2-flash:free": models["mimo-v2-flash"]
@@ -2816,43 +2937,6 @@ var providers = {
2816
2937
  ).chat(name);
2817
2938
  }
2818
2939
  },
2819
- iflow: {
2820
- id: "iflow",
2821
- source: "built-in",
2822
- env: ["IFLOW_API_KEY"],
2823
- name: "iFlow",
2824
- api: "https://apis.iflow.cn/v1/",
2825
- doc: "https://iflow.cn/",
2826
- models: {
2827
- "qwen3-coder-plus": models["qwen3-coder-plus"],
2828
- "kimi-k2": models["kimi-k2"],
2829
- "kimi-k2-0905": models["kimi-k2-0905"],
2830
- "deepseek-v3": models["deepseek-v3-0324"],
2831
- "deepseek-v3.2": models["deepseek-v3-2-exp"],
2832
- "deepseek-r1": models["deepseek-r1-0528"],
2833
- "glm-4.6": models["glm-4.6"],
2834
- "glm-4.7": models["glm-4.7"],
2835
- "minimax-m2.1": models["minimax-m2.1"],
2836
- "qwen3-max": models["qwen3-max"]
2837
- },
2838
- createModel: createModelCreatorCompatible({
2839
- fetch: (url, options) => {
2840
- return fetch(url, {
2841
- ...options,
2842
- headers: {
2843
- ...options.headers,
2844
- "user-agent": "iFlow-Cli"
2845
- }
2846
- });
2847
- },
2848
- middlewares: [
2849
- mergeSystemMessagesMiddleware,
2850
- extractReasoningMiddleware({
2851
- tagName: "think"
2852
- })
2853
- ]
2854
- })
2855
- },
2856
2940
  moonshotai: {
2857
2941
  id: "moonshotai",
2858
2942
  source: "built-in",
@@ -2929,7 +3013,12 @@ var providers = {
2929
3013
  "deepseek-ai/DeepSeek-R1": models["deepseek-r1-0528"],
2930
3014
  "deepseek-ai/DeepSeek-V3.1": models["deepseek-v3-1"],
2931
3015
  "deepseek-ai/DeepSeek-V3": models["deepseek-v3-0324"],
2932
- "zai-org/GLM-4.5": models["glm-4.5"]
3016
+ "zai-org/GLM-4.5": models["glm-4.5"],
3017
+ "Pro/moonshotai/Kimi-K2.5": models["kimi-k2-5"],
3018
+ "Pro/zai-org/GLM-5": models["glm-5"],
3019
+ "Pro/zai-org/GLM-4.7": models["glm-4.7"],
3020
+ "Pro/MiniMaxAI/MiniMax-M2.5": models["minimax-m2.5"],
3021
+ "Pro/deepseek-ai/DeepSeek-V3.2": models["deepseek-v3.2"]
2933
3022
  },
2934
3023
  createModel: defaultModelCreator
2935
3024
  },
@@ -2946,6 +3035,7 @@ var providers = {
2946
3035
  "ZhipuAI/GLM-4.5": models["glm-4.5"],
2947
3036
  "ZhipuAI/GLM-4.5V": models["glm-4.5v"],
2948
3037
  "ZhipuAI/GLM-4.6": models["glm-4.6"],
3038
+ "ZhipuAI/GLM-5": models["glm-5"],
2949
3039
  "deepseek-ai/DeepSeek-V3.2": models["deepseek-v3.2"],
2950
3040
  "deepseek-ai/DeepSeek-V3.2-Speciale": models["deepseek-v3.2-speciale"]
2951
3041
  },
@@ -2980,7 +3070,8 @@ var providers = {
2980
3070
  "glm-4.5v": models["glm-4.5v"],
2981
3071
  "glm-4.6": models["glm-4.6"],
2982
3072
  "glm-4.6v": models["glm-4.6v"],
2983
- "glm-4.7": models["glm-4.7"]
3073
+ "glm-4.7": models["glm-4.7"],
3074
+ "glm-5": models["glm-5"]
2984
3075
  },
2985
3076
  createModel: defaultModelCreator
2986
3077
  },
@@ -2998,10 +3089,31 @@ var providers = {
2998
3089
  "glm-4.5": models["glm-4.5"],
2999
3090
  "glm-4.5-flash": models["glm-4.5-flash"],
3000
3091
  "glm-4.6v": models["glm-4.6v"],
3001
- "glm-4.7": models["glm-4.7"]
3092
+ "glm-4.7": models["glm-4.7"],
3093
+ "glm-5": models["glm-5"]
3002
3094
  },
3003
3095
  createModel: defaultModelCreator
3004
3096
  },
3097
+ "bailian-coding-plan": {
3098
+ id: "bailian-coding-plan",
3099
+ source: "built-in",
3100
+ env: ["BAILIAN_CODING_API_KEY"],
3101
+ name: "BaiLian Coding Plan",
3102
+ api: "https://coding.dashscope.aliyuncs.com/apps/anthropic/v1",
3103
+ doc: "https://www.aliyun.com/benefit/scene/codingplan",
3104
+ apiFormat: "anthropic",
3105
+ models: {
3106
+ "qwen3.5-plus": models["qwen3-5-plus"],
3107
+ "qwen3-max-2026-01-23": models["qwen3-max"],
3108
+ "qwen3-coder-next": models["qwen3-coder-plus"],
3109
+ "qwen3-coder-plus": models["qwen3-coder-plus"],
3110
+ "MiniMax-M2.5": models["minimax-m2.5"],
3111
+ "glm-5": models["glm-5"],
3112
+ "glm-4.7": models["glm-4.7"],
3113
+ "kimi-k2.5": models["kimi-k2-5"]
3114
+ },
3115
+ createModel: defaultAnthropicModelCreator
3116
+ },
3005
3117
  zhipuai: {
3006
3118
  id: "zhipuai",
3007
3119
  source: "built-in",
@@ -3016,7 +3128,8 @@ var providers = {
3016
3128
  "glm-4.5": models["glm-4.5"],
3017
3129
  "glm-4.5-flash": models["glm-4.5-flash"],
3018
3130
  "glm-4.6v": models["glm-4.6v"],
3019
- "glm-4.7": models["glm-4.7"]
3131
+ "glm-4.7": models["glm-4.7"],
3132
+ "glm-5": models["glm-5"]
3020
3133
  },
3021
3134
  createModel: defaultModelCreator
3022
3135
  },
@@ -3041,15 +3154,21 @@ var providers = {
3041
3154
  "openai/gpt-5.1-codex-mini": models["gpt-5.1-codex-mini"],
3042
3155
  "openai/gpt-5.2": models["gpt-5.2"],
3043
3156
  "openai/gpt-5.2-pro": models["gpt-5.2-pro"],
3157
+ "openai/gpt-5.2-codex": models["gpt-5.2-codex"],
3158
+ "openai/gpt-5.3-codex": models["gpt-5.3-codex"],
3044
3159
  "anthropic/claude-sonnet-4.5": models["claude-4-5-sonnet"],
3045
3160
  "anthropic/claude-opus-4.1": models["claude-4.1-opus"],
3046
3161
  "anthropic/claude-opus-4.5": models["claude-opus-4-5"],
3162
+ "anthropic/claude-opus-4.6": models["claude-opus-4-6"],
3047
3163
  "z-ai/glm-4.6": models["glm-4.6"],
3048
3164
  "z-ai/glm-4.6v": models["glm-4.6v"],
3049
3165
  "z-ai/glm-4.6v-flash": models["glm-4.6v"],
3166
+ "z-ai/glm-4.7": models["glm-4.7"],
3167
+ "z-ai/glm-5": models["glm-5"],
3050
3168
  "deepseek/deepseek-v3.2-speciale": models["deepseek-v3.2-speciale"],
3051
3169
  "deepseek/deepseek-chat": models["deepseek-v3-2-exp"],
3052
- "deepseek/deepseek-reasoner": models["deepseek-r1-0528"]
3170
+ "deepseek/deepseek-reasoner": models["deepseek-r1-0528"],
3171
+ "minimax/minimax-m2.5": models["minimax-m2.5"]
3053
3172
  },
3054
3173
  headers: {
3055
3174
  "X-Title": "OriCore",
@@ -3065,7 +3184,9 @@ var providers = {
3065
3184
  doc: "https://platform.minimaxi.io/docs/guides/quickstart",
3066
3185
  models: {
3067
3186
  "minimax-m2": models["minimax-m2"],
3068
- "minimax-m2.1": models["minimax-m2.1"]
3187
+ "minimax-m2.1": models["minimax-m2.1"],
3188
+ "minimax-m2.5": models["minimax-m2.5"],
3189
+ "minimax-m2.7": models["minimax-m2.7"]
3069
3190
  },
3070
3191
  createModel(name, provider) {
3071
3192
  const baseURL = getProviderBaseURL(provider);
@@ -3084,7 +3205,9 @@ var providers = {
3084
3205
  doc: "https://platform.minimaxi.com/docs/guides/quickstart",
3085
3206
  models: {
3086
3207
  "minimax-m2": models["minimax-m2"],
3087
- "minimax-m2.1": models["minimax-m2.1"]
3208
+ "minimax-m2.1": models["minimax-m2.1"],
3209
+ "minimax-m2.5": models["minimax-m2.5"],
3210
+ "minimax-m2.7": models["minimax-m2.7"]
3088
3211
  },
3089
3212
  createModel(name, provider) {
3090
3213
  const baseURL = getProviderBaseURL(provider);
@@ -3213,7 +3336,9 @@ var providers = {
3213
3336
  "zai/glm-4.7": models["glm-4.7"],
3214
3337
  "moonshotai/kimi-k2-thinking": models["kimi-k2-thinking"],
3215
3338
  "moonshotai/kimi-k2.5": models["kimi-k2.5"],
3216
- "deepseek/deepseek-chat-v3.2": models["deepseek-v3-2-exp"]
3339
+ "deepseek/deepseek-chat-v3.2": models["deepseek-v3-2-exp"],
3340
+ "openai/gpt-oss-120b": models["gpt-oss-120b"],
3341
+ "xiaomimimo/mimo-v2-flash": models["mimo-v2-flash"]
3217
3342
  },
3218
3343
  createModel: defaultModelCreator
3219
3344
  },
@@ -3233,12 +3358,15 @@ var providers = {
3233
3358
  "claude-4-5-sonnet": models["claude-4-5-sonnet"],
3234
3359
  "claude-haiku-4-5": models["claude-haiku-4-5"],
3235
3360
  "claude-opus-4-5": models["claude-opus-4-5"],
3361
+ "claude-sonnet-4-6": models["claude-sonnet-4-6"],
3362
+ "claude-opus-4-6": models["claude-opus-4-6"],
3236
3363
  "gpt-5.1": models["gpt-5.1"],
3237
3364
  "gpt-5.1-codex-max": models["gpt-5.1-codex-max"],
3238
3365
  "gpt-5.1-codex": models["gpt-5.1-codex"],
3239
3366
  "gpt-5.1-codex-mini": models["gpt-5.1-codex-mini"],
3240
3367
  "gpt-5.2": models["gpt-5.2"],
3241
- "gpt-5.2-codex": models["gpt-5.2-codex"]
3368
+ "gpt-5.2-codex": models["gpt-5.2-codex"],
3369
+ "gpt-5.3-codex": models["gpt-5.3-codex"]
3242
3370
  },
3243
3371
  createModel: (name, provider) => {
3244
3372
  if (name.startsWith("claude-") || name.startsWith("gemini-")) {
@@ -3249,6 +3377,38 @@ var providers = {
3249
3377
  }
3250
3378
  return defaultModelCreator(name, provider);
3251
3379
  }
3380
+ },
3381
+ kilo: {
3382
+ id: "kilo",
3383
+ source: "built-in",
3384
+ env: ["KILO_API_KEY"],
3385
+ name: "Kilo",
3386
+ api: "https://api.kilo.ai/api/gateway",
3387
+ doc: "https://kilo.ai",
3388
+ apiFormat: "openai",
3389
+ models: {
3390
+ "z-ai/glm-5": models["glm-5"],
3391
+ "z-ai/glm-5:free": models["glm-5"],
3392
+ "z-ai/glm-4.7": models["glm-4.7"],
3393
+ "anthropic/claude-opus-4.6": models["claude-opus-4-6"],
3394
+ "anthropic/claude-sonnet-4.6": models["claude-sonnet-4-6"],
3395
+ "anthropic/claude-haiku-4.5": models["claude-haiku-4-5"],
3396
+ "anthropic/claude-sonnet-4.5": models["claude-4-5-sonnet"],
3397
+ "google/gemini-3-flash-preview": models["gemini-3-flash-preview"],
3398
+ "google/gemini-3-pro-preview": models["gemini-3-pro-preview"],
3399
+ "minimax/minimax-m2.5:free": models["minimax-m2.5"],
3400
+ "minimax/minimax-m2.5": models["minimax-m2.5"],
3401
+ "moonshotai/kimi-k2.5": models["kimi-k2-5"]
3402
+ },
3403
+ createModel: (name, provider) => {
3404
+ if (name.includes("claude-")) {
3405
+ return defaultAnthropicModelCreator(name, provider);
3406
+ }
3407
+ if (name.includes("gemini-")) {
3408
+ return defaultAnthropicModelCreator(name, provider);
3409
+ }
3410
+ return defaultModelCreator(name, provider);
3411
+ }
3252
3412
  }
3253
3413
  };
3254
3414
 
@@ -3882,6 +4042,17 @@ function transformVariants(model, provider) {
3882
4042
  return {};
3883
4043
  }
3884
4044
  const id = (model.id || "").toLowerCase();
4045
+ if (provider.id === "bailian-coding-plan") {
4046
+ if (id.includes("kimi") || id.includes("minimax") || id.includes("glm")) {
4047
+ return {
4048
+ on: {
4049
+ thinking: {
4050
+ type: "enabled"
4051
+ }
4052
+ }
4053
+ };
4054
+ }
4055
+ }
3885
4056
  if (id.includes("deepseek") || id.includes("minimax") || id.includes("glm") || id.includes("mistral") || // id.includes("kimi") ||
3886
4057
  id.includes("grok")) {
3887
4058
  return {};
@@ -4554,6 +4725,9 @@ function stripAnsi(string) {
4554
4725
  if (typeof string !== "string") {
4555
4726
  throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
4556
4727
  }
4728
+ if (!string.includes("\x1B") && !string.includes("\x9B")) {
4729
+ return string;
4730
+ }
4557
4731
  return string.replace(regex, "");
4558
4732
  }
4559
4733
 
@@ -7722,6 +7896,18 @@ function normalizeMessagesForCompact(messages) {
7722
7896
  content: "[Tool operations completed]"
7723
7897
  };
7724
7898
  }
7899
+ if (message.role === "user") {
7900
+ if (Array.isArray(message.content)) {
7901
+ const filteredContent = message.content.filter(
7902
+ (part) => part.type === "text"
7903
+ );
7904
+ return {
7905
+ ...message,
7906
+ content: filteredContent.length > 0 ? filteredContent : message.content
7907
+ };
7908
+ }
7909
+ return message;
7910
+ }
7725
7911
  return message;
7726
7912
  }).filter((message) => {
7727
7913
  if (typeof message.content === "string") {
@@ -8312,4 +8498,4 @@ export {
8312
8498
  Tools,
8313
8499
  createLSTool
8314
8500
  };
8315
- //# sourceMappingURL=chunk-COJ5APNY.js.map
8501
+ //# sourceMappingURL=chunk-4QYFQSAC.js.map