crosscheck-mcp 0.2.24 → 0.2.26

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.
@@ -63,6 +63,11 @@ var pricing_default = {
63
63
  completion_per_1k: 0.075,
64
64
  cached_per_1k: 15e-4
65
65
  },
66
+ "claude-opus-5-5": {
67
+ prompt_per_1k: 4e-3,
68
+ completion_per_1k: 0.02,
69
+ cached_per_1k: 2e-4
70
+ },
66
71
  "claude-opus-5": {
67
72
  prompt_per_1k: 5e-3,
68
73
  completion_per_1k: 0.025,
@@ -392,7 +397,12 @@ var import_node_fs = require("fs");
392
397
  function modelPricing(pricing, provider, model) {
393
398
  const block = pricing[provider];
394
399
  if (!block || typeof block !== "object" || Array.isArray(block)) return null;
395
- const entry = block[model];
400
+ const table = block;
401
+ let entry = table[model];
402
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
403
+ const best = Object.keys(table).filter((k) => model.startsWith(k)).sort((a, b) => b.length - a.length)[0];
404
+ entry = best !== void 0 ? table[best] : void 0;
405
+ }
396
406
  if (!entry || typeof entry !== "object" || Array.isArray(entry)) return null;
397
407
  const e = entry;
398
408
  return {
@@ -749,6 +759,14 @@ async function acquireRateLimit(provider, deps) {
749
759
  // src/providers/anthropic.ts
750
760
  var ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages";
751
761
  var ANTHROPIC_VERSION_HEADER = "2023-06-01";
762
+ var ADAPTIVE_THINKING_PREFIXES = [
763
+ "claude-fable-5",
764
+ "claude-opus-5-5"
765
+ ];
766
+ function rejectsDisabledThinking(model) {
767
+ const m = model.toLowerCase();
768
+ return ADAPTIVE_THINKING_PREFIXES.some((p) => m.startsWith(p));
769
+ }
752
770
  var ANTHROPIC_STRUCTURED_TOOL_NAME = "structured_output";
753
771
  function applyPromptCaching(body, env = process.env) {
754
772
  const flag = (env["CROSSCHECK_ANTHROPIC_PROMPT_CACHE"] ?? "").trim();
@@ -793,7 +811,7 @@ function buildAnthropicRequest(opts) {
793
811
  }
794
812
  applyPromptCaching(body);
795
813
  if (isReasoningModel("anthropic", opts.model)) {
796
- if (opts.model.toLowerCase().startsWith("claude-fable-5")) {
814
+ if (rejectsDisabledThinking(opts.model)) {
797
815
  body.thinking = { type: "adaptive" };
798
816
  body.output_config = { effort: "low" };
799
817
  } else {
@@ -1313,7 +1331,7 @@ async function sendOpenAICompatible(args) {
1313
1331
 
1314
1332
  // src/providers/registry.ts
1315
1333
  var DEFAULT_MODELS = {
1316
- anthropic: "claude-opus-5",
1334
+ anthropic: "claude-opus-5-5",
1317
1335
  openai: "gpt-5.6-sol",
1318
1336
  xai: "grok-4-latest",
1319
1337
  mistral: "mistral-large-latest",
@@ -1330,7 +1348,12 @@ var DEFAULT_FALLBACKS = {
1330
1348
  // about.
1331
1349
  openai: ["gpt-5"],
1332
1350
  // 3.8 Flash is recent enough that some projects won't have it yet.
1333
- gemini: ["gemini-3.1-pro-preview"]
1351
+ gemini: ["gemini-3.1-pro-preview"],
1352
+ // Opus 5.5 is new enough that an account could still be waiting on it.
1353
+ // Opus 5 is the same family one step back — and this chain is consulted
1354
+ // ONLY for a model-access failure, never for a bad key or a rate limit,
1355
+ // so it can't quietly downgrade anyone who simply hit a 429.
1356
+ anthropic: ["claude-opus-5"]
1334
1357
  };
1335
1358
  var MODEL_ENV_VARS = {
1336
1359
  anthropic: "ANTHROPIC_MODEL",
@@ -1455,7 +1478,7 @@ var import_zod = require("zod");
1455
1478
 
1456
1479
  // src/server-meta.ts
1457
1480
  var SERVER_NAME = "crosscheck-agent";
1458
- var SERVER_VERSION = true ? "0.2.24" : "0.0.0-dev";
1481
+ var SERVER_VERSION = true ? "0.2.26" : "0.0.0-dev";
1459
1482
 
1460
1483
  // src/tools/audit.ts
1461
1484
  var import_node_fs4 = require("fs");
@@ -5194,11 +5217,20 @@ ${ctxBody}` });
5194
5217
  });
5195
5218
  };
5196
5219
  const onAnswer = opts.onAnswer;
5197
- const workerCall = onAnswer ? async (p) => {
5220
+ const onPanelistStart = opts.onPanelistStart;
5221
+ const workerCall = onAnswer || onPanelistStart ? async (p) => {
5222
+ if (onPanelistStart) {
5223
+ try {
5224
+ onPanelistStart(p.name, p.model);
5225
+ } catch {
5226
+ }
5227
+ }
5198
5228
  const answer = await dispatchOne(p);
5199
- try {
5200
- onAnswer(answer, p.name);
5201
- } catch {
5229
+ if (onAnswer) {
5230
+ try {
5231
+ onAnswer(answer, p.name);
5232
+ } catch {
5233
+ }
5202
5234
  }
5203
5235
  return answer;
5204
5236
  } : dispatchOne;
@@ -9479,6 +9511,12 @@ ${prior.body}` });
9479
9511
  content: `This is round ${rnd} of ${maxRounds}. Reply for this round.`
9480
9512
  });
9481
9513
  for (const p of selected) {
9514
+ if (opts.onPanelistStart) {
9515
+ try {
9516
+ opts.onPanelistStart(p.name, p.model, rnd);
9517
+ } catch {
9518
+ }
9519
+ }
9482
9520
  const entry = await callPanelist(p, roundMessages);
9483
9521
  const withRound = { ...entry, round: rnd };
9484
9522
  transcript.push(withRound);
@@ -11928,7 +11966,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
11928
11966
  var DEFAULT_PACKAGE = "crosscheck-cli";
11929
11967
  var FETCH_TIMEOUT_MS = 3e3;
11930
11968
  function engineVersion() {
11931
- return true ? "0.2.24" : "0.0.0-dev";
11969
+ return true ? "0.2.26" : "0.0.0-dev";
11932
11970
  }
11933
11971
  function defaultUpdateCachePath() {
11934
11972
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path12.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");