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.
@@ -30,6 +30,11 @@ var pricing_default = {
30
30
  completion_per_1k: 0.075,
31
31
  cached_per_1k: 15e-4
32
32
  },
33
+ "claude-opus-5-5": {
34
+ prompt_per_1k: 4e-3,
35
+ completion_per_1k: 0.02,
36
+ cached_per_1k: 2e-4
37
+ },
33
38
  "claude-opus-5": {
34
39
  prompt_per_1k: 5e-3,
35
40
  completion_per_1k: 0.025,
@@ -359,7 +364,12 @@ import { readFileSync } from "fs";
359
364
  function modelPricing(pricing, provider, model) {
360
365
  const block = pricing[provider];
361
366
  if (!block || typeof block !== "object" || Array.isArray(block)) return null;
362
- const entry = block[model];
367
+ const table = block;
368
+ let entry = table[model];
369
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
370
+ const best = Object.keys(table).filter((k) => model.startsWith(k)).sort((a, b) => b.length - a.length)[0];
371
+ entry = best !== void 0 ? table[best] : void 0;
372
+ }
363
373
  if (!entry || typeof entry !== "object" || Array.isArray(entry)) return null;
364
374
  const e = entry;
365
375
  return {
@@ -716,6 +726,14 @@ async function acquireRateLimit(provider, deps) {
716
726
  // src/providers/anthropic.ts
717
727
  var ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages";
718
728
  var ANTHROPIC_VERSION_HEADER = "2023-06-01";
729
+ var ADAPTIVE_THINKING_PREFIXES = [
730
+ "claude-fable-5",
731
+ "claude-opus-5-5"
732
+ ];
733
+ function rejectsDisabledThinking(model) {
734
+ const m = model.toLowerCase();
735
+ return ADAPTIVE_THINKING_PREFIXES.some((p) => m.startsWith(p));
736
+ }
719
737
  var ANTHROPIC_STRUCTURED_TOOL_NAME = "structured_output";
720
738
  function applyPromptCaching(body, env = process.env) {
721
739
  const flag = (env["CROSSCHECK_ANTHROPIC_PROMPT_CACHE"] ?? "").trim();
@@ -760,7 +778,7 @@ function buildAnthropicRequest(opts) {
760
778
  }
761
779
  applyPromptCaching(body);
762
780
  if (isReasoningModel("anthropic", opts.model)) {
763
- if (opts.model.toLowerCase().startsWith("claude-fable-5")) {
781
+ if (rejectsDisabledThinking(opts.model)) {
764
782
  body.thinking = { type: "adaptive" };
765
783
  body.output_config = { effort: "low" };
766
784
  } else {
@@ -1280,7 +1298,7 @@ async function sendOpenAICompatible(args) {
1280
1298
 
1281
1299
  // src/providers/registry.ts
1282
1300
  var DEFAULT_MODELS = {
1283
- anthropic: "claude-opus-5",
1301
+ anthropic: "claude-opus-5-5",
1284
1302
  openai: "gpt-5.6-sol",
1285
1303
  xai: "grok-4-latest",
1286
1304
  mistral: "mistral-large-latest",
@@ -1297,7 +1315,12 @@ var DEFAULT_FALLBACKS = {
1297
1315
  // about.
1298
1316
  openai: ["gpt-5"],
1299
1317
  // 3.8 Flash is recent enough that some projects won't have it yet.
1300
- gemini: ["gemini-3.1-pro-preview"]
1318
+ gemini: ["gemini-3.1-pro-preview"],
1319
+ // Opus 5.5 is new enough that an account could still be waiting on it.
1320
+ // Opus 5 is the same family one step back — and this chain is consulted
1321
+ // ONLY for a model-access failure, never for a bad key or a rate limit,
1322
+ // so it can't quietly downgrade anyone who simply hit a 429.
1323
+ anthropic: ["claude-opus-5"]
1301
1324
  };
1302
1325
  var MODEL_ENV_VARS = {
1303
1326
  anthropic: "ANTHROPIC_MODEL",
@@ -1422,7 +1445,7 @@ import { z } from "zod";
1422
1445
 
1423
1446
  // src/server-meta.ts
1424
1447
  var SERVER_NAME = "crosscheck-agent";
1425
- var SERVER_VERSION = true ? "0.2.24" : "0.0.0-dev";
1448
+ var SERVER_VERSION = true ? "0.2.26" : "0.0.0-dev";
1426
1449
 
1427
1450
  // src/tools/audit.ts
1428
1451
  import { readdirSync, readFileSync as readFileSync3, statSync } from "fs";
@@ -5161,11 +5184,20 @@ ${ctxBody}` });
5161
5184
  });
5162
5185
  };
5163
5186
  const onAnswer = opts.onAnswer;
5164
- const workerCall = onAnswer ? async (p) => {
5187
+ const onPanelistStart = opts.onPanelistStart;
5188
+ const workerCall = onAnswer || onPanelistStart ? async (p) => {
5189
+ if (onPanelistStart) {
5190
+ try {
5191
+ onPanelistStart(p.name, p.model);
5192
+ } catch {
5193
+ }
5194
+ }
5165
5195
  const answer = await dispatchOne(p);
5166
- try {
5167
- onAnswer(answer, p.name);
5168
- } catch {
5196
+ if (onAnswer) {
5197
+ try {
5198
+ onAnswer(answer, p.name);
5199
+ } catch {
5200
+ }
5169
5201
  }
5170
5202
  return answer;
5171
5203
  } : dispatchOne;
@@ -9463,6 +9495,12 @@ ${prior.body}` });
9463
9495
  content: `This is round ${rnd} of ${maxRounds}. Reply for this round.`
9464
9496
  });
9465
9497
  for (const p of selected) {
9498
+ if (opts.onPanelistStart) {
9499
+ try {
9500
+ opts.onPanelistStart(p.name, p.model, rnd);
9501
+ } catch {
9502
+ }
9503
+ }
9466
9504
  const entry = await callPanelist(p, roundMessages);
9467
9505
  const withRound = { ...entry, round: rnd };
9468
9506
  transcript.push(withRound);
@@ -11912,7 +11950,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
11912
11950
  var DEFAULT_PACKAGE = "crosscheck-cli";
11913
11951
  var FETCH_TIMEOUT_MS = 3e3;
11914
11952
  function engineVersion() {
11915
- return true ? "0.2.24" : "0.0.0-dev";
11953
+ return true ? "0.2.26" : "0.0.0-dev";
11916
11954
  }
11917
11955
  function defaultUpdateCachePath() {
11918
11956
  const base = process.env["CROSSCHECK_DATA_DIR"] || path9.join(os.homedir() || os.tmpdir(), ".crosscheck");