jinzd-ai-cli 0.4.261 → 0.4.263

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 (42) hide show
  1. package/README.md +29 -22
  2. package/README.zh-CN.md +32 -25
  3. package/THIRD_PARTY_NOTICES.md +88 -0
  4. package/dist/{batch-YUPAC4CK.js → batch-AN47AYCZ.js} +2 -2
  5. package/dist/{chunk-XZNRZGG2.js → chunk-3OBY7WSS.js} +1 -0
  6. package/dist/{chunk-R6DXWVVN.js → chunk-3RHY2HF7.js} +1 -1
  7. package/dist/{chunk-T7R7ILYT.js → chunk-5K2LFD7D.js} +1 -1
  8. package/dist/{chunk-KFNQESEG.js → chunk-7YCA2BD3.js} +1 -1
  9. package/dist/{chunk-NOB2OPQI.js → chunk-B27MLWFJ.js} +4 -4
  10. package/dist/{chunk-HU3IYBU5.js → chunk-GKI7B4BD.js} +7 -6
  11. package/dist/{chunk-Z5TCAE4L.js → chunk-GMZTY7DA.js} +4 -4
  12. package/dist/{chunk-GC4KA5LF.js → chunk-MJICIIBW.js} +1 -1
  13. package/dist/{chunk-YXMBP567.js → chunk-MTZ6XHJD.js} +2 -2
  14. package/dist/{chunk-DQY2DDGS.js → chunk-QG4NG7KJ.js} +1 -1
  15. package/dist/{chunk-W5XUZYQE.js → chunk-QMB7QYZC.js} +1 -1
  16. package/dist/{chunk-OIOTHBDB.js → chunk-TL5MD5XU.js} +49 -25
  17. package/dist/{chunk-323S2X5I.js → chunk-VKBGOFEO.js} +1 -1
  18. package/dist/{chunk-HGTDI5ME.js → chunk-VUZAKIZ5.js} +1 -1
  19. package/dist/{chunk-H6FND2UG.js → chunk-WM4VTGAF.js} +3 -1
  20. package/dist/{chunk-KQQHMGK7.js → chunk-XST4N2JM.js} +1 -1
  21. package/dist/{chunk-EZ6QLHOS.js → chunk-YRD6M5XI.js} +30 -5
  22. package/dist/{ci-FX26BNT2.js → ci-JTO7LN5S.js} +6 -6
  23. package/dist/{ci-format-GEWIAIZD.js → ci-format-2VGHOLBA.js} +2 -2
  24. package/dist/{constants-YN4B6C7B.js → constants-HLSJL5HQ.js} +1 -1
  25. package/dist/{doctor-cli-PXGXZYQB.js → doctor-cli-JML4FGH4.js} +6 -6
  26. package/dist/electron-server.js +112 -41
  27. package/dist/{hub-RCANK6SK.js → hub-6EYFGJRT.js} +1 -1
  28. package/dist/index.js +107 -58
  29. package/dist/{persistent-memory-P3COUZZM.js → persistent-memory-ANIMO5CF.js} +2 -2
  30. package/dist/{persistent-memory-UARSSYAA.js → persistent-memory-MPBPSZDN.js} +2 -2
  31. package/dist/{pr-7LQTAUFK.js → pr-XE7NGT6U.js} +6 -6
  32. package/dist/{run-tests-YNHESHYY.js → run-tests-ME5KED57.js} +2 -2
  33. package/dist/{run-tests-7RYU4BK5.js → run-tests-TF7UPUWW.js} +2 -2
  34. package/dist/{server-YZ37TL46.js → server-BIYJEJK3.js} +6 -6
  35. package/dist/{server-SSAWGNT7.js → server-VKA4FR2Z.js} +38 -19
  36. package/dist/{task-orchestrator-ZFL4E6NZ.js → task-orchestrator-2RAKLFWN.js} +6 -6
  37. package/dist/{usage-PDKM7J75.js → usage-5F5Q3GGR.js} +4 -4
  38. package/dist/web/client/actions.js +12 -7
  39. package/dist/web/client/app.js +5 -37
  40. package/dist/web/client/sidebar-tabs.js +48 -0
  41. package/dist/web/client/sw.js +1 -1
  42. package/package.json +13 -10
