crosscheck-mcp 0.2.11 → 0.2.13

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.
@@ -1976,6 +1976,28 @@ var DEFAULT_MODELS = {
1976
1976
  kimi: "kimi-k3",
1977
1977
  qwen: "qwen3.8-max"
1978
1978
  };
1979
+ var MODEL_ENV_VARS = {
1980
+ anthropic: "ANTHROPIC_MODEL",
1981
+ openai: "OPENAI_MODEL",
1982
+ xai: "XAI_MODEL",
1983
+ mistral: "MISTRAL_MODEL",
1984
+ groq: "GROQ_MODEL",
1985
+ deepseek: "DEEPSEEK_MODEL",
1986
+ gemini: "GEMINI_MODEL",
1987
+ kimi: "KIMI_MODEL",
1988
+ qwen: "QWEN_MODEL"
1989
+ };
1990
+ function detectStalePins(env) {
1991
+ const out = [];
1992
+ for (const [provider, envVar] of Object.entries(MODEL_ENV_VARS)) {
1993
+ const pinned = env[envVar];
1994
+ const current = DEFAULT_MODELS[provider];
1995
+ if (pinned && current && pinned !== current) {
1996
+ out.push({ provider, envVar, pinned, current });
1997
+ }
1998
+ }
1999
+ return out;
2000
+ }
1979
2001
  function buildProviders(opts) {
1980
2002
  const out = {};
1981
2003
  const anthropicKey = opts.env["ANTHROPIC_API_KEY"];
@@ -2191,7 +2213,7 @@ var import_zod = require("zod");
2191
2213
  // src/server-meta.ts
2192
2214
  init_cjs_shims();
2193
2215
  var SERVER_NAME = "crosscheck-agent";
2194
- var SERVER_VERSION = true ? "0.2.11" : "0.0.0-dev";
2216
+ var SERVER_VERSION = true ? "0.2.13" : "0.0.0-dev";
2195
2217
 
2196
2218
  // src/tools/audit.ts
2197
2219
  init_cjs_shims();
@@ -12485,7 +12507,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
12485
12507
  var DEFAULT_PACKAGE = "crosscheck-cli";
12486
12508
  var FETCH_TIMEOUT_MS = 3e3;
12487
12509
  function engineVersion() {
12488
- return true ? "0.2.11" : "0.0.0-dev";
12510
+ return true ? "0.2.13" : "0.0.0-dev";
12489
12511
  }
12490
12512
  function defaultUpdateCachePath() {
12491
12513
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path13.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");
@@ -13311,8 +13333,24 @@ function registerCoreTools(opts = {}) {
13311
13333
  o.repoRoot,
13312
13334
  o.workerToolsCfg
13313
13335
  ),
13314
- triangulateTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
13315
- planTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
13336
+ triangulateTool(
13337
+ o.providers ?? {},
13338
+ o.providerAllowlist ?? null,
13339
+ o.bridge,
13340
+ o.storage,
13341
+ o.circuitBreakers,
13342
+ o.transcriptsDir,
13343
+ o.repoRoot
13344
+ ),
13345
+ planTool(
13346
+ o.providers ?? {},
13347
+ o.providerAllowlist ?? null,
13348
+ o.bridge,
13349
+ o.storage,
13350
+ o.circuitBreakers,
13351
+ o.transcriptsDir,
13352
+ o.repoRoot
13353
+ ),
13316
13354
  critiqueTool(
13317
13355
  o.providers ?? {},
13318
13356
  o.providerAllowlist ?? null,
@@ -13322,7 +13360,15 @@ function registerCoreTools(opts = {}) {
13322
13360
  o.transcriptsDir,
13323
13361
  o.repoRoot
13324
13362
  ),
13325
- reviewTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
13363
+ reviewTool(
13364
+ o.providers ?? {},
13365
+ o.providerAllowlist ?? null,
13366
+ o.bridge,
13367
+ o.storage,
13368
+ o.circuitBreakers,
13369
+ o.transcriptsDir,
13370
+ o.repoRoot
13371
+ ),
13326
13372
  listProvidersTool(o.providers ?? {}, o.activeProviders ?? null, o.moderatorDefault ?? "anthropic"),
13327
13373
  recallTool(o.storage, o.bridge),
13328
13374
  sessionMemoryTool(o.storage, o.bridge),
@@ -13739,7 +13785,7 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
13739
13785
  })
13740
13786
  };
