crosscheck-mcp 0.2.10 → 0.2.12

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.
@@ -1187,7 +1187,11 @@ var PROVIDER_CAPS = {
1187
1187
  system_role: "separate",
1188
1188
  supports_temperature: true,
1189
1189
  reasoning_prefixes: ["gemini-3.1-pro", "gemini-3.5-flash", "gemini-2.5-pro"]
1190
- }
1190
+ },
1191
+ // Qwen's "Max" tier (qwen-v3.8, qwen-v3.7) is a standard instruct/chat
1192
+ // model, not a visible-reasoning model like QwQ — normal temperature and
1193
+ // max_tokens handling, same as xai/mistral/groq/deepseek.
1194
+ qwen: { family: "openai_chat", system_role: "inline", supports_temperature: true }
1191
1195
  };
1192
1196
  function isReasoningModel(provider, model) {
1193
1197
  const caps = PROVIDER_CAPS[provider];
@@ -1771,7 +1775,12 @@ var OPENAI_COMPAT_DEFAULT_URLS = {
1771
1775
  groq: "https://api.groq.com/openai/v1/chat/completions",
1772
1776
  deepseek: "https://api.deepseek.com/v1/chat/completions",
1773
1777
  // Moonshot AI (Kimi). OpenAI-compatible chat completions endpoint.
1774
- kimi: "https://api.moonshot.ai/v1/chat/completions"
1778
+ kimi: "https://api.moonshot.ai/v1/chat/completions",
1779
+ // Alibaba Cloud DashScope (Qwen). International endpoint — the mainland
1780
+ // China endpoint (dashscope.aliyuncs.com) 403s/404s from outside China in
1781
+ // a way that can look like a bad key; this is the deliberate default for
1782
+ // a US-based deployment.
1783
+ qwen: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions"
1775
1784
  };
1776
1785
  var OPENAI_COMPAT_NATIVE_STRUCTURED = /* @__PURE__ */ new Set([
1777
1786
  "openai"
@@ -1940,7 +1949,8 @@ var DEFAULT_MODELS = {
1940
1949
  groq: "llama-3.3-70b-versatile",
1941
1950
  deepseek: "deepseek-chat",
1942
1951
  gemini: "gemini-3.1-pro-preview",
1943
- kimi: "kimi-k3"
1952
+ kimi: "kimi-k3",
1953
+ qwen: "qwen3.8-max"
1944
1954
  };
1945
1955
  function buildProviders(opts) {
1946
1956
  const out = {};
@@ -1955,7 +1965,8 @@ function buildProviders(opts) {
1955
1965
  { name: "mistral", keyEnv: "MISTRAL_API_KEY", modelEnv: "MISTRAL_MODEL", defaultModel: DEFAULT_MODELS["mistral"] },
1956
1966
  { name: "groq", keyEnv: "GROQ_API_KEY", modelEnv: "GROQ_MODEL", defaultModel: DEFAULT_MODELS["groq"] },
1957
1967
  { name: "deepseek", keyEnv: "DEEPSEEK_API_KEY", modelEnv: "DEEPSEEK_MODEL", defaultModel: DEFAULT_MODELS["deepseek"] },
1958
- { name: "kimi", keyEnv: "KIMI_API_KEY", modelEnv: "KIMI_MODEL", defaultModel: DEFAULT_MODELS["kimi"] }
1968
+ { name: "kimi", keyEnv: "KIMI_API_KEY", modelEnv: "KIMI_MODEL", defaultModel: DEFAULT_MODELS["kimi"] },
1969
+ { name: "qwen", keyEnv: "QWEN_API_KEY", modelEnv: "QWEN_MODEL", defaultModel: DEFAULT_MODELS["qwen"] }
1959
1970
  ];
1960
1971
  for (const s of openAiCompatSpec) {
1961
1972
  const apiKey = opts.env[s.keyEnv];
@@ -2159,7 +2170,7 @@ import { z } from "zod";
2159
2170
  // src/server-meta.ts
2160
2171
  init_esm_shims();
2161
2172
  var SERVER_NAME = "crosscheck-agent";
2162
- var SERVER_VERSION = true ? "0.2.10" : "0.0.0-dev";
2173
+ var SERVER_VERSION = true ? "0.2.12" : "0.0.0-dev";
2163
2174
 
2164
2175
  // src/tools/audit.ts
2165
2176
  init_esm_shims();
@@ -5049,7 +5060,9 @@ var SUPER_MODELS = {
5049
5060
  // already the default — no-op retarget
5050
5061
  gemini: DEFAULT_MODELS["gemini"],
5051
5062
  // already the default — no-op retarget
5052
- kimi: DEFAULT_MODELS["kimi"]
5063
+ kimi: DEFAULT_MODELS["kimi"],
5064
+ // already the default — no-op retarget
5065
+ qwen: DEFAULT_MODELS["qwen"]
5053
5066
  // already the default — no-op retarget
5054
5067
  };
5055
5068
  var SUPER_PROVIDER_NAMES = Object.keys(SUPER_MODELS);
@@ -10885,7 +10898,8 @@ var KNOWN_PROVIDERS6 = [
10885
10898
  "mistral",
10886
10899
  "groq",
10887
10900
  "deepseek",
10888
- "kimi"
10901
+ "kimi",
10902
+ "qwen"
10889
10903
  ];
10890
10904
  var USAGE_HINT = "Pass a 'providers' array to confer/debate/plan/review to pick an ad-hoc subset, e.g. providers=['openai','gemini']. Omit the field to use the configured active set.";
10891
10905
  function runListProviders(args, opts) {
@@ -12467,7 +12481,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
12467
12481
  var DEFAULT_PACKAGE = "crosscheck-cli";
12468
12482
  var FETCH_TIMEOUT_MS = 3e3;
12469
12483
  function engineVersion() {
12470
- return true ? "0.2.10" : "0.0.0-dev";
12484
+ return true ? "0.2.12" : "0.0.0-dev";
12471
12485
  }
12472
12486
  function defaultUpdateCachePath() {
12473
12487
  const base = process.env["CROSSCHECK_DATA_DIR"] || path10.join(os.homedir() || os.tmpdir(), ".crosscheck");
@@ -13293,8 +13307,24 @@ function registerCoreTools(opts = {}) {
13293
13307
  o.repoRoot,
13294
13308
  o.workerToolsCfg
13295
13309
  ),
13296
- triangulateTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
13297
- planTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
13310
+ triangulateTool(
13311
+ o.providers ?? {},
13312
+ o.providerAllowlist ?? null,
13313
+ o.bridge,
13314
+ o.storage,
13315
+ o.circuitBreakers,
13316
+ o.transcriptsDir,
13317
+ o.repoRoot
13318
+ ),
13319
+ planTool(
13320
+ o.providers ?? {},
13321
+ o.providerAllowlist ?? null,
13322
+ o.bridge,
13323
+ o.storage,
13324
+ o.circuitBreakers,
13325
+ o.transcriptsDir,
13326
+ o.repoRoot
13327
+ ),
13298
13328
  critiqueTool(
13299
13329
  o.providers ?? {},
13300
13330
  o.providerAllowlist ?? null,
@@ -13304,7 +13334,15 @@ function registerCoreTools(opts = {}) {
13304
13334
  o.transcriptsDir,
13305
13335
  o.repoRoot
13306
13336
  ),
13307
- reviewTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
13337
+ reviewTool(
13338
+ o.providers ?? {},
13339
+ o.providerAllowlist ?? null,
13340
+ o.bridge,
13341
+ o.storage,
13342
+ o.circuitBreakers,
13343
+ o.transcriptsDir,
13344
+ o.repoRoot
13345
+ ),
13308
13346
  listProvidersTool(o.providers ?? {}, o.activeProviders ?? null, o.moderatorDefault ?? "anthropic"),
13309
13347
  recallTool(o.storage, o.bridge),
13310
13348
  sessionMemoryTool(o.storage, o.bridge),
@@ -13721,7 +13759,7 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
13721
13759
  })
13722
13760
  };
13723
13761
  }
13724
- function reviewTool(providers, allowlist, bridge) {
13762
+ function reviewTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
13725
13763
  return {
13726
13764
  name: "review",
13727
13765
  description: "Have an LLM panel peer-review a code or proposal snippet. Returns the confer envelope (one answer per provider).",
@@ -13740,7 +13778,11 @@ function reviewTool(providers, allowlist, bridge) {
13740
13778
  handler: (args) => runReview(args, {
13741
13779
  providers,
13742
13780
  allowlist,
13743
- ...bridge ? { bridge } : {}
13781
+ ...bridge ? { bridge } : {},
13782
+ ...storage ? { storage } : {},
13783
+ ...breakers ? { breakers } : {},
13784
+ ...transcriptsDir ? { transcriptsDir } : {},
13785
+ ...repoRoot ? { repoRoot } : {}
13744
13786
  })
13745
13787
  };
13746
13788
  }
@@ -13772,7 +13814,7 @@ function critiqueTool(providers, allowlist, bridge, storage, breakers, transcrip
13772
13814
  })
13773
13815
  };
13774
13816
  }
13775
- function planTool(providers, allowlist, bridge) {
13817
+ function planTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
13776
13818
  return {
13777
13819
  name: "plan",
13778
13820
  description: 'Have an LLM panel debate a step-by-step plan for the stated goal under the given constraints. Returns the debate envelope with a moderator-synthesised plan. Defaults to `mode: "fast"` (2 rounds + early_stop) \u2014 set `mode: "thorough"` for 5 rounds without early_stop. Explicit `max_rounds` / `early_stop` / `early_stop_threshold` always override the mode preset. Use `structured: true` for schema-validated synthesis.',
@@ -13799,11 +13841,15 @@ function planTool(providers, allowlist, bridge) {
13799
13841
  handler: (args) => runPlan(args, {
13800
13842
  providers,
13801
13843
  allowlist,
13802
- ...bridge ? { bridge } : {}
13844
+ ...bridge ? { bridge } : {},
13845
+ ...storage ? { storage } : {},
13846
+ ...breakers ? { breakers } : {},
13847
+ ...transcriptsDir ? { transcriptsDir } : {},
13848
+ ...repoRoot ? { repoRoot } : {}
13803
13849
  })
13804
13850
  };
13805
13851
  }
13806
- function triangulateTool(providers, allowlist, bridge) {
13852
+ function triangulateTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
13807
13853
  return {
13808
13854
  name: "triangulate",
13809
13855
  description: "Run a coordinate flow and reshape the output as a consensus + minority report with per-provider weights. v1 uses 1.0 weights (matches a fresh provider_stats DB); future versions thread real win-rate weights when the DB layer ports.",
@@ -13824,7 +13870,11 @@ function triangulateTool(providers, allowlist, bridge) {
13824
13870
  handler: (args) => runTriangulate(args, {
13825
13871
  providers,
13826
13872
  allowlist,
13827
- ...bridge ? { bridge } : {}
13873
+ ...bridge ? { bridge } : {},
13874
+ ...storage ? { storage } : {},
13875
+ ...breakers ? { breakers } : {},
13876
+ ...transcriptsDir ? { transcriptsDir } : {},
13877
+ ...repoRoot ? { repoRoot } : {}
13828
13878
  })
13829
13879
  };
13830
13880
  }
@@ -14154,7 +14204,12 @@ var PROVIDER_TO_SCHEMA = {
14154
14204
  openai: "openai",
14155
14205
  gemini: "gemini",
14156
14206
  xai: "grok",
14157
- grok: "grok"
14207
+ grok: "grok",
14208
+ mistral: "mistral",
14209
+ groq: "groq",
14210
+ deepseek: "deepseek",
14211
+ kimi: "kimi",
14212
+ qwen: "qwen"
14158
14213
  };
14159
14214
  var TOOL_TO_PATTERN = {
14160
14215
  confer: "confer",