@@ -34,14 +34,14 @@ import {
34
34
  touchMemoryReferences,
35
35
  updateMemoryApproval,
36
36
  updateMemoryEntry
37
- } from "./chunk-T7R7ILYT.js";
37
+ } from "./chunk-5K2LFD7D.js";
38
38
  import {
39
39
  redactJson,
40
40
  scanString
41
41
  } from "./chunk-YVTASHS5.js";
42
42
  import {
43
43
  runTestsTool
44
- } from "./chunk-KFNQESEG.js";
44
+ } from "./chunk-7YCA2BD3.js";
45
45
  import {
46
46
  AGENTIC_BEHAVIOR_GUIDELINE,
47
47
  APP_NAME,
@@ -73,7 +73,7 @@ import {
73
73
  SUBAGENT_MAX_ROUNDS_LIMIT,
74
74
  VERSION,
75
75
  buildUserIdentityPrompt
76
- } from "./chunk-R6DXWVVN.js";
76
+ } from "./chunk-3RHY2HF7.js";
77
77
  import {
78
78
  hasSemanticIndex,
79
79
  semanticSearch
@@ -128,6 +128,8 @@ var ModelParamsSchema = z.object({
128
128
  timeout: z.number().int().positive().optional(),
129
129
  /** 是否启用深度思考(thinking)模式,Claude Sonnet/Opus、GLM-5 等 */
130
130
  thinking: z.boolean().optional(),
131
+ /** DeepSeek V4 reasoning effort. */
132
+ thinkingEffort: z.enum(["low", "high", "max"]).optional(),
131
133
  /** thinking 模式的 token 预算(最小 1024,仅 Claude Extended Thinking 使用) */
132
134
  thinkingBudget: z.number().int().min(1024).optional()
133
135
  });
@@ -2784,6 +2786,7 @@ async function runLeanAgentLoop(opts) {
2784
2786
  maxTokens: opts.chatParams?.maxTokens,
2785
2787
  timeout: opts.chatParams?.timeout,
2786
2788
  thinking: opts.chatParams?.thinking,
2789
+ thinkingEffort: opts.chatParams?.thinkingEffort,
2787
2790
  ...extraMessages.length > 0 ? { _extraMessages: extraMessages } : {}
2788
2791
  },
2789
2792
  opts.toolDefsForRound(round)
@@ -2954,6 +2957,14 @@ var OpenAICompatibleProvider = class extends BaseProvider {
2954
2957
  }
2955
2958
  return msgs;
2956
2959
  }
