crosscheck-mcp 0.2.26 → 0.2.27

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.
package/dist/embed.js CHANGED
@@ -967,7 +967,7 @@ async function sendOpenAICompatible(args) {
967
967
  // src/providers/registry.ts
968
968
  var DEFAULT_MODELS = {
969
969
  anthropic: "claude-opus-5-5",
970
- openai: "gpt-5.6-sol",
970
+ openai: "gpt-6-sol",
971
971
  xai: "grok-4-latest",
972
972
  mistral: "mistral-large-latest",
973
973
  groq: "llama-3.3-70b-versatile",
@@ -1113,7 +1113,7 @@ import { z } from "zod";
1113
1113
 
1114
1114
  // src/server-meta.ts
1115
1115
  var SERVER_NAME = "crosscheck-agent";
1116
- var SERVER_VERSION = true ? "0.2.26" : "0.0.0-dev";
1116
+ var SERVER_VERSION = true ? "0.2.27" : "0.0.0-dev";
1117
1117
 
1118
1118
  // src/tools/audit.ts
1119
1119
  import { readdirSync, readFileSync as readFileSync3, statSync } from "fs";
@@ -2687,13 +2687,25 @@ function numberOrNull(v) {
2687
2687
  import { performance as performance2 } from "perf_hooks";
2688
2688
 
2689
2689
  // src/core/co-reason.ts
2690
- var CO_REASON_MODEL = "gpt-5.6-sol";
2690
+ var CO_REASON_MODEL = "gpt-6-sol";
2691
+ var CO_REASON_ALTERNATE = "gpt-6-astra";
2692
+ var LABELS = {
2693
+ "gpt-6-sol": "GPT-6 Sol",
2694
+ "gpt-6-astra": "GPT-6 Astra",
2695
+ "gpt-5.6-sol": "GPT-5.6 Sol"
2696
+ };
2697
+ function coReasonLabel(model) {
2698
+ return LABELS[model] ?? model;
2699
+ }
2700
+ var CO_REASON_LABEL = coReasonLabel(CO_REASON_MODEL);
2691
2701
  var CO_REASON_PROVIDER = "openai";
2692
- var CO_REASON_LABEL = "GPT-5.6";
2693
- function pickCoReasoner(providers, upgradeRequested) {
2702
+ function pickCoReasoner(providers, upgradeRequested, openAiSeatModel) {
2694
2703
  if (!upgradeRequested) return null;
2695
2704
  const base = providers[CO_REASON_PROVIDER];
2696
- return base ? retargetProvider(base, CO_REASON_MODEL) : null;
2705
+ if (!base) return null;
2706
+ const seat = openAiSeatModel ?? base.model;
2707
+ const model = seat === CO_REASON_MODEL ? CO_REASON_ALTERNATE : CO_REASON_MODEL;
2708
+ return retargetProvider(base, model);
2697
2709
  }
2698
2710
  async function coReasonThenInject(opts) {
2699
2711
  const { provider, messages, maxTokens } = opts;
@@ -2919,7 +2931,7 @@ function buildSuggestedUpgrade(toolName, assessment) {
2919
2931
  model: UPGRADE_MODEL,
2920
2932
  label: UPGRADE_LABEL,
2921
2933
  reason: assessment.reason,
2922
- how: `re-run \`${toolName}\` with reasoning:"max" (or upgrade:true) to route the lead reasoning seat to ${UPGRADE_LABEL}, and \u2014 when an OpenAI key is configured \u2014 add a GPT-5.6 second-opinion pass that ${UPGRADE_LABEL} weighs before finalizing. Other panel seats stay on their normal models.`
2934
+ how: `re-run \`${toolName}\` with reasoning:"max" (or upgrade:true) to route the lead reasoning seat to ${UPGRADE_LABEL}, and \u2014 when an OpenAI key is configured \u2014 add an OpenAI second-opinion pass that ${UPGRADE_LABEL} weighs before finalizing (the result names which model ran). Other panel seats stay on their normal models.`
2923
2935
  };
2924
2936
  }
2925
2937
 
@@ -3222,8 +3234,9 @@ ${rubricText}`;
3222
3234
  const upgradeRequested = isUpgradeRequested(args);
3223
3235
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
3224
3236
  const auditorForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : auditor;
3237
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
3225
3238
  const coReason = await coReasonThenInject({
3226
- provider: pickCoReasoner(opts.providers, upgradeRequested),
3239
+ provider: coProvider,
3227
3240
  messages: msgs,
3228
3241
  maxTokens: 2048,
3229
3242
  purpose: "audit-coreason"
@@ -3307,7 +3320,7 @@ ${rubricText}`;
3307
3320
  model: UPGRADE_MODEL,
3308
3321
  label: UPGRADE_LABEL,
3309
3322
  seat: "auditor",
3310
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
3323
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
3311
3324
  };
3312
3325
  } else if (upgradeRequested) {
3313
3326
  result["reasoning_upgrade"] = {
@@ -4038,8 +4051,12 @@ var SUPER_MODELS = {
4038
4051
  // Fable 5.1 verified present on the account; 5 as the fallback for accounts
4039
4052
  // that haven't been granted 5.1 yet.
4040
4053
  anthropic: ["claude-fable-5-1", UPGRADE_MODEL],
4041
- // Astra when it exists; gpt-5.6 until then. See the note above.
4042
- openai: ["gpt-6-astra", CO_REASON_MODEL],
4054
+ // Astra is live (verified against the account's model list 2026-09-23).
4055
+ // The fallback is named explicitly rather than reusing CO_REASON_MODEL:
4056
+ // that constant means "OpenAI's top reasoning model" for the max-reasoning
4057
+ // co-reasoner, which is a different question from "what should super fall
4058
+ // back to". Sharing the symbol silently coupled two unrelated decisions.
4059
+ openai: ["gpt-6-astra", "gpt-6-sol"],
4043
4060
  // Explicitly left as-is per product decision. Note grok-4-latest is not in
4044
4061
  // xAI's published model list, but it resolves in practice — real panel calls
4045
4062
  // on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
@@ -7020,8 +7037,9 @@ ${recombineSys}` : recombineSys },
7020
7037
  provider: synthProvider.name
7021
7038
  } }
7022
7039
  );
7040
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
7023
7041
  const coReason = await coReasonThenInject({
7024
- provider: pickCoReasoner(opts.providers, upgradeRequested),
7042
+ provider: coProvider,
7025
7043
  messages: recMsgs,
7026
7044
  maxTokens,
7027
7045
  purpose: "orchestrate-coreason"
@@ -7080,7 +7098,7 @@ ${recombineSys}` : recombineSys },
7080
7098
  model: UPGRADE_MODEL,
7081
7099
  label: UPGRADE_LABEL,
7082
7100
  seat: "recombine/synthesis",
7083
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
7101
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
7084
7102
  };
7085
7103
  } else if (upgradeRequested) {
7086
7104
  result["reasoning_upgrade"] = {
@@ -8426,8 +8444,9 @@ CRITIQUES:
8426
8444
  ${critiqueBlock}`
8427
8445
  }
8428
8446
  ];
8447
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
8429
8448
  const coReason = await coReasonThenInject({
8430
- provider: pickCoReasoner(opts.providers, upgradeRequested),
8449
+ provider: coProvider,
8431
8450
  messages: synthMessages,
8432
8451
  maxTokens,
8433
8452
  purpose: "coordinate-coreason"
@@ -8491,7 +8510,7 @@ ${critiqueBlock}`
8491
8510
  model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
8492
8511
  label: UPGRADE_LABEL,
8493
8512
  seat: "synthesizer",
8494
- ...coReasonAns ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
8513
+ ...coReasonAns ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
8495
8514
  };
8496
8515
  } else if (upgradeRequested) {
8497
8516
  result["reasoning_upgrade"] = {
@@ -9213,6 +9232,7 @@ ${prior.body}` });
9213
9232
  let synthesisErrors = [];
9214
9233
  let personaMeta = null;
9215
9234
  let coReasoned = false;
9235
+ let coReasonerModel = null;
9216
9236
  if (moderator) {
9217
9237
  const synthProvider = superRequested && opts.providers["anthropic"] ? retargetForSuper(opts.providers["anthropic"]) : upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
9218
9238
  const condensed = buildModeratorTranscript(transcript);
@@ -9240,13 +9260,16 @@ TRANSCRIPT:
9240
9260
  ${condensed}`
9241
9261
  }
9242
9262
  ];
9263
+ const openAiSeat = selected.find((p) => p.name === "openai")?.model;
9264
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested, openAiSeat);
9243
9265
  const coReason = await coReasonThenInject({
9244
- provider: pickCoReasoner(opts.providers, upgradeRequested),
9266
+ provider: coProvider,
9245
9267
  messages: synthMessages,
9246
9268
  maxTokens,
9247
9269
  purpose: "debate-coreason"
9248
9270
  });
9249
9271
  synthMessages = coReason.messages;
9272
+ coReasonerModel = coProvider?.model ?? null;
9250
9273
  if (coReason.answer) extraAnswers.push(coReason.answer);
9251
9274
  coReasoned = coReason.answer !== null;
9252
9275
  if (structuredOpt) {
@@ -9305,7 +9328,7 @@ ${condensed}`
9305
9328
  model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
9306
9329
  label: UPGRADE_LABEL,
9307
9330
  seat: "moderator synthesis",
9308
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
9331
+ ...coReasoned && coReasonerModel ? { co_reasoner: { model: coReasonerModel, label: coReasonLabel(coReasonerModel) } } : {}
9309
9332
  };
9310
9333
  } else if (upgradeRequested) {
9311
9334
  result["reasoning_upgrade"] = {
@@ -11329,7 +11352,7 @@ Re-emit the FULL solution. No commentary.`
11329
11352
  model: UPGRADE_MODEL,
11330
11353
  label: UPGRADE_LABEL,
11331
11354
  seat: "solver",
11332
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
11355
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
11333
11356
  };
11334
11357
  } else if (upgradeRequested) {
11335
11358
  result["reasoning_upgrade"] = {
@@ -11618,7 +11641,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
11618
11641
  var DEFAULT_PACKAGE = "crosscheck-cli";
11619
11642
  var FETCH_TIMEOUT_MS = 3e3;
11620
11643
  function engineVersion() {
11621
- return true ? "0.2.26" : "0.0.0-dev";
11644
+ return true ? "0.2.27" : "0.0.0-dev";
11622
11645
  }
11623
11646
  function defaultUpdateCachePath() {
11624
11647
  const base = process.env["CROSSCHECK_DATA_DIR"] || path9.join(os.homedir() || os.tmpdir(), ".crosscheck");