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.cjs CHANGED
@@ -1006,7 +1006,7 @@ async function sendOpenAICompatible(args) {
1006
1006
  // src/providers/registry.ts
1007
1007
  var DEFAULT_MODELS = {
1008
1008
  anthropic: "claude-opus-5-5",
1009
- openai: "gpt-5.6-sol",
1009
+ openai: "gpt-6-sol",
1010
1010
  xai: "grok-4-latest",
1011
1011
  mistral: "mistral-large-latest",
1012
1012
  groq: "llama-3.3-70b-versatile",
@@ -1152,7 +1152,7 @@ var import_zod = require("zod");
1152
1152
 
1153
1153
  // src/server-meta.ts
1154
1154
  var SERVER_NAME = "crosscheck-agent";
1155
- var SERVER_VERSION = true ? "0.2.26" : "0.0.0-dev";
1155
+ var SERVER_VERSION = true ? "0.2.27" : "0.0.0-dev";
1156
1156
 
1157
1157
  // src/tools/audit.ts
1158
1158
  var import_node_fs4 = require("fs");
@@ -2726,13 +2726,25 @@ function numberOrNull(v) {
2726
2726
  var import_node_perf_hooks = require("perf_hooks");
2727
2727
 
2728
2728
  // src/core/co-reason.ts
2729
- var CO_REASON_MODEL = "gpt-5.6-sol";
2729
+ var CO_REASON_MODEL = "gpt-6-sol";
2730
+ var CO_REASON_ALTERNATE = "gpt-6-astra";
2731
+ var LABELS = {
2732
+ "gpt-6-sol": "GPT-6 Sol",
2733
+ "gpt-6-astra": "GPT-6 Astra",
2734
+ "gpt-5.6-sol": "GPT-5.6 Sol"
2735
+ };
2736
+ function coReasonLabel(model) {
2737
+ return LABELS[model] ?? model;
2738
+ }
2739
+ var CO_REASON_LABEL = coReasonLabel(CO_REASON_MODEL);
2730
2740
  var CO_REASON_PROVIDER = "openai";
2731
- var CO_REASON_LABEL = "GPT-5.6";
2732
- function pickCoReasoner(providers, upgradeRequested) {
2741
+ function pickCoReasoner(providers, upgradeRequested, openAiSeatModel) {
2733
2742
  if (!upgradeRequested) return null;
2734
2743
  const base = providers[CO_REASON_PROVIDER];
2735
- return base ? retargetProvider(base, CO_REASON_MODEL) : null;
2744
+ if (!base) return null;
2745
+ const seat = openAiSeatModel ?? base.model;
2746
+ const model = seat === CO_REASON_MODEL ? CO_REASON_ALTERNATE : CO_REASON_MODEL;
2747
+ return retargetProvider(base, model);
2736
2748
  }
2737
2749
  async function coReasonThenInject(opts) {
2738
2750
  const { provider, messages, maxTokens } = opts;
@@ -2958,7 +2970,7 @@ function buildSuggestedUpgrade(toolName, assessment) {
2958
2970
  model: UPGRADE_MODEL,
2959
2971
  label: UPGRADE_LABEL,
2960
2972
  reason: assessment.reason,
2961
- 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.`
2973
+ 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.`
2962
2974
  };
2963
2975
  }
2964
2976
 
@@ -3261,8 +3273,9 @@ ${rubricText}`;
3261
3273
  const upgradeRequested = isUpgradeRequested(args);
3262
3274
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
3263
3275
  const auditorForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : auditor;
3276
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
3264
3277
  const coReason = await coReasonThenInject({
3265
- provider: pickCoReasoner(opts.providers, upgradeRequested),
3278
+ provider: coProvider,
3266
3279
  messages: msgs,
3267
3280
  maxTokens: 2048,
3268
3281
  purpose: "audit-coreason"
@@ -3346,7 +3359,7 @@ ${rubricText}`;
3346
3359
  model: UPGRADE_MODEL,
3347
3360
  label: UPGRADE_LABEL,
3348
3361
  seat: "auditor",
3349
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
3362
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
3350
3363
  };
3351
3364
  } else if (upgradeRequested) {
3352
3365
  result["reasoning_upgrade"] = {
@@ -4077,8 +4090,12 @@ var SUPER_MODELS = {
4077
4090
  // Fable 5.1 verified present on the account; 5 as the fallback for accounts
4078
4091
  // that haven't been granted 5.1 yet.
4079
4092
  anthropic: ["claude-fable-5-1", UPGRADE_MODEL],
4080
- // Astra when it exists; gpt-5.6 until then. See the note above.
4081
- openai: ["gpt-6-astra", CO_REASON_MODEL],
4093
+ // Astra is live (verified against the account's model list 2026-09-23).
4094
+ // The fallback is named explicitly rather than reusing CO_REASON_MODEL:
4095
+ // that constant means "OpenAI's top reasoning model" for the max-reasoning
4096
+ // co-reasoner, which is a different question from "what should super fall
4097
+ // back to". Sharing the symbol silently coupled two unrelated decisions.
4098
+ openai: ["gpt-6-astra", "gpt-6-sol"],
4082
4099
  // Explicitly left as-is per product decision. Note grok-4-latest is not in
4083
4100
  // xAI's published model list, but it resolves in practice — real panel calls
4084
4101
  // on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
@@ -7042,8 +7059,9 @@ ${recombineSys}` : recombineSys },
7042
7059
  provider: synthProvider.name
7043
7060
  } }
7044
7061
  );
7062
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
7045
7063
  const coReason = await coReasonThenInject({
7046
- provider: pickCoReasoner(opts.providers, upgradeRequested),
7064
+ provider: coProvider,
7047
7065
  messages: recMsgs,
7048
7066
  maxTokens,
7049
7067
  purpose: "orchestrate-coreason"
@@ -7102,7 +7120,7 @@ ${recombineSys}` : recombineSys },
7102
7120
  model: UPGRADE_MODEL,
7103
7121
  label: UPGRADE_LABEL,
7104
7122
  seat: "recombine/synthesis",
7105
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
7123
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
7106
7124
  };
7107
7125
  } else if (upgradeRequested) {
7108
7126
  result["reasoning_upgrade"] = {
@@ -8448,8 +8466,9 @@ CRITIQUES:
8448
8466
  ${critiqueBlock}`
8449
8467
  }
8450
8468
  ];
8469
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
8451
8470
  const coReason = await coReasonThenInject({
8452
- provider: pickCoReasoner(opts.providers, upgradeRequested),
8471
+ provider: coProvider,
8453
8472
  messages: synthMessages,
8454
8473
  maxTokens,
8455
8474
  purpose: "coordinate-coreason"
@@ -8513,7 +8532,7 @@ ${critiqueBlock}`
8513
8532
  model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
8514
8533
  label: UPGRADE_LABEL,
8515
8534
  seat: "synthesizer",
8516
- ...coReasonAns ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
8535
+ ...coReasonAns ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
8517
8536
  };
8518
8537
  } else if (upgradeRequested) {
8519
8538
  result["reasoning_upgrade"] = {
@@ -9235,6 +9254,7 @@ ${prior.body}` });
9235
9254
  let synthesisErrors = [];
9236
9255
  let personaMeta = null;
9237
9256
  let coReasoned = false;
9257
+ let coReasonerModel = null;
9238
9258
  if (moderator) {
9239
9259
  const synthProvider = superRequested && opts.providers["anthropic"] ? retargetForSuper(opts.providers["anthropic"]) : upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
9240
9260
  const condensed = buildModeratorTranscript(transcript);
@@ -9262,13 +9282,16 @@ TRANSCRIPT:
9262
9282
  ${condensed}`
9263
9283
  }
9264
9284
  ];
9285
+ const openAiSeat = selected.find((p) => p.name === "openai")?.model;
9286
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested, openAiSeat);
9265
9287
  const coReason = await coReasonThenInject({
9266
- provider: pickCoReasoner(opts.providers, upgradeRequested),
9288
+ provider: coProvider,
9267
9289
  messages: synthMessages,
9268
9290
  maxTokens,
9269
9291
  purpose: "debate-coreason"
9270
9292
  });
9271
9293
  synthMessages = coReason.messages;
9294
+ coReasonerModel = coProvider?.model ?? null;
9272
9295
  if (coReason.answer) extraAnswers.push(coReason.answer);
9273
9296
  coReasoned = coReason.answer !== null;
9274
9297
  if (structuredOpt) {
@@ -9327,7 +9350,7 @@ ${condensed}`
9327
9350
  model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
9328
9351
  label: UPGRADE_LABEL,
9329
9352
  seat: "moderator synthesis",
9330
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
9353
+ ...coReasoned && coReasonerModel ? { co_reasoner: { model: coReasonerModel, label: coReasonLabel(coReasonerModel) } } : {}
9331
9354
  };
9332
9355
  } else if (upgradeRequested) {
9333
9356
  result["reasoning_upgrade"] = {
@@ -11351,7 +11374,7 @@ Re-emit the FULL solution. No commentary.`
11351
11374
  model: UPGRADE_MODEL,
11352
11375
  label: UPGRADE_LABEL,
11353
11376
  seat: "solver",
11354
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
11377
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
11355
11378
  };
11356
11379
  } else if (upgradeRequested) {
11357
11380
  result["reasoning_upgrade"] = {
@@ -11640,7 +11663,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
11640
11663
  var DEFAULT_PACKAGE = "crosscheck-cli";
11641
11664
  var FETCH_TIMEOUT_MS = 3e3;
11642
11665
  function engineVersion() {
11643
- return true ? "0.2.26" : "0.0.0-dev";
11666
+ return true ? "0.2.27" : "0.0.0-dev";
11644
11667
  }
11645
11668
  function defaultUpdateCachePath() {
11646
11669
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path12.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");