2960
+ /** Provider-specific request fields shared by all four chat paths. */
2961
+ buildChatRequestParams(request) {
2962
+ return {
2963
+ temperature: request.temperature,
2964
+ max_tokens: request.maxTokens,
2965
+ ...request.thinking ? { thinking: { type: "enabled" } } : {}
2966
+ };
2967
+ }
2957
2968
  /**
2958
2969
  * 非流式请求必须把 `request.signal` 交给 SDK —— 否则 Ctrl+C 完全无效。
2959
2970
  *
@@ -2970,10 +2981,8 @@ var OpenAICompatibleProvider = class extends BaseProvider {
2970
2981
  const response = await this.client.chat.completions.create({
2971
2982
  model: request.model,
2972
2983
  messages: this.buildMessages(request),
2973
- temperature: request.temperature,
2974
- max_tokens: request.maxTokens,
2975
- stream: false,
2976
- ...request.thinking ? { thinking: { type: "enabled" } } : {}
2984
+ ...this.buildChatRequestParams(request),
2985
+ stream: false
2977
2986
  }, {
2978
2987
  timeout: request.timeout ?? this.defaultTimeout,
2979
2988
  signal: request.signal
@@ -2996,12 +3005,10 @@ var OpenAICompatibleProvider = class extends BaseProvider {
2996
3005
  const stream = await this.client.chat.completions.create({
2997
3006
  model: request.model,
2998
3007
  messages: this.buildMessages(request),
2999
- temperature: request.temperature,
3000
- max_tokens: request.maxTokens,
3008
+ ...this.buildChatRequestParams(request),
3001
3009
  stream: true,
3002
3010
  // 请求末尾 usage chunk,供 token 统计使用
3003
- stream_options: { include_usage: true },
3004
- ...request.thinking ? { thinking: { type: "enabled" } } : {}
3011
+ stream_options: { include_usage: true }
3005
3012
  }, {
3006
3013
  timeout: request.timeout ?? this.defaultTimeout,
3007
3014
  signal: request.signal
@@ -3077,10 +3084,8 @@ var OpenAICompatibleProvider = class extends BaseProvider {
3077
3084
  messages: allMessages,
3078
3085
  tools: openaiTools,
3079
3086
  tool_choice: "auto",
3080
- temperature: request.temperature,
3081
- max_tokens: request.maxTokens,
3082
- stream: false,
3083
- ...request.thinking ? { thinking: { type: "enabled" } } : {}
3087
+ ...this.buildChatRequestParams(request),
3088
+ stream: false
3084
3089
  }, {
3085
3090
  timeout: request.timeout ?? this.defaultTimeout,
3086
3091
  // 非流式路径同样必须收 signal,否则 Ctrl+C 期间整个请求不可中断(见 chat() 上方注释)
@@ -3178,11 +3183,9 @@ var OpenAICompatibleProvider = class extends BaseProvider {
3178
3183
  messages: allMessages,
3179
3184
  tools: openaiTools,
3180
3185
  tool_choice: "auto",
3181
- temperature: request.temperature,
3182
- max_tokens: request.maxTokens,
3186
+ ...this.buildChatRequestParams(request),
3183
3187
  stream: true,
3184
- stream_options: { include_usage: true },
3185
- ...request.thinking ? { thinking: { type: "enabled" } } : {}
3188
+ stream_options: { include_usage: true }
3186
3189
  }, {
3187
3190
  timeout: request.timeout ?? this.defaultTimeout,
3188
3191
  signal: request.signal
@@ -3376,6 +3379,18 @@ Rules you MUST follow:
3376
3379
  - The system will detect and reject phantom claims. Each failed detection wastes a round. Be honest.`;
3377
3380
  var DeepSeekProvider = class extends OpenAICompatibleProvider {
3378
3381
  defaultBaseUrl = "https://api.deepseek.com/v1";
3382
+ buildChatRequestParams(request) {
3383
+ const thinkingEnabled = request.thinking === true;
3384
+ return {
3385
+ // DeepSeek ignores sampling controls in thinking mode; omit them to keep the
3386
+ // wire request unambiguous. Explicitly disable thinking otherwise because
3387
+ // V4 defaults it to enabled server-side.
3388
+ temperature: thinkingEnabled ? void 0 : request.temperature,
3389
+ max_tokens: request.maxTokens,
3390
+ thinking: { type: thinkingEnabled ? "enabled" : "disabled" },
3391
+ ...thinkingEnabled ? { reasoning_effort: request.thinkingEffort ?? "high" } : {}
3392
+ };
3393
+ }
3379
3394
  /** 禁用流式工具调用,确保 chatWithTools 覆写(代码块检测)生效 */
3380
3395
  enableStreamingToolCalls = false;
