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.
@@ -44,8 +44,8 @@ var pricing_default = {
44
44
  _meta: {
45
45
  currency: "USD",
46
46
  unit: "per_1k_tokens",
47
- updated_at: "2026-06-07",
48
- notes: "Prices reflect public list pricing per provider. cached_per_1k applies to prompt tokens served from prompt-cache (Anthropic) or input-cache (OpenAI) when supported. Update when providers change rates. Missing models fall back to cost=0 with estimated=true. 2026-06-07: removed decommissioned gemini-2.0-flash / gemini-2.0-flash-lite (Google returns 404) and replaced the low-tier lite model with gemini-2.5-flash-lite. 2026-06-08: bumped the default Anthropic model to claude-opus-4-8. Kept gemini-2.5-pro as the Gemini default (gemini-3.1-pro-preview measured ~2.2x the cost at $2/$12 per M \u2014 output-token dominated by ~1.5k thinking tokens \u2014 so not worth it for a 1-of-4 panel voice). 2026-06-09: corrected rates verified against live provider pricing pages \u2014 gemini-2.5-pro output $5->$10/M; gemini-2.5-flash $0.15/$0.60 -> $0.30/$2.50; gpt-5 $5/$15 -> $1.25/$10 (cached $0.125); grok-4-latest input $5->$3/M (legacy grok-4 tier). Anthropic opus/sonnet/haiku rates confirmed unchanged. Older/unused models (gpt-4o, o1, o3, grok-3) not all re-verified. 2026-07-02: added claude-fable-5 as the optional reasoning-upgrade model (used only for the lead reasoning seat when the operator bumps a heavy task). 2026-07-04: set claude-fable-5 to its real pay-as-you-go API price effective 2026-07-07 \u2014 $10/M input ($0.01/1k), $50/M output ($0.05/1k), cached at 10% of input ($0.001/1k). Dropped the estimated flag. Note: Fable 5 is cheaper than opus-4-8 on both input and output. 2026-07-09: Google retired gemini-2.5-pro AND gemini-3-pro-preview (both now 404 'no longer available'). Moved the Gemini default to gemini-3.1-pro-preview ($2/M in, $12/M out, cache $0.20/M \u2014 the newest working pro; note it's a preview and may need another bump) and added gemini-3.5-flash ($1.50/M in, $9/M out, cache $0.15/M \u2014 GA) to the low/cheap tier. Removed the dead gemini-2.5-pro rate. IMPORTANT: gemini-3.x are heavy thinking models \u2014 thoughtsTokenCount (billed as output) is now folded into completion_tokens in the adapter, so cost reflects reasoning tokens. 2026-07-13: bumped the default OpenAI model to gpt-5.5 ($5/M in, $30/M out, cached $0.50/M \u2014 verified live). Note gpt-5.5 is markedly pricier than gpt-5 ($1.25/$10): ~4x input, 3x output. Kept gpt-5 in the table for cost lookups on pinned installs. 2026-07-16: added gpt-5.6 at the Sol (flagship) tier \u2014 $5/M in, $30/M out, cached $0.50/M (cache-write $6.25/M not modeled). gpt-5.6 is the second premium voice for the max-reasoning co-reasoner (runs alongside claude-fable-5 when an OpenAI key is set). Terra/Luna tiers not added (unused). 2026-07-17: added Moonshot AI (Kimi) provider with kimi-k3, base URL https://api.moonshot.ai/v1. Confirmed real rates \u2014 $3.00/M input (cache miss, $0.003/1k), $15.00/M output ($0.015/1k), $0.30/M cache-hit input ($0.0003/1k); 1M-token context. Kimi K3 is reasoning-class (temperature must be 1; uses max_completion_tokens). 2026-07-24: added claude-opus-5 ($5/M in, $25/M out, cached $0.50/M -- 10% of input, matching this table's existing cache-discount ratio) and made it the default anthropic model (was claude-opus-4-8). Fable 5 remains the reasoning-upgrade/super-mode target, unchanged."
47
+ updated_at: "2026-08-04",
48
+ notes: "Prices reflect public list pricing per provider. cached_per_1k applies to prompt tokens served from prompt-cache (Anthropic) or input-cache (OpenAI) when supported. Update when providers change rates. Missing models fall back to cost=0 with estimated=true. 2026-06-07: removed decommissioned gemini-2.0-flash / gemini-2.0-flash-lite (Google returns 404) and replaced the low-tier lite model with gemini-2.5-flash-lite. 2026-06-08: bumped the default Anthropic model to claude-opus-4-8. Kept gemini-2.5-pro as the Gemini default (gemini-3.1-pro-preview measured ~2.2x the cost at $2/$12 per M \u2014 output-token dominated by ~1.5k thinking tokens \u2014 so not worth it for a 1-of-4 panel voice). 2026-06-09: corrected rates verified against live provider pricing pages \u2014 gemini-2.5-pro output $5->$10/M; gemini-2.5-flash $0.15/$0.60 -> $0.30/$2.50; gpt-5 $5/$15 -> $1.25/$10 (cached $0.125); grok-4-latest input $5->$3/M (legacy grok-4 tier). Anthropic opus/sonnet/haiku rates confirmed unchanged. Older/unused models (gpt-4o, o1, o3, grok-3) not all re-verified. 2026-07-02: added claude-fable-5 as the optional reasoning-upgrade model (used only for the lead reasoning seat when the operator bumps a heavy task). 2026-07-04: set claude-fable-5 to its real pay-as-you-go API price effective 2026-07-07 \u2014 $10/M input ($0.01/1k), $50/M output ($0.05/1k), cached at 10% of input ($0.001/1k). Dropped the estimated flag. Note: Fable 5 is cheaper than opus-4-8 on both input and output. 2026-07-09: Google retired gemini-2.5-pro AND gemini-3-pro-preview (both now 404 'no longer available'). Moved the Gemini default to gemini-3.1-pro-preview ($2/M in, $12/M out, cache $0.20/M \u2014 the newest working pro; note it's a preview and may need another bump) and added gemini-3.5-flash ($1.50/M in, $9/M out, cache $0.15/M \u2014 GA) to the low/cheap tier. Removed the dead gemini-2.5-pro rate. IMPORTANT: gemini-3.x are heavy thinking models \u2014 thoughtsTokenCount (billed as output) is now folded into completion_tokens in the adapter, so cost reflects reasoning tokens. 2026-07-13: bumped the default OpenAI model to gpt-5.5 ($5/M in, $30/M out, cached $0.50/M \u2014 verified live). Note gpt-5.5 is markedly pricier than gpt-5 ($1.25/$10): ~4x input, 3x output. Kept gpt-5 in the table for cost lookups on pinned installs. 2026-07-16: added gpt-5.6 at the Sol (flagship) tier \u2014 $5/M in, $30/M out, cached $0.50/M (cache-write $6.25/M not modeled). gpt-5.6 is the second premium voice for the max-reasoning co-reasoner (runs alongside claude-fable-5 when an OpenAI key is set). Terra/Luna tiers not added (unused). 2026-07-17: added Moonshot AI (Kimi) provider with kimi-k3, base URL https://api.moonshot.ai/v1. Confirmed real rates \u2014 $3.00/M input (cache miss, $0.003/1k), $15.00/M output ($0.015/1k), $0.30/M cache-hit input ($0.0003/1k); 1M-token context. Kimi K3 is reasoning-class (temperature must be 1; uses max_completion_tokens). 2026-07-24: added claude-opus-5 ($5/M in, $25/M out, cached $0.50/M -- 10% of input, matching this table's existing cache-discount ratio) and made it the default anthropic model (was claude-opus-4-8). Fable 5 remains the reasoning-upgrade/super-mode target, unchanged. 2026-08-04: added Alibaba Cloud Qwen provider (OpenAI-compatible, DashScope international endpoint https://dashscope-intl.aliyuncs.com/compatible-mode/v1) with default model qwen3.8-max -- confirmed business pricing $2.00/M input ($0.002/1k), $6.00/M output ($0.006/1k), cache estimated at 10% of input ($0.0002/1k, not independently confirmed). Also added qwen3.7-max as a fallback tier at $1.25/M in ($0.00125/1k) / $3.75/M out ($0.00375/1k). Note: the model string initially configured (qwen-v3.8 / qwen-v3.7) does not exist on DashScope and 404s -- live-probed the real key against qwen3.8-max, qwen3.7-max, qwen3-max, qwen-max, and qwen-plus, all of which work; corrected the default and pricing keys to qwen3.8-max/qwen3.7-max and fixed QWEN_MODEL in both .env files to match. Qwen's Max tier is a standard instruct model, not reasoning-class -- normal temperature/max_tokens handling."
49
49
  },
50
50
  anthropic: {
51
51
  "claude-opus-4-5": {
@@ -233,6 +233,18 @@ var pricing_default = {
233
233
  cached_per_1k: 3e-4
234
234
  }
235
235
  },
236
+ qwen: {
237
+ "qwen3.8-max": {
238
+ prompt_per_1k: 2e-3,
239
+ completion_per_1k: 6e-3,
240
+ cached_per_1k: 2e-4
241
+ },
242
+ "qwen3.7-max": {
243
+ prompt_per_1k: 125e-5,
244
+ completion_per_1k: 375e-5,
245
+ cached_per_1k: 125e-6
246
+ }
247
+ },
236
248
  _tiers: {
237
249
  low: {
238
250
  description: "Cheap, fast models for simple subtasks (extraction, formatting, short summaries).",
@@ -430,7 +442,11 @@ var PROVIDER_CAPS = {
430
442
  system_role: "separate",
431
443
  supports_temperature: true,
432
444
  reasoning_prefixes: ["gemini-3.1-pro", "gemini-3.5-flash", "gemini-2.5-pro"]
433
- }
445
+ },
446
+ // Qwen's "Max" tier (qwen-v3.8, qwen-v3.7) is a standard instruct/chat
447
+ // model, not a visible-reasoning model like QwQ — normal temperature and
448
+ // max_tokens handling, same as xai/mistral/groq/deepseek.
449
+ qwen: { family: "openai_chat", system_role: "inline", supports_temperature: true }
434
450
  };
435
451
  function isReasoningModel(provider, model) {
436
452
  const caps = PROVIDER_CAPS[provider];
@@ -1001,7 +1017,12 @@ var OPENAI_COMPAT_DEFAULT_URLS = {
1001
1017
  groq: "https://api.groq.com/openai/v1/chat/completions",
1002
1018
  deepseek: "https://api.deepseek.com/v1/chat/completions",
1003
1019
  // Moonshot AI (Kimi). OpenAI-compatible chat completions endpoint.
1004
- kimi: "https://api.moonshot.ai/v1/chat/completions"
1020
+ kimi: "https://api.moonshot.ai/v1/chat/completions",
1021
+ // Alibaba Cloud DashScope (Qwen). International endpoint — the mainland
1022
+ // China endpoint (dashscope.aliyuncs.com) 403s/404s from outside China in
1023
+ // a way that can look like a bad key; this is the deliberate default for
1024
+ // a US-based deployment.
1025
+ qwen: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions"
1005
1026
  };
1006
1027
  var OPENAI_COMPAT_NATIVE_STRUCTURED = /* @__PURE__ */ new Set([
1007
1028
  "openai"
@@ -1170,7 +1191,8 @@ var DEFAULT_MODELS = {
1170
1191
  groq: "llama-3.3-70b-versatile",
1171
1192
  deepseek: "deepseek-chat",
1172
1193
  gemini: "gemini-3.1-pro-preview",
1173
- kimi: "kimi-k3"
1194
+ kimi: "kimi-k3",
1195
+ qwen: "qwen3.8-max"
1174
1196
  };
1175
1197
  function buildProviders(opts) {
1176
1198
  const out = {};
@@ -1185,7 +1207,8 @@ function buildProviders(opts) {
1185
1207
  { name: "mistral", keyEnv: "MISTRAL_API_KEY", modelEnv: "MISTRAL_MODEL", defaultModel: DEFAULT_MODELS["mistral"] },
1186
1208
  { name: "groq", keyEnv: "GROQ_API_KEY", modelEnv: "GROQ_MODEL", defaultModel: DEFAULT_MODELS["groq"] },
1187
1209
  { name: "deepseek", keyEnv: "DEEPSEEK_API_KEY", modelEnv: "DEEPSEEK_MODEL", defaultModel: DEFAULT_MODELS["deepseek"] },
1188
- { name: "kimi", keyEnv: "KIMI_API_KEY", modelEnv: "KIMI_MODEL", defaultModel: DEFAULT_MODELS["kimi"] }
1210
+ { name: "kimi", keyEnv: "KIMI_API_KEY", modelEnv: "KIMI_MODEL", defaultModel: DEFAULT_MODELS["kimi"] },
1211
+ { name: "qwen", keyEnv: "QWEN_API_KEY", modelEnv: "QWEN_MODEL", defaultModel: DEFAULT_MODELS["qwen"] }
1189
1212
  ];
1190
1213
  for (const s of openAiCompatSpec) {
1191
1214
  const apiKey = opts.env[s.keyEnv];
@@ -1257,7 +1280,7 @@ var import_zod = require("zod");
1257
1280
 
1258
1281
  // src/server-meta.ts
1259
1282
  var SERVER_NAME = "crosscheck-agent";
1260
- var SERVER_VERSION = true ? "0.2.10" : "0.0.0-dev";
1283
+ var SERVER_VERSION = true ? "0.2.12" : "0.0.0-dev";
1261
1284
 
1262
1285
  // src/tools/audit.ts
1263
1286
  var import_node_fs4 = require("fs");
@@ -4106,7 +4129,9 @@ var SUPER_MODELS = {
4106
4129
  // already the default — no-op retarget
4107
4130
  gemini: DEFAULT_MODELS["gemini"],
4108
4131
  // already the default — no-op retarget
4109
- kimi: DEFAULT_MODELS["kimi"]
4132
+ kimi: DEFAULT_MODELS["kimi"],
4133
+ // already the default — no-op retarget
4134
+ qwen: DEFAULT_MODELS["qwen"]
4110
4135
  // already the default — no-op retarget
4111
4136
  };
4112
4137
  var SUPER_PROVIDER_NAMES = Object.keys(SUPER_MODELS);
@@ -9892,7 +9917,8 @@ var KNOWN_PROVIDERS6 = [
9892
9917
  "mistral",
9893
9918
  "groq",
9894
9919
  "deepseek",
9895
- "kimi"
9920
+ "kimi",
9921
+ "qwen"
9896
9922
  ];
9897
9923
  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.";
9898
9924
  function runListProviders(args, opts) {
@@ -11464,7 +11490,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
11464
11490
  var DEFAULT_PACKAGE = "crosscheck-cli";
11465
11491
  var FETCH_TIMEOUT_MS = 3e3;
11466
11492
  function engineVersion() {
11467
- return true ? "0.2.10" : "0.0.0-dev";
11493
+ return true ? "0.2.12" : "0.0.0-dev";
11468
11494
  }
11469
11495
  function defaultUpdateCachePath() {
11470
11496
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path12.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");
@@ -12288,8 +12314,24 @@ function registerCoreTools(opts = {}) {
12288
12314
  o.repoRoot,
12289
12315
  o.workerToolsCfg
12290
12316
  ),
12291
- triangulateTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
12292
- planTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
12317
+ triangulateTool(
12318
+ o.providers ?? {},
12319
+ o.providerAllowlist ?? null,
12320
+ o.bridge,
12321
+ o.storage,
12322
+ o.circuitBreakers,
12323
+ o.transcriptsDir,
12324
+ o.repoRoot
12325
+ ),
12326
+ planTool(
12327
+ o.providers ?? {},
12328
+ o.providerAllowlist ?? null,
12329
+ o.bridge,
12330
+ o.storage,
12331
+ o.circuitBreakers,
12332
+ o.transcriptsDir,
12333
+ o.repoRoot
12334
+ ),
12293
12335
  critiqueTool(
12294
12336
  o.providers ?? {},
12295
12337
  o.providerAllowlist ?? null,
@@ -12299,7 +12341,15 @@ function registerCoreTools(opts = {}) {
12299
12341
  o.transcriptsDir,
12300
12342
  o.repoRoot
12301
12343
  ),
12302
- reviewTool(o.providers ?? {}, o.providerAllowlist ?? null, o.bridge),
12344
+ reviewTool(
12345
+ o.providers ?? {},
12346
+ o.providerAllowlist ?? null,
12347
+ o.bridge,
12348
+ o.storage,
12349
+ o.circuitBreakers,
12350
+ o.transcriptsDir,
12351
+ o.repoRoot
12352
+ ),
12303
12353
  listProvidersTool(o.providers ?? {}, o.activeProviders ?? null, o.moderatorDefault ?? "anthropic"),
12304
12354
  recallTool(o.storage, o.bridge),
12305
12355
  sessionMemoryTool(o.storage, o.bridge),
@@ -12716,7 +12766,7 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
12716
12766
  })
12717
12767
  };
12718
12768
  }
12719
- function reviewTool(providers, allowlist, bridge) {
12769
+ function reviewTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
12720
12770
  return {
12721
12771
  name: "review",
12722
12772
  description: "Have an LLM panel peer-review a code or proposal snippet. Returns the confer envelope (one answer per provider).",
@@ -12735,7 +12785,11 @@ function reviewTool(providers, allowlist, bridge) {
12735
12785
  handler: (args) => runReview(args, {
12736
12786
  providers,
12737
12787
  allowlist,
12738
- ...bridge ? { bridge } : {}
12788
+ ...bridge ? { bridge } : {},
12789
+ ...storage ? { storage } : {},
12790
+ ...breakers ? { breakers } : {},
12791
+ ...transcriptsDir ? { transcriptsDir } : {},
12792
+ ...repoRoot ? { repoRoot } : {}
12739
12793
  })
12740
12794
  };
12741
12795
  }
@@ -12767,7 +12821,7 @@ function critiqueTool(providers, allowlist, bridge, storage, breakers, transcrip
12767
12821
  })
12768
12822
  };
12769
12823
  }
12770
- function planTool(providers, allowlist, bridge) {
12824
+ function planTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
12771
12825
  return {
12772
12826
  name: "plan",
12773
12827
  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.',
@@ -12794,11 +12848,15 @@ function planTool(providers, allowlist, bridge) {
12794
12848
  handler: (args) => runPlan(args, {
12795
12849
  providers,
12796
12850
  allowlist,
12797
- ...bridge ? { bridge } : {}
12851
+ ...bridge ? { bridge } : {},
12852
+ ...storage ? { storage } : {},
12853
+ ...breakers ? { breakers } : {},
12854
+ ...transcriptsDir ? { transcriptsDir } : {},
12855
+ ...repoRoot ? { repoRoot } : {}
12798
12856
  })
12799
12857
  };
12800
12858
  }
12801
- function triangulateTool(providers, allowlist, bridge) {
12859
+ function triangulateTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
12802
12860
  return {
12803
12861
  name: "triangulate",
12804
12862
  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.",
@@ -12819,7 +12877,11 @@ function triangulateTool(providers, allowlist, bridge) {
12819
12877
  handler: (args) => runTriangulate(args, {
12820
12878
  providers,
12821
12879
  allowlist,
12822
- ...bridge ? { bridge } : {}
12880
+ ...bridge ? { bridge } : {},
12881
+ ...storage ? { storage } : {},
12882
+ ...breakers ? { breakers } : {},
12883
+ ...transcriptsDir ? { transcriptsDir } : {},
12884
+ ...repoRoot ? { repoRoot } : {}
12823
12885
  })
12824
12886
  };
12825
12887
  }
@@ -13085,7 +13147,8 @@ var KEY_ENV = {
13085
13147
  groq: "GROQ_API_KEY",
13086
13148
  deepseek: "DEEPSEEK_API_KEY",
13087
13149
  mistral: "MISTRAL_API_KEY",
13088
- kimi: "KIMI_API_KEY"
13150
+ kimi: "KIMI_API_KEY",
13151
+ qwen: "QWEN_API_KEY"
13089
13152
  };
13090
13153
  function createCrosscheck(opts) {
13091
13154
  const env = {};