crosscheck-mcp 0.2.25 → 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/browser-ext.cjs +113 -37
- package/dist/browser-ext.cjs.map +1 -1
- package/dist/browser-ext.js +113 -37
- package/dist/browser-ext.js.map +1 -1
- package/dist/embed.cjs +66 -24
- package/dist/embed.cjs.map +1 -1
- package/dist/embed.js +66 -24
- package/dist/embed.js.map +1 -1
- package/dist/node-stdio.cjs +66 -25
- package/dist/node-stdio.cjs.map +1 -1
- package/dist/node-stdio.js +66 -25
- package/dist/node-stdio.js.map +1 -1
- package/dist/pricing.json +49 -14
- package/package.json +1 -1
package/dist/browser-ext.cjs
CHANGED
|
@@ -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,
|
|
@@ -105,10 +110,40 @@ var pricing_default = {
|
|
|
105
110
|
}
|
|
106
111
|
},
|
|
107
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
|
+
},
|
|
108
143
|
"gpt-5.6": {
|
|
109
|
-
prompt_per_1k:
|
|
110
|
-
completion_per_1k: 0.
|
|
111
|
-
cached_per_1k:
|
|
144
|
+
prompt_per_1k: 4e-3,
|
|
145
|
+
completion_per_1k: 0.02,
|
|
146
|
+
cached_per_1k: 4e-4
|
|
112
147
|
},
|
|
113
148
|
"gpt-5.5": {
|
|
114
149
|
prompt_per_1k: 5e-3,
|
|
@@ -121,9 +156,14 @@ var pricing_default = {
|
|
|
121
156
|
cached_per_1k: 125e-6
|
|
122
157
|
},
|
|
123
158
|
"gpt-5-mini": {
|
|
124
|
-
prompt_per_1k:
|
|
125
|
-
completion_per_1k:
|
|
126
|
-
cached_per_1k: 25e-
|
|
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
|
|
127
167
|
},
|
|
128
168
|
"gpt-4o": {
|
|
129
169
|
prompt_per_1k: 25e-4,
|
|
@@ -146,19 +186,14 @@ var pricing_default = {
|
|
|
146
186
|
cached_per_1k: 15e-4
|
|
147
187
|
},
|
|
148
188
|
o3: {
|
|
149
|
-
prompt_per_1k:
|
|
150
|
-
completion_per_1k:
|
|
151
|
-
cached_per_1k: 5e-
|
|
189
|
+
prompt_per_1k: 2e-3,
|
|
190
|
+
completion_per_1k: 8e-3,
|
|
191
|
+
cached_per_1k: 5e-4
|
|
152
192
|
},
|
|
153
193
|
"o3-mini": {
|
|
154
194
|
prompt_per_1k: 11e-4,
|
|
155
195
|
completion_per_1k: 44e-4,
|
|
156
196
|
cached_per_1k: 55e-5
|
|
157
|
-
},
|
|
158
|
-
"gpt-6-astra": {
|
|
159
|
-
prompt_per_1k: 0.01,
|
|
160
|
-
completion_per_1k: 0.05,
|
|
161
|
-
cached_per_1k: 1e-3
|
|
162
197
|
}
|
|
163
198
|
},
|
|
164
199
|
xai: {
|
|
@@ -392,7 +427,12 @@ var import_node_fs = require("fs");
|
|
|
392
427
|
function modelPricing(pricing, provider, model) {
|
|
393
428
|
const block = pricing[provider];
|
|
394
429
|
if (!block || typeof block !== "object" || Array.isArray(block)) return null;
|
|
395
|
-
const
|
|
430
|
+
const table = block;
|
|
431
|
+
let entry = table[model];
|
|
432
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
433
|
+
const best = Object.keys(table).filter((k) => model.startsWith(k)).sort((a, b) => b.length - a.length)[0];
|
|
434
|
+
entry = best !== void 0 ? table[best] : void 0;
|
|
435
|
+
}
|
|
396
436
|
if (!entry || typeof entry !== "object" || Array.isArray(entry)) return null;
|
|
397
437
|
const e = entry;
|
|
398
438
|
return {
|
|
@@ -749,6 +789,14 @@ async function acquireRateLimit(provider, deps) {
|
|
|
749
789
|
// src/providers/anthropic.ts
|
|
750
790
|
var ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages";
|
|
751
791
|
var ANTHROPIC_VERSION_HEADER = "2023-06-01";
|
|
792
|
+
var ADAPTIVE_THINKING_PREFIXES = [
|
|
793
|
+
"claude-fable-5",
|
|
794
|
+
"claude-opus-5-5"
|
|
795
|
+
];
|
|
796
|
+
function rejectsDisabledThinking(model) {
|
|
797
|
+
const m = model.toLowerCase();
|
|
798
|
+
return ADAPTIVE_THINKING_PREFIXES.some((p) => m.startsWith(p));
|
|
799
|
+
}
|
|
752
800
|
var ANTHROPIC_STRUCTURED_TOOL_NAME = "structured_output";
|
|
753
801
|
function applyPromptCaching(body, env = process.env) {
|
|
754
802
|
const flag = (env["CROSSCHECK_ANTHROPIC_PROMPT_CACHE"] ?? "").trim();
|
|
@@ -793,7 +841,7 @@ function buildAnthropicRequest(opts) {
|
|
|
793
841
|
}
|
|
794
842
|
applyPromptCaching(body);
|
|
795
843
|
if (isReasoningModel("anthropic", opts.model)) {
|
|
796
|
-
if (opts.model
|
|
844
|
+
if (rejectsDisabledThinking(opts.model)) {
|
|
797
845
|
body.thinking = { type: "adaptive" };
|
|
798
846
|
body.output_config = { effort: "low" };
|
|
799
847
|
} else {
|
|
@@ -1313,8 +1361,8 @@ async function sendOpenAICompatible(args) {
|
|
|
1313
1361
|
|
|
1314
1362
|
// src/providers/registry.ts
|
|
1315
1363
|
var DEFAULT_MODELS = {
|
|
1316
|
-
anthropic: "claude-opus-5",
|
|
1317
|
-
openai: "gpt-
|
|
1364
|
+
anthropic: "claude-opus-5-5",
|
|
1365
|
+
openai: "gpt-6-sol",
|
|
1318
1366
|
xai: "grok-4-latest",
|
|
1319
1367
|
mistral: "mistral-large-latest",
|
|
1320
1368
|
groq: "llama-3.3-70b-versatile",
|
|
@@ -1330,7 +1378,12 @@ var DEFAULT_FALLBACKS = {
|
|
|
1330
1378
|
// about.
|
|
1331
1379
|
openai: ["gpt-5"],
|
|
1332
1380
|
// 3.8 Flash is recent enough that some projects won't have it yet.
|
|
1333
|
-
gemini: ["gemini-3.1-pro-preview"]
|
|
1381
|
+
gemini: ["gemini-3.1-pro-preview"],
|
|
1382
|
+
// Opus 5.5 is new enough that an account could still be waiting on it.
|
|
1383
|
+
// Opus 5 is the same family one step back — and this chain is consulted
|
|
1384
|
+
// ONLY for a model-access failure, never for a bad key or a rate limit,
|
|
1385
|
+
// so it can't quietly downgrade anyone who simply hit a 429.
|
|
1386
|
+
anthropic: ["claude-opus-5"]
|
|
1334
1387
|
};
|
|
1335
1388
|
var MODEL_ENV_VARS = {
|
|
1336
1389
|
anthropic: "ANTHROPIC_MODEL",
|
|
@@ -1455,7 +1508,7 @@ var import_zod = require("zod");
|
|
|
1455
1508
|
|
|
1456
1509
|
// src/server-meta.ts
|
|
1457
1510
|
var SERVER_NAME = "crosscheck-agent";
|
|
1458
|
-
var SERVER_VERSION = true ? "0.2.
|
|
1511
|
+
var SERVER_VERSION = true ? "0.2.27" : "0.0.0-dev";
|
|
1459
1512
|
|
|
1460
1513
|
// src/tools/audit.ts
|
|
1461
1514
|
var import_node_fs4 = require("fs");
|
|
@@ -3029,13 +3082,25 @@ function numberOrNull(v) {
|
|
|
3029
3082
|
var import_node_perf_hooks = require("perf_hooks");
|
|
3030
3083
|
|
|
3031
3084
|
// src/core/co-reason.ts
|
|
3032
|
-
var CO_REASON_MODEL = "gpt-
|
|
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);
|
|
3033
3096
|
var CO_REASON_PROVIDER = "openai";
|
|
3034
|
-
|
|
3035
|
-
function pickCoReasoner(providers, upgradeRequested) {
|
|
3097
|
+
function pickCoReasoner(providers, upgradeRequested, openAiSeatModel) {
|
|
3036
3098
|
if (!upgradeRequested) return null;
|
|
3037
3099
|
const base = providers[CO_REASON_PROVIDER];
|
|
3038
|
-
|
|
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);
|
|
3039
3104
|
}
|
|
3040
3105
|
async function coReasonThenInject(opts) {
|
|
3041
3106
|
const { provider, messages, maxTokens } = opts;
|
|
@@ -3261,7 +3326,7 @@ function buildSuggestedUpgrade(toolName, assessment) {
|
|
|
3261
3326
|
model: UPGRADE_MODEL,
|
|
3262
3327
|
label: UPGRADE_LABEL,
|
|
3263
3328
|
reason: assessment.reason,
|
|
3264
|
-
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
|
|
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.`
|
|
3265
3330
|
};
|
|
3266
3331
|
}
|
|
3267
3332
|
|
|
@@ -3564,8 +3629,9 @@ ${rubricText}`;
|
|
|
3564
3629
|
const upgradeRequested = isUpgradeRequested(args);
|
|
3565
3630
|
const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
|
|
3566
3631
|
const auditorForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : auditor;
|
|
3632
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
|
|
3567
3633
|
const coReason = await coReasonThenInject({
|
|
3568
|
-
provider:
|
|
3634
|
+
provider: coProvider,
|
|
3569
3635
|
messages: msgs,
|
|
3570
3636
|
maxTokens: 2048,
|
|
3571
3637
|
purpose: "audit-coreason"
|
|
@@ -3649,7 +3715,7 @@ ${rubricText}`;
|
|
|
3649
3715
|
model: UPGRADE_MODEL,
|
|
3650
3716
|
label: UPGRADE_LABEL,
|
|
3651
3717
|
seat: "auditor",
|
|
3652
|
-
...coReasoned ? { co_reasoner: { model:
|
|
3718
|
+
...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
3653
3719
|
};
|
|
3654
3720
|
} else if (upgradeRequested) {
|
|
3655
3721
|
result["reasoning_upgrade"] = {
|
|
@@ -4380,8 +4446,12 @@ var SUPER_MODELS = {
|
|
|
4380
4446
|
// Fable 5.1 verified present on the account; 5 as the fallback for accounts
|
|
4381
4447
|
// that haven't been granted 5.1 yet.
|
|
4382
4448
|
anthropic: ["claude-fable-5-1", UPGRADE_MODEL],
|
|
4383
|
-
// Astra
|
|
4384
|
-
|
|
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"],
|
|
4385
4455
|
// Explicitly left as-is per product decision. Note grok-4-latest is not in
|
|
4386
4456
|
// xAI's published model list, but it resolves in practice — real panel calls
|
|
4387
4457
|
// on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
|
|
@@ -7345,8 +7415,9 @@ ${recombineSys}` : recombineSys },
|
|
|
7345
7415
|
provider: synthProvider.name
|
|
7346
7416
|
} }
|
|
7347
7417
|
);
|
|
7418
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
|
|
7348
7419
|
const coReason = await coReasonThenInject({
|
|
7349
|
-
provider:
|
|
7420
|
+
provider: coProvider,
|
|
7350
7421
|
messages: recMsgs,
|
|
7351
7422
|
maxTokens,
|
|
7352
7423
|
purpose: "orchestrate-coreason"
|
|
@@ -7405,7 +7476,7 @@ ${recombineSys}` : recombineSys },
|
|
|
7405
7476
|
model: UPGRADE_MODEL,
|
|
7406
7477
|
label: UPGRADE_LABEL,
|
|
7407
7478
|
seat: "recombine/synthesis",
|
|
7408
|
-
...coReasoned ? { co_reasoner: { model:
|
|
7479
|
+
...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
7409
7480
|
};
|
|
7410
7481
|
} else if (upgradeRequested) {
|
|
7411
7482
|
result["reasoning_upgrade"] = {
|
|
@@ -8751,8 +8822,9 @@ CRITIQUES:
|
|
|
8751
8822
|
${critiqueBlock}`
|
|
8752
8823
|
}
|
|
8753
8824
|
];
|
|
8825
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
|
|
8754
8826
|
const coReason = await coReasonThenInject({
|
|
8755
|
-
provider:
|
|
8827
|
+
provider: coProvider,
|
|
8756
8828
|
messages: synthMessages,
|
|
8757
8829
|
maxTokens,
|
|
8758
8830
|
purpose: "coordinate-coreason"
|
|
@@ -8816,7 +8888,7 @@ ${critiqueBlock}`
|
|
|
8816
8888
|
model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
|
|
8817
8889
|
label: UPGRADE_LABEL,
|
|
8818
8890
|
seat: "synthesizer",
|
|
8819
|
-
...coReasonAns ? { co_reasoner: { model:
|
|
8891
|
+
...coReasonAns ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
8820
8892
|
};
|
|
8821
8893
|
} else if (upgradeRequested) {
|
|
8822
8894
|
result["reasoning_upgrade"] = {
|
|
@@ -9538,6 +9610,7 @@ ${prior.body}` });
|
|
|
9538
9610
|
let synthesisErrors = [];
|
|
9539
9611
|
let personaMeta = null;
|
|
9540
9612
|
let coReasoned = false;
|
|
9613
|
+
let coReasonerModel = null;
|
|
9541
9614
|
if (moderator) {
|
|
9542
9615
|
const synthProvider = superRequested && opts.providers["anthropic"] ? retargetForSuper(opts.providers["anthropic"]) : upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
|
|
9543
9616
|
const condensed = buildModeratorTranscript(transcript);
|
|
@@ -9565,13 +9638,16 @@ TRANSCRIPT:
|
|
|
9565
9638
|
${condensed}`
|
|
9566
9639
|
}
|
|
9567
9640
|
];
|
|
9641
|
+
const openAiSeat = selected.find((p) => p.name === "openai")?.model;
|
|
9642
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested, openAiSeat);
|
|
9568
9643
|
const coReason = await coReasonThenInject({
|
|
9569
|
-
provider:
|
|
9644
|
+
provider: coProvider,
|
|
9570
9645
|
messages: synthMessages,
|
|
9571
9646
|
maxTokens,
|
|
9572
9647
|
purpose: "debate-coreason"
|
|
9573
9648
|
});
|
|
9574
9649
|
synthMessages = coReason.messages;
|
|
9650
|
+
coReasonerModel = coProvider?.model ?? null;
|
|
9575
9651
|
if (coReason.answer) extraAnswers.push(coReason.answer);
|
|
9576
9652
|
coReasoned = coReason.answer !== null;
|
|
9577
9653
|
if (structuredOpt) {
|
|
@@ -9630,7 +9706,7 @@ ${condensed}`
|
|
|
9630
9706
|
model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
|
|
9631
9707
|
label: UPGRADE_LABEL,
|
|
9632
9708
|
seat: "moderator synthesis",
|
|
9633
|
-
...coReasoned ? { co_reasoner: { model:
|
|
9709
|
+
...coReasoned && coReasonerModel ? { co_reasoner: { model: coReasonerModel, label: coReasonLabel(coReasonerModel) } } : {}
|
|
9634
9710
|
};
|
|
9635
9711
|
} else if (upgradeRequested) {
|
|
9636
9712
|
result["reasoning_upgrade"] = {
|
|
@@ -11654,7 +11730,7 @@ Re-emit the FULL solution. No commentary.`
|
|
|
11654
11730
|
model: UPGRADE_MODEL,
|
|
11655
11731
|
label: UPGRADE_LABEL,
|
|
11656
11732
|
seat: "solver",
|
|
11657
|
-
...coReasoned ? { co_reasoner: { model:
|
|
11733
|
+
...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
11658
11734
|
};
|
|
11659
11735
|
} else if (upgradeRequested) {
|
|
11660
11736
|
result["reasoning_upgrade"] = {
|
|
@@ -11943,7 +12019,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
|
|
|
11943
12019
|
var DEFAULT_PACKAGE = "crosscheck-cli";
|
|
11944
12020
|
var FETCH_TIMEOUT_MS = 3e3;
|
|
11945
12021
|
function engineVersion() {
|
|
11946
|
-
return true ? "0.2.
|
|
12022
|
+
return true ? "0.2.27" : "0.0.0-dev";
|
|
11947
12023
|
}
|
|
11948
12024
|
function defaultUpdateCachePath() {
|
|
11949
12025
|
const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path12.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");
|