3381
3396
  /**
@@ -3396,14 +3411,14 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
3396
3411
  // ── V4 family (2026-04-23+):1M context,支持 Thinking / Non-Thinking 双模式 ──
3397
3412
  {
3398
3413
  id: "deepseek-v4-pro",
3399
- displayName: "DeepSeek V4 Pro (1.6T MoE, 49B active)",
3414
+ displayName: "DeepSeek V4 Pro (0813, 1.6T MoE, 49B active)",
3400
3415
  contextWindow: 1048576,
3401
3416
  supportsStreaming: true,
3402
3417
  supportsThinking: true
3403
3418
  },
3404
3419
  {
3405
3420
  id: "deepseek-v4-flash",
3406
- displayName: "DeepSeek V4 Flash (284B MoE, 13B active)",
3421
+ displayName: "DeepSeek V4 Flash (0731, 284B MoE, 13B active)",
3407
3422
  contextWindow: 1048576,
3408
3423
  supportsStreaming: true,
3409
3424
  supportsThinking: true
@@ -3991,6 +4006,18 @@ var BUILT_IN_PROVIDERS = [
3991
4006
  OpenRouterProvider,
3992
4007
  OllamaProvider
3993
4008
  ];
4009
+ function listBuiltInProviderMetadata() {
4010
+ return BUILT_IN_PROVIDERS.map((ProviderClass) => {
4011
+ const { info } = new ProviderClass();
4012
+ return {
4013
+ id: info.id,
4014
+ displayName: info.displayName,
4015
+ defaultModel: info.defaultModel,
4016
+ apiKeyEnvVar: info.apiKeyEnvVar,
4017
+ requiresApiKey: info.requiresApiKey
4018
+ };
4019
+ });
4020
+ }
3994
4021
  var ProviderRegistry = class {
3995
4022
  providers = /* @__PURE__ */ new Map();
3996
4023
  customConfigs = [];
@@ -4085,13 +4112,12 @@ var ProviderRegistry = class {
4085
4112
  return [...this.providers.values()];
4086
4113
  }
