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.
@@ -110,10 +110,40 @@ var pricing_default = {
110
110
  }
111
111
  },
112
112
  openai: {
113
+ "gpt-6-astra": {
114
+ prompt_per_1k: 0.01,
115
+ completion_per_1k: 0.05,
116
+ cached_per_1k: 1e-3
117
+ },
118
+ "gpt-6-sol": {
119
+ prompt_per_1k: 2e-3,
120
+ completion_per_1k: 0.01,
121
+ cached_per_1k: 2e-4
122
+ },
123
+ "gpt-6-luna": {
124
+ prompt_per_1k: 1e-4,
125
+ completion_per_1k: 5e-4,
126
+ cached_per_1k: 1e-5
127
+ },
128
+ "gpt-5.6-sol": {
129
+ prompt_per_1k: 4e-3,
130
+ completion_per_1k: 0.02,
131
+ cached_per_1k: 4e-4
132
+ },
133
+ "gpt-5.6-terra": {
134
+ prompt_per_1k: 2e-3,
135
+ completion_per_1k: 0.012,
136
+ cached_per_1k: 2e-4
137
+ },
138
+ "gpt-5.6-luna": {
139
+ prompt_per_1k: 2e-4,
140
+ completion_per_1k: 12e-4,
141
+ cached_per_1k: 2e-5
142
+ },
113
143
  "gpt-5.6": {
114
- prompt_per_1k: 5e-3,
115
- completion_per_1k: 0.03,
116
- cached_per_1k: 5e-4
144
+ prompt_per_1k: 4e-3,
145
+ completion_per_1k: 0.02,
146
+ cached_per_1k: 4e-4
117
147
  },
118
148
  "gpt-5.5": {
119
149
  prompt_per_1k: 5e-3,
@@ -126,9 +156,14 @@ var pricing_default = {
126
156
  cached_per_1k: 125e-6
127
157
  },
128
158
  "gpt-5-mini": {
129
- prompt_per_1k: 5e-4,
130
- completion_per_1k: 15e-4,
131
- cached_per_1k: 25e-5
159
+ prompt_per_1k: 25e-5,
160
+ completion_per_1k: 2e-3,
161
+ cached_per_1k: 25e-6
162
+ },
163
+ "gpt-5-nano": {
164
+ prompt_per_1k: 5e-5,
165
+ completion_per_1k: 4e-4,
166
+ cached_per_1k: 5e-6
132
167
  },
133
168
  "gpt-4o": {
134
169
  prompt_per_1k: 25e-4,
@@ -151,19 +186,14 @@ var pricing_default = {
151
186
  cached_per_1k: 15e-4
152
187
  },
153
188
  o3: {
154
- prompt_per_1k: 0.01,
155
- completion_per_1k: 0.04,
156
- cached_per_1k: 5e-3
189
+ prompt_per_1k: 2e-3,
190
+ completion_per_1k: 8e-3,
191
+ cached_per_1k: 5e-4
157
192
  },
158
193
  "o3-mini": {
159
194
  prompt_per_1k: 11e-4,
160
195
  completion_per_1k: 44e-4,
161
196
  cached_per_1k: 55e-5
162
- },
163
- "gpt-6-astra": {
164
- prompt_per_1k: 0.01,
165
- completion_per_1k: 0.05,
166
- cached_per_1k: 1e-3
167
197
  }
168
198
  },
169
199
  xai: {
@@ -1332,7 +1362,7 @@ async function sendOpenAICompatible(args) {
1332
1362
  // src/providers/registry.ts
1333
1363
  var DEFAULT_MODELS = {
1334
1364
  anthropic: "claude-opus-5-5",
1335
- openai: "gpt-5.6-sol",
1365
+ openai: "gpt-6-sol",
1336
1366
  xai: "grok-4-latest",
1337
1367
  mistral: "mistral-large-latest",
1338
1368
  groq: "llama-3.3-70b-versatile",
@@ -1478,7 +1508,7 @@ var import_zod = require("zod");
1478
1508
 
1479
1509
  // src/server-meta.ts
1480
1510
  var SERVER_NAME = "crosscheck-agent";
1481
- var SERVER_VERSION = true ? "0.2.26" : "0.0.0-dev";
1511
+ var SERVER_VERSION = true ? "0.2.27" : "0.0.0-dev";
1482
1512
 
1483
1513
  // src/tools/audit.ts
1484
1514
  var import_node_fs4 = require("fs");
@@ -3052,13 +3082,25 @@ function numberOrNull(v) {
3052
3082
  var import_node_perf_hooks = require("perf_hooks");
3053
3083
 
3054
3084
  // src/core/co-reason.ts
3055
- var CO_REASON_MODEL = "gpt-5.6-sol";
3085
+ var CO_REASON_MODEL = "gpt-6-sol";
3086
+ var CO_REASON_ALTERNATE = "gpt-6-astra";
3087
+ var LABELS = {
3088
+ "gpt-6-sol": "GPT-6 Sol",
3089
+ "gpt-6-astra": "GPT-6 Astra",
3090
+ "gpt-5.6-sol": "GPT-5.6 Sol"
3091
+ };
3092
+ function coReasonLabel(model) {
3093
+ return LABELS[model] ?? model;
3094
+ }
3095
+ var CO_REASON_LABEL = coReasonLabel(CO_REASON_MODEL);
3056
3096
  var CO_REASON_PROVIDER = "openai";
3057
- var CO_REASON_LABEL = "GPT-5.6";
3058
- function pickCoReasoner(providers, upgradeRequested) {
3097
+ function pickCoReasoner(providers, upgradeRequested, openAiSeatModel) {
3059
3098
  if (!upgradeRequested) return null;
3060
3099
  const base = providers[CO_REASON_PROVIDER];
3061
- return base ? retargetProvider(base, CO_REASON_MODEL) : null;
3100
+ if (!base) return null;
3101
+ const seat = openAiSeatModel ?? base.model;
3102
+ const model = seat === CO_REASON_MODEL ? CO_REASON_ALTERNATE : CO_REASON_MODEL;
3103
+ return retargetProvider(base, model);
3062
3104
  }
3063
3105
  async function coReasonThenInject(opts) {
3064
3106
  const { provider, messages, maxTokens } = opts;
@@ -3284,7 +3326,7 @@ function buildSuggestedUpgrade(toolName, assessment) {
3284
3326
  model: UPGRADE_MODEL,
3285
3327
  label: UPGRADE_LABEL,
3286
3328
  reason: assessment.reason,
3287
- 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.`
3329
+ 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.`
3288
3330
  };
3289
3331
  }
3290
3332
 
@@ -3587,8 +3629,9 @@ ${rubricText}`;
3587
3629
  const upgradeRequested = isUpgradeRequested(args);
3588
3630
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
3589
3631
  const auditorForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : auditor;
3632
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
3590
3633
  const coReason = await coReasonThenInject({
3591
- provider: pickCoReasoner(opts.providers, upgradeRequested),
3634
+ provider: coProvider,
3592
3635
  messages: msgs,
3593
3636
  maxTokens: 2048,
3594
3637
  purpose: "audit-coreason"
@@ -3672,7 +3715,7 @@ ${rubricText}`;
3672
3715
  model: UPGRADE_MODEL,
3673
3716
  label: UPGRADE_LABEL,
3674
3717
  seat: "auditor",
3675
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
3718
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
3676
3719
  };
3677
3720
  } else if (upgradeRequested) {
3678
3721
  result["reasoning_upgrade"] = {
@@ -4403,8 +4446,12 @@ var SUPER_MODELS = {
4403
4446
  // Fable 5.1 verified present on the account; 5 as the fallback for accounts
4404
4447
  // that haven't been granted 5.1 yet.
4405
4448
  anthropic: ["claude-fable-5-1", UPGRADE_MODEL],
4406
- // Astra when it exists; gpt-5.6 until then. See the note above.
4407
- openai: ["gpt-6-astra", CO_REASON_MODEL],
4449
+ // Astra is live (verified against the account's model list 2026-09-23).
4450
+ // The fallback is named explicitly rather than reusing CO_REASON_MODEL:
4451
+ // that constant means "OpenAI's top reasoning model" for the max-reasoning
4452
+ // co-reasoner, which is a different question from "what should super fall
4453
+ // back to". Sharing the symbol silently coupled two unrelated decisions.
4454
+ openai: ["gpt-6-astra", "gpt-6-sol"],
4408
4455
  // Explicitly left as-is per product decision. Note grok-4-latest is not in
4409
4456
  // xAI's published model list, but it resolves in practice — real panel calls
4410
4457
  // on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
@@ -7368,8 +7415,9 @@ ${recombineSys}` : recombineSys },
7368
7415
  provider: synthProvider.name
7369
7416
  } }
7370
7417
  );
7418
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
7371
7419
  const coReason = await coReasonThenInject({
7372
- provider: pickCoReasoner(opts.providers, upgradeRequested),
7420
+ provider: coProvider,
7373
7421
  messages: recMsgs,
7374
7422
  maxTokens,
7375
7423
  purpose: "orchestrate-coreason"
@@ -7428,7 +7476,7 @@ ${recombineSys}` : recombineSys },
7428
7476
  model: UPGRADE_MODEL,
7429
7477
  label: UPGRADE_LABEL,
7430
7478
  seat: "recombine/synthesis",
7431
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
7479
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
7432
7480
  };
7433
7481
  } else if (upgradeRequested) {
7434
7482
  result["reasoning_upgrade"] = {
@@ -8774,8 +8822,9 @@ CRITIQUES:
8774
8822
  ${critiqueBlock}`
8775
8823
  }
8776
8824
  ];
8825
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
8777
8826
  const coReason = await coReasonThenInject({
8778
- provider: pickCoReasoner(opts.providers, upgradeRequested),
8827
+ provider: coProvider,
8779
8828
  messages: synthMessages,
8780
8829
  maxTokens,
8781
8830
  purpose: "coordinate-coreason"
@@ -8839,7 +8888,7 @@ ${critiqueBlock}`
8839
8888
  model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
8840
8889
  label: UPGRADE_LABEL,
8841
8890
  seat: "synthesizer",
8842
- ...coReasonAns ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
8891
+ ...coReasonAns ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
8843
8892
  };
8844
8893
  } else if (upgradeRequested) {
8845
8894
  result["reasoning_upgrade"] = {
@@ -9561,6 +9610,7 @@ ${prior.body}` });
9561
9610
  let synthesisErrors = [];
9562
9611
  let personaMeta = null;
9563
9612
  let coReasoned = false;
9613
+ let coReasonerModel = null;
9564
9614
  if (moderator) {
9565
9615
  const synthProvider = superRequested && opts.providers["anthropic"] ? retargetForSuper(opts.providers["anthropic"]) : upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
9566
9616
  const condensed = buildModeratorTranscript(transcript);
@@ -9588,13 +9638,16 @@ TRANSCRIPT:
9588
9638
  ${condensed}`
9589
9639
  }
9590
9640
  ];
9641
+ const openAiSeat = selected.find((p) => p.name === "openai")?.model;
9642
+ const coProvider = pickCoReasoner(opts.providers, upgradeRequested, openAiSeat);
9591
9643
  const coReason = await coReasonThenInject({
9592
- provider: pickCoReasoner(opts.providers, upgradeRequested),
9644
+ provider: coProvider,
9593
9645
  messages: synthMessages,
9594
9646
  maxTokens,
9595
9647
  purpose: "debate-coreason"
9596
9648
  });
9597
9649
  synthMessages = coReason.messages;
9650
+ coReasonerModel = coProvider?.model ?? null;
9598
9651
  if (coReason.answer) extraAnswers.push(coReason.answer);
9599
9652
  coReasoned = coReason.answer !== null;
9600
9653
  if (structuredOpt) {
@@ -9653,7 +9706,7 @@ ${condensed}`
9653
9706
  model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
9654
9707
  label: UPGRADE_LABEL,
9655
9708
  seat: "moderator synthesis",
9656
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
9709
+ ...coReasoned && coReasonerModel ? { co_reasoner: { model: coReasonerModel, label: coReasonLabel(coReasonerModel) } } : {}
9657
9710
  };
9658
9711
  } else if (upgradeRequested) {
9659
9712
  result["reasoning_upgrade"] = {
@@ -11677,7 +11730,7 @@ Re-emit the FULL solution. No commentary.`
11677
11730
  model: UPGRADE_MODEL,
11678
11731
  label: UPGRADE_LABEL,
11679
11732
  seat: "solver",
11680
- ...coReasoned ? { co_reasoner: { model: CO_REASON_MODEL, label: CO_REASON_LABEL } } : {}
11733
+ ...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
11681
11734
  };
11682
11735
  } else if (upgradeRequested) {
11683
11736
  result["reasoning_upgrade"] = {
@@ -11966,7 +12019,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
11966
12019
  var DEFAULT_PACKAGE = "crosscheck-cli";
11967
12020
  var FETCH_TIMEOUT_MS = 3e3;
11968
12021
  function engineVersion() {
11969
- return true ? "0.2.26" : "0.0.0-dev";
12022
+ return true ? "0.2.27" : "0.0.0-dev";
11970
12023
  }
11971
12024
  function defaultUpdateCachePath() {
11972
12025
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path12.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");