13741
13787
  }
13742
- function reviewTool(providers, allowlist, bridge) {
13788
+ function reviewTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
13743
13789
  return {
13744
13790
  name: "review",
13745
13791
  description: "Have an LLM panel peer-review a code or proposal snippet. Returns the confer envelope (one answer per provider).",
@@ -13758,7 +13804,11 @@ function reviewTool(providers, allowlist, bridge) {
13758
13804
  handler: (args) => runReview(args, {
13759
13805
  providers,
13760
13806
  allowlist,
13761
- ...bridge ? { bridge } : {}
13807
+ ...bridge ? { bridge } : {},
13808
+ ...storage ? { storage } : {},
13809
+ ...breakers ? { breakers } : {},
13810
+ ...transcriptsDir ? { transcriptsDir } : {},
13811
+ ...repoRoot ? { repoRoot } : {}
13762
13812
  })
13763
13813
  };
13764
13814
  }
@@ -13790,7 +13840,7 @@ function critiqueTool(providers, allowlist, bridge, storage, breakers, transcrip
13790
13840
  })
13791
13841
  };
13792
13842
  }
13793
- function planTool(providers, allowlist, bridge) {
13843
+ function planTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
13794
13844
  return {
13795
13845
  name: "plan",
13796
13846
  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.',
@@ -13817,11 +13867,15 @@ function planTool(providers, allowlist, bridge) {
13817
13867
  handler: (args) => runPlan(args, {
13818
13868
  providers,
13819
13869
  allowlist,
13820
- ...bridge ? { bridge } : {}
13870
+ ...bridge ? { bridge } : {},
13871
+ ...storage ? { storage } : {},
13872
+ ...breakers ? { breakers } : {},
13873
+ ...transcriptsDir ? { transcriptsDir } : {},
13874
+ ...repoRoot ? { repoRoot } : {}
13821
13875
  })
13822
13876
  };
13823
13877
  }
13824
- function triangulateTool(providers, allowlist, bridge) {
13878
+ function triangulateTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
13825
13879
  return {
13826
13880
  name: "triangulate",
13827
13881
  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.",
@@ -13842,7 +13896,11 @@ function triangulateTool(providers, allowlist, bridge) {
13842
13896
  handler: (args) => runTriangulate(args, {
13843
13897
  providers,
13844
13898
  allowlist,
13845
- ...bridge ? { bridge } : {}
13899
+ ...bridge ? { bridge } : {},
13900
+ ...storage ? { storage } : {},
13901
+ ...breakers ? { breakers } : {},
13902
+ ...transcriptsDir ? { transcriptsDir } : {},
13903
+ ...repoRoot ? { repoRoot } : {}
13846
13904
  })
13847
13905
  };
13848
13906
  }
@@ -14743,6 +14801,13 @@ async function main() {
14743
14801
  if (Object.keys(providers).length > 0) {
14744
14802
  process.stderr.write(
14745
14803
  `crosscheck-agent: native providers loaded: ${Object.keys(providers).sort().join(", ")}
14804
+ `
14805
+ );
14806
+ }
14807
+ for (const stale of detectStalePins(process.env)) {
14808
+ if (!(stale.provider in providers)) continue;
14809
+ process.stderr.write(
14810
+ `crosscheck-agent: ${stale.provider} is pinned to "${stale.pinned}" via ${stale.envVar}, but the current default is "${stale.current}". If that wasn't intentional, update or remove ${stale.envVar} in your .env.
14746
14811
  `
14747
14812
  );
14748
14813
  }