4087
4114
  listAll() {
4088
- const builtIn = BUILT_IN_PROVIDERS.map((P) => {
4089
- const p = new P();
4115
+ const builtIn = listBuiltInProviderMetadata().map((info) => {
4090
4116
  return {
4091
- id: p.info.id,
4092
- displayName: p.info.displayName,
4093
- configured: this.providers.has(p.info.id),
4094
- defaultModel: p.info.defaultModel,
4117
+ id: info.id,
4118
+ displayName: info.displayName,
4119
+ configured: this.providers.has(info.id),
4120
+ defaultModel: info.defaultModel,
4095
4121
  isCustom: false
4096
4122
  };
4097
4123
  });
@@ -11066,7 +11092,8 @@ async function runSubAgent(task, maxRounds, agentIndex, ctx, agent) {
11066
11092
  temperature: ctx.modelParams.temperature,
11067
11093
  maxTokens: ctx.modelParams.maxTokens,
11068
11094
  timeout: ctx.modelParams.timeout,
11069
- thinking: ctx.modelParams.thinking
11095
+ thinking: ctx.modelParams.thinking,
11096
+ thinkingEffort: ctx.modelParams.thinkingEffort
11070
11097
  },
11071
11098
  executeTools: (calls) => subExecutor.executeAll(calls),
11072
11099
  systemPromptForRound: () => subSystemPrompt,
@@ -13624,6 +13651,29 @@ function loadMemoryContent(configDir, maxChars) {
13624
13651
  }
13625
13652
 
13626
13653
  // src/core/pricing.ts
13654
+ var DEEPSEEK_CNY_PER_USD = 6.9;
13655
+ var DEEPSEEK_TIME_PRICING_EFFECTIVE_AT = /* @__PURE__ */ new Date("2026-08-16T16:00:00.000Z");
13656
+ function deepSeekCnyPricing(cacheRead, input, output) {
13657
+ return {
13658
+ cacheRead: cacheRead / DEEPSEEK_CNY_PER_USD,
13659
+ input: input / DEEPSEEK_CNY_PER_USD,
13660
+ output: output / DEEPSEEK_CNY_PER_USD
13661
+ };
13662
+ }
13663
+ function getDeepSeekV4Pricing(model, at) {
13664
+ const isPro = model.startsWith("deepseek-v4-pro");
13665
+ const isFlash = model.startsWith("deepseek-v4-flash");
13666
+ if (!isPro && !isFlash) return null;
13667
+ if (at < DEEPSEEK_TIME_PRICING_EFFECTIVE_AT) {
13668
+ return isPro ? deepSeekCnyPricing(0.025, 3, 6) : deepSeekCnyPricing(0.02, 1, 2);
13669
+ }
13670
+ const beijingHour = (at.getUTCHours() + 8) % 24;
13671
+ const isPeak = beijingHour >= 9 && beijingHour < 12 || beijingHour >= 14 && beijingHour < 18;
13672
+ if (isPro) {
13673
+ return isPeak ? deepSeekCnyPricing(0.3, 9, 27) : deepSeekCnyPricing(0.15, 4.5, 13.5);
13674
+ }
13675
+ return isPeak ? deepSeekCnyPricing(0.1, 3, 9) : deepSeekCnyPricing(0.05, 1.5, 4.5);
13676
+ }
13627
13677
  var PRICING_TABLE = {
13628
13678
  // ── Anthropic Claude ──────────────────────────────────────────
13629
13679
  "claude-opus-4-8": { input: 15, output: 75, cacheWrite: 18.75, cacheRead: 1.5 },
@@ -13667,8 +13717,6 @@ var PRICING_TABLE = {
13667
13717
  // 20% 拍脑袋而非抄文档)——`aicli usage` 因此系统性高报 DeepSeek 成本。
13668
13718
  // 待办:官方已公告峰谷定价(北京时间 9-12 点、14-18 点为平时 2 倍),本表仍是单一费率,
13669
13719
  // 届时高峰时段会低报;等该策略实际生效后再决定是否引入时段维度。
13670
- "deepseek-v4-pro": { input: 0.435, output: 0.87, cacheRead: 3625e-6 },
13671
- "deepseek-v4-flash": { input: 0.14, output: 0.28, cacheRead: 28e-4 },
13672
13720
  // Legacy aliases:retires 2026-07-24 UTC 15:59,官方 route 到 V4 Flash。
13673
13721
  // 这几条只服务历史 session 的成本回算,保留当时的费率口径,不随现价改动。
13674
13722
  "deepseek-chat": { input: 0.14, output: 0.28, cacheRead: 0.028 },
@@ -13712,11 +13760,15 @@ var PRICING_TABLE = {
13712
13760
  // Handled via provider check below (FREE_PROVIDERS → genuine $0.00, not "unknown").
13713
13761
  };
13714
13762
  var FREE_PROVIDERS = /* @__PURE__ */ new Set(["ollama"]);
13715
- function getPricing(provider, model) {
13763
+ function getPricing(provider, model, at = /* @__PURE__ */ new Date()) {
13716
13764
  if (FREE_PROVIDERS.has(provider.toLowerCase())) {
13717
13765
  return { input: 0, output: 0 };
13718
13766
  }
13719
13767
  const key = model.toLowerCase();
13768
+ if (provider.toLowerCase() === "deepseek") {
13769
+ const dynamicPricing = getDeepSeekV4Pricing(key, at);
13770
+ if (dynamicPricing) return dynamicPricing;
13771
+ }
13720
13772
  if (PRICING_TABLE[key]) return PRICING_TABLE[key];
13721
13773
  const keys = Object.keys(PRICING_TABLE).sort((a, b) => b.length - a.length);
13722
13774
  for (const k of keys) {
@@ -13724,8 +13776,8 @@ function getPricing(provider, model) {
13724
13776
  }
13725
13777
  return null;
13726
13778
  }
13727
- function computeCost(provider, model, usage) {
13728
- const p = getPricing(provider, model);
13779
+ function computeCost(provider, model, usage, at = /* @__PURE__ */ new Date()) {
13780
+ const p = getPricing(provider, model, at);
13729
13781
  if (!p) return null;
13730
13782
  const input = usage.inputTokens * p.input;
13731
13783
  const output = usage.outputTokens * p.output;
@@ -14852,11 +14904,24 @@ async function handleModel(args, ctx) {
14852
14904
  ctx.sendStatus();
14853
14905
  }
14854
14906
  async function handleThink(args, ctx) {
14855
- const sub = args[0];
14907
+ const sub = args[0]?.toLowerCase() ?? "toggle";
14908
+ if (sub === "status") {
14909
+ ctx.send({
14910
+ type: "info",
14911
+ message: `Thinking mode: ${ctx.runtimeThinking === null ? "CONFIG" : ctx.runtimeThinking ? "ON" : "OFF"}; effort: ${ctx.runtimeThinkingEffort ?? "config/default (high for DeepSeek V4)"}`
14912
+ });
14913
+ return;
14914
+ }
14856
14915
  if (sub === "on") ctx.runtimeThinking = true;
14857
14916
  else if (sub === "off") ctx.runtimeThinking = false;
14858
- else ctx.runtimeThinking = !ctx.runtimeThinking;
14859
- ctx.send({ type: "info", message: `Thinking mode: ${ctx.runtimeThinking ? "ON" : "OFF"}` });
14917
+ else if (sub === "low" || sub === "high" || sub === "max") {
14918
+ ctx.runtimeThinking = true;
14919
+ ctx.runtimeThinkingEffort = sub;
14920
+ } else ctx.runtimeThinking = ctx.runtimeThinking !== true;
14921
+ ctx.send({
14922
+ type: "info",
14923
+ message: `Thinking mode: ${ctx.runtimeThinking ? "ON" : "OFF"}${ctx.runtimeThinking ? ` (${ctx.runtimeThinkingEffort ?? "high"})` : ""}`
14924
+ });
14860
14925
  ctx.sendStatus();
14861
14926
  }
14862
14927
  async function handlePlan(args, ctx) {
@@ -15369,7 +15434,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
15369
15434
  Cost: ${formatCost(cost)}` : "";
15370
15435
  let memoryLine = "";
15371
15436
  try {
15372
- const { countPendingMemories } = await import("./persistent-memory-P3COUZZM.js");
15437
+ const { countPendingMemories } = await import("./persistent-memory-ANIMO5CF.js");
15373
15438
  const pending = countPendingMemories(ctx.config.getConfigDir());
15374
15439
  if (pending > 0) memoryLine = `
15375
15440
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -16178,14 +16243,14 @@ async function handleSecurityReview(args, ctx) {
16178
16243
  async function handleTest(args, ctx) {
16179
16244
  ctx.send({ type: "info", message: "\u{1F9EA} Running tests..." });
16180
16245
  try {
16181
- const { executeTests } = await import("./run-tests-7RYU4BK5.js");
16182
16246
  const argStr = args.join(" ").trim();
16183
16247
  let testArgs = {};
16184
16248
  if (argStr) {
16185
16249
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
16186
16250
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
16187
16251
  }
16188
- const report = await executeTests(testArgs);
16252
+ const runTests = ctx.runTests ?? (await import("./run-tests-TF7UPUWW.js")).executeTests;
16253
+ const report = await runTests(testArgs);
16189
16254
  ctx.send({ type: "info", message: report });
16190
16255
  } catch (err) {
16191
16256
  ctx.send({ type: "error", message: `Test failed: ${err.message}` });
@@ -16442,7 +16507,7 @@ async function handleMemory(args, ctx) {
16442
16507
  ctx.handleMemoryManage(sub, args[1], sub === "expire" ? args[2] : void 0);
16443
16508
  } else if (sub === "export") {
16444
16509
  if (args[1] === "md") {
16445
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-P3COUZZM.js");
16510
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-ANIMO5CF.js");
16446
16511
  ctx.send({
16447
16512
  type: "export_data",
16448
16513
  format: "md",
@@ -16873,6 +16938,7 @@ var SessionHandler = class {
16873
16938
  currentModel;
16874
16939
  planMode = false;
16875
16940
  runtimeThinking = null;
16941
+ runtimeThinkingEffort = null;
16876
16942
  sessionTokenUsage = { inputTokens: 0, outputTokens: 0, cacheCreationTokens: 0, cacheReadTokens: 0 };
16877
16943
  unknownPricingWarnings = /* @__PURE__ */ new Set();
16878
16944
  /** Accumulate a TokenUsage (with optional cache fields) into sessionTokenUsage. */
@@ -17011,7 +17077,8 @@ var SessionHandler = class {
17011
17077
  cwd: process.cwd(),
17012
17078
  messageCount: this.sessions.current?.messages.length ?? 0,
17013
17079
  planMode: this.planMode,
17014
- thinkingMode: this.runtimeThinking ?? false,
17080
+ thinkingMode: this.getModelParams().thinking ?? false,
17081
+ thinkingEffort: this.runtimeThinkingEffort ?? this.getModelParams().thinkingEffort,
17015
17082
  permissionProfile: this.config.get("defaultPermissionProfile") ?? "legacy",
17016
17083
  tokenUsage: { ...this.sessionTokenUsage },
17017
17084
  costUsd,
@@ -17376,6 +17443,7 @@ var SessionHandler = class {
17376
17443
  maxTokens: modelParams.maxTokens,
17377
17444
  timeout: modelParams.timeout,
17378
17445
  thinking: modelParams.thinking,
17446
+ thinkingEffort: modelParams.thinkingEffort,
17379
17447
  thinkingBudget: modelParams.thinkingBudget,
17380
17448
  signal: ac.signal
17381
17449
  });
@@ -17450,6 +17518,7 @@ ${mcpBudgetNote}` : "");
17450
17518
  maxTokens: modelParams.maxTokens,
17451
17519
  timeout: modelParams.timeout,
17452
17520
  thinking: modelParams.thinking,
17521
+ thinkingEffort: modelParams.thinkingEffort,
17453
17522
  thinkingBudget: modelParams.thinkingBudget,
17454
17523
  signal: ac.signal,
17455
17524
  ...extraMessages.length > 0 ? { _extraMessages: extraMessages } : {}
@@ -17766,6 +17835,7 @@ ${summaryContent}`,
17766
17835
  maxTokens: modelParams.maxTokens,
17767
17836
  timeout: modelParams.timeout,
17768
17837
  thinking: modelParams.thinking,
17838
+ thinkingEffort: modelParams.thinkingEffort,
17769
17839
  thinkingBudget: modelParams.thinkingBudget,
17770
17840
  signal: ac.signal,
17771
17841
  _extraMessages: teeExtraMessages
@@ -18300,6 +18370,7 @@ Backup saved: ${result.backupPath}` : "";
18300
18370
  ...params,
18301
18371
  maxTokens: params.maxTokens ?? DEFAULT_MAX_TOKENS,
18302
18372
  thinking: this.runtimeThinking ?? params.thinking,
18373
+ thinkingEffort: this.runtimeThinkingEffort ?? params.thinkingEffort,
18303
18374
  thinkingBudget: params.thinkingBudget
18304
18375
  };
18305
18376
  }
@@ -154,7 +154,7 @@ ${content}`);
154
154
  }
155
155
  }
156
156
  async function runTaskMode(config, providers, configManager, topic) {
157
- const { TaskOrchestrator } = await import("./task-orchestrator-ZFL4E6NZ.js");
157
+ const { TaskOrchestrator } = await import("./task-orchestrator-2RAKLFWN.js");
158
158
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
159
159
  let interrupted = false;
160
160
  const onSigint = () => {