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.js
CHANGED
|
@@ -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,
|
|
@@ -72,10 +77,40 @@ var pricing_default = {
|
|
|
72
77
|
}
|
|
73
78
|
},
|
|
74
79
|
openai: {
|
|
80
|
+
"gpt-6-astra": {
|
|
81
|
+
prompt_per_1k: 0.01,
|
|
82
|
+
completion_per_1k: 0.05,
|
|
83
|
+
cached_per_1k: 1e-3
|
|
84
|
+
},
|
|
85
|
+
"gpt-6-sol": {
|
|
86
|
+
prompt_per_1k: 2e-3,
|
|
87
|
+
completion_per_1k: 0.01,
|
|
88
|
+
cached_per_1k: 2e-4
|
|
89
|
+
},
|
|
90
|
+
"gpt-6-luna": {
|
|
91
|
+
prompt_per_1k: 1e-4,
|
|
92
|
+
completion_per_1k: 5e-4,
|
|
93
|
+
cached_per_1k: 1e-5
|
|
94
|
+
},
|
|
95
|
+
"gpt-5.6-sol": {
|
|
96
|
+
prompt_per_1k: 4e-3,
|
|
97
|
+
completion_per_1k: 0.02,
|
|
98
|
+
cached_per_1k: 4e-4
|
|
99
|
+
},
|
|
100
|
+
"gpt-5.6-terra": {
|
|
101
|
+
prompt_per_1k: 2e-3,
|
|
102
|
+
completion_per_1k: 0.012,
|
|
103
|
+
cached_per_1k: 2e-4
|
|
104
|
+
},
|
|
105
|
+
"gpt-5.6-luna": {
|
|
106
|
+
prompt_per_1k: 2e-4,
|
|
107
|
+
completion_per_1k: 12e-4,
|
|
108
|
+
cached_per_1k: 2e-5
|
|
109
|
+
},
|
|
75
110
|
"gpt-5.6": {
|
|
76
|
-
prompt_per_1k:
|
|
77
|
-
completion_per_1k: 0.
|
|
78
|
-
cached_per_1k:
|
|
111
|
+
prompt_per_1k: 4e-3,
|
|
112
|
+
completion_per_1k: 0.02,
|
|
113
|
+
cached_per_1k: 4e-4
|
|
79
114
|
},
|
|
80
115
|
"gpt-5.5": {
|
|
81
116
|
prompt_per_1k: 5e-3,
|
|
@@ -88,9 +123,14 @@ var pricing_default = {
|
|
|
88
123
|
cached_per_1k: 125e-6
|
|
89
124
|
},
|
|
90
125
|
"gpt-5-mini": {
|
|
91
|
-
prompt_per_1k:
|
|
92
|
-
completion_per_1k:
|
|
93
|
-
cached_per_1k: 25e-
|
|
126
|
+
prompt_per_1k: 25e-5,
|
|
127
|
+
completion_per_1k: 2e-3,
|
|
128
|
+
cached_per_1k: 25e-6
|
|
129
|
+
},
|
|
130
|
+
"gpt-5-nano": {
|
|
131
|
+
prompt_per_1k: 5e-5,
|
|
132
|
+
completion_per_1k: 4e-4,
|
|
133
|
+
cached_per_1k: 5e-6
|
|
94
134
|
},
|
|
95
135
|
"gpt-4o": {
|
|
96
136
|
prompt_per_1k: 25e-4,
|
|
@@ -113,19 +153,14 @@ var pricing_default = {
|
|
|
113
153
|
cached_per_1k: 15e-4
|
|
114
154
|
},
|
|
115
155
|
o3: {
|
|
116
|
-
prompt_per_1k:
|
|
117
|
-
completion_per_1k:
|
|
118
|
-
cached_per_1k: 5e-
|
|
156
|
+
prompt_per_1k: 2e-3,
|
|
157
|
+
completion_per_1k: 8e-3,
|
|
158
|
+
cached_per_1k: 5e-4
|
|
119
159
|
},
|
|
120
160
|
"o3-mini": {
|
|
121
161
|
prompt_per_1k: 11e-4,
|
|
122
162
|
completion_per_1k: 44e-4,
|
|
123
163
|
cached_per_1k: 55e-5
|
|
124
|
-
},
|
|
125
|
-
"gpt-6-astra": {
|
|
126
|
-
prompt_per_1k: 0.01,
|
|
127
|
-
completion_per_1k: 0.05,
|
|
128
|
-
cached_per_1k: 1e-3
|
|
129
164
|
}
|
|
130
165
|
},
|
|
131
166
|
xai: {
|
|
@@ -359,7 +394,12 @@ import { readFileSync } from "fs";
|
|
|
359
394
|
function modelPricing(pricing, provider, model) {
|
|
360
395
|
const block = pricing[provider];
|
|
361
396
|
if (!block || typeof block !== "object" || Array.isArray(block)) return null;
|
|
362
|
-
const
|
|
397
|
+
const table = block;
|
|
398
|
+
let entry = table[model];
|
|
399
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
400
|
+
const best = Object.keys(table).filter((k) => model.startsWith(k)).sort((a, b) => b.length - a.length)[0];
|
|
401
|
+
entry = best !== void 0 ? table[best] : void 0;
|
|
402
|
+
}
|
|
363
403
|
if (!entry || typeof entry !== "object" || Array.isArray(entry)) return null;
|
|
364
404
|
const e = entry;
|
|
365
405
|
return {
|
|
@@ -716,6 +756,14 @@ async function acquireRateLimit(provider, deps) {
|
|
|
716
756
|
// src/providers/anthropic.ts
|
|
717
757
|
var ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages";
|
|
718
758
|
var ANTHROPIC_VERSION_HEADER = "2023-06-01";
|
|
759
|
+
var ADAPTIVE_THINKING_PREFIXES = [
|
|
760
|
+
"claude-fable-5",
|
|
761
|
+
"claude-opus-5-5"
|
|
762
|
+
];
|
|
763
|
+
function rejectsDisabledThinking(model) {
|
|
764
|
+
const m = model.toLowerCase();
|
|
765
|
+
return ADAPTIVE_THINKING_PREFIXES.some((p) => m.startsWith(p));
|
|
766
|
+
}
|
|
719
767
|
var ANTHROPIC_STRUCTURED_TOOL_NAME = "structured_output";
|
|
720
768
|
function applyPromptCaching(body, env = process.env) {
|
|
721
769
|
const flag = (env["CROSSCHECK_ANTHROPIC_PROMPT_CACHE"] ?? "").trim();
|
|
@@ -760,7 +808,7 @@ function buildAnthropicRequest(opts) {
|
|
|
760
808
|
}
|
|
761
809
|
applyPromptCaching(body);
|
|
762
810
|
if (isReasoningModel("anthropic", opts.model)) {
|
|
763
|
-
if (opts.model
|
|
811
|
+
if (rejectsDisabledThinking(opts.model)) {
|
|
764
812
|
body.thinking = { type: "adaptive" };
|
|
765
813
|
body.output_config = { effort: "low" };
|
|
766
814
|
} else {
|
|
@@ -1280,8 +1328,8 @@ async function sendOpenAICompatible(args) {
|
|
|
1280
1328
|
|
|
1281
1329
|
// src/providers/registry.ts
|
|
1282
1330
|
var DEFAULT_MODELS = {
|
|
1283
|
-
anthropic: "claude-opus-5",
|
|
1284
|
-
openai: "gpt-
|
|
1331
|
+
anthropic: "claude-opus-5-5",
|
|
1332
|
+
openai: "gpt-6-sol",
|
|
1285
1333
|
xai: "grok-4-latest",
|
|
1286
1334
|
mistral: "mistral-large-latest",
|
|
1287
1335
|
groq: "llama-3.3-70b-versatile",
|
|
@@ -1297,7 +1345,12 @@ var DEFAULT_FALLBACKS = {
|
|
|
1297
1345
|
// about.
|
|
1298
1346
|
openai: ["gpt-5"],
|
|
1299
1347
|
// 3.8 Flash is recent enough that some projects won't have it yet.
|
|
1300
|
-
gemini: ["gemini-3.1-pro-preview"]
|
|
1348
|
+
gemini: ["gemini-3.1-pro-preview"],
|
|
1349
|
+
// Opus 5.5 is new enough that an account could still be waiting on it.
|
|
1350
|
+
// Opus 5 is the same family one step back — and this chain is consulted
|
|
1351
|
+
// ONLY for a model-access failure, never for a bad key or a rate limit,
|
|
1352
|
+
// so it can't quietly downgrade anyone who simply hit a 429.
|
|
1353
|
+
anthropic: ["claude-opus-5"]
|
|
1301
1354
|
};
|
|
1302
1355
|
var MODEL_ENV_VARS = {
|
|
1303
1356
|
anthropic: "ANTHROPIC_MODEL",
|
|
@@ -1422,7 +1475,7 @@ import { z } from "zod";
|
|
|
1422
1475
|
|
|
1423
1476
|
// src/server-meta.ts
|
|
1424
1477
|
var SERVER_NAME = "crosscheck-agent";
|
|
1425
|
-
var SERVER_VERSION = true ? "0.2.
|
|
1478
|
+
var SERVER_VERSION = true ? "0.2.27" : "0.0.0-dev";
|
|
1426
1479
|
|
|
1427
1480
|
// src/tools/audit.ts
|
|
1428
1481
|
import { readdirSync, readFileSync as readFileSync3, statSync } from "fs";
|
|
@@ -2996,13 +3049,25 @@ function numberOrNull(v) {
|
|
|
2996
3049
|
import { performance as performance2 } from "perf_hooks";
|
|
2997
3050
|
|
|
2998
3051
|
// src/core/co-reason.ts
|
|
2999
|
-
var CO_REASON_MODEL = "gpt-
|
|
3052
|
+
var CO_REASON_MODEL = "gpt-6-sol";
|
|
3053
|
+
var CO_REASON_ALTERNATE = "gpt-6-astra";
|
|
3054
|
+
var LABELS = {
|
|
3055
|
+
"gpt-6-sol": "GPT-6 Sol",
|
|
3056
|
+
"gpt-6-astra": "GPT-6 Astra",
|
|
3057
|
+
"gpt-5.6-sol": "GPT-5.6 Sol"
|
|
3058
|
+
};
|
|
3059
|
+
function coReasonLabel(model) {
|
|
3060
|
+
return LABELS[model] ?? model;
|
|
3061
|
+
}
|
|
3062
|
+
var CO_REASON_LABEL = coReasonLabel(CO_REASON_MODEL);
|
|
3000
3063
|
var CO_REASON_PROVIDER = "openai";
|
|
3001
|
-
|
|
3002
|
-
function pickCoReasoner(providers, upgradeRequested) {
|
|
3064
|
+
function pickCoReasoner(providers, upgradeRequested, openAiSeatModel) {
|
|
3003
3065
|
if (!upgradeRequested) return null;
|
|
3004
3066
|
const base = providers[CO_REASON_PROVIDER];
|
|
3005
|
-
|
|
3067
|
+
if (!base) return null;
|
|
3068
|
+
const seat = openAiSeatModel ?? base.model;
|
|
3069
|
+
const model = seat === CO_REASON_MODEL ? CO_REASON_ALTERNATE : CO_REASON_MODEL;
|
|
3070
|
+
return retargetProvider(base, model);
|
|
3006
3071
|
}
|
|
3007
3072
|
async function coReasonThenInject(opts) {
|
|
3008
3073
|
const { provider, messages, maxTokens } = opts;
|
|
@@ -3228,7 +3293,7 @@ function buildSuggestedUpgrade(toolName, assessment) {
|
|
|
3228
3293
|
model: UPGRADE_MODEL,
|
|
3229
3294
|
label: UPGRADE_LABEL,
|
|
3230
3295
|
reason: assessment.reason,
|
|
3231
|
-
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
|
|
3296
|
+
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.`
|
|
3232
3297
|
};
|
|
3233
3298
|
}
|
|
3234
3299
|
|
|
@@ -3531,8 +3596,9 @@ ${rubricText}`;
|
|
|
3531
3596
|
const upgradeRequested = isUpgradeRequested(args);
|
|
3532
3597
|
const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
|
|
3533
3598
|
const auditorForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : auditor;
|
|
3599
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
|
|
3534
3600
|
const coReason = await coReasonThenInject({
|
|
3535
|
-
provider:
|
|
3601
|
+
provider: coProvider,
|
|
3536
3602
|
messages: msgs,
|
|
3537
3603
|
maxTokens: 2048,
|
|
3538
3604
|
purpose: "audit-coreason"
|
|
@@ -3616,7 +3682,7 @@ ${rubricText}`;
|
|
|
3616
3682
|
model: UPGRADE_MODEL,
|
|
3617
3683
|
label: UPGRADE_LABEL,
|
|
3618
3684
|
seat: "auditor",
|
|
3619
|
-
...coReasoned ? { co_reasoner: { model:
|
|
3685
|
+
...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
3620
3686
|
};
|
|
3621
3687
|
} else if (upgradeRequested) {
|
|
3622
3688
|
result["reasoning_upgrade"] = {
|
|
@@ -4347,8 +4413,12 @@ var SUPER_MODELS = {
|
|
|
4347
4413
|
// Fable 5.1 verified present on the account; 5 as the fallback for accounts
|
|
4348
4414
|
// that haven't been granted 5.1 yet.
|
|
4349
4415
|
anthropic: ["claude-fable-5-1", UPGRADE_MODEL],
|
|
4350
|
-
// Astra
|
|
4351
|
-
|
|
4416
|
+
// Astra is live (verified against the account's model list 2026-09-23).
|
|
4417
|
+
// The fallback is named explicitly rather than reusing CO_REASON_MODEL:
|
|
4418
|
+
// that constant means "OpenAI's top reasoning model" for the max-reasoning
|
|
4419
|
+
// co-reasoner, which is a different question from "what should super fall
|
|
4420
|
+
// back to". Sharing the symbol silently coupled two unrelated decisions.
|
|
4421
|
+
openai: ["gpt-6-astra", "gpt-6-sol"],
|
|
4352
4422
|
// Explicitly left as-is per product decision. Note grok-4-latest is not in
|
|
4353
4423
|
// xAI's published model list, but it resolves in practice — real panel calls
|
|
4354
4424
|
// on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
|
|
@@ -7329,8 +7399,9 @@ ${recombineSys}` : recombineSys },
|
|
|
7329
7399
|
provider: synthProvider.name
|
|
7330
7400
|
} }
|
|
7331
7401
|
);
|
|
7402
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
|
|
7332
7403
|
const coReason = await coReasonThenInject({
|
|
7333
|
-
provider:
|
|
7404
|
+
provider: coProvider,
|
|
7334
7405
|
messages: recMsgs,
|
|
7335
7406
|
maxTokens,
|
|
7336
7407
|
purpose: "orchestrate-coreason"
|
|
@@ -7389,7 +7460,7 @@ ${recombineSys}` : recombineSys },
|
|
|
7389
7460
|
model: UPGRADE_MODEL,
|
|
7390
7461
|
label: UPGRADE_LABEL,
|
|
7391
7462
|
seat: "recombine/synthesis",
|
|
7392
|
-
...coReasoned ? { co_reasoner: { model:
|
|
7463
|
+
...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
7393
7464
|
};
|
|
7394
7465
|
} else if (upgradeRequested) {
|
|
7395
7466
|
result["reasoning_upgrade"] = {
|
|
@@ -8735,8 +8806,9 @@ CRITIQUES:
|
|
|
8735
8806
|
${critiqueBlock}`
|
|
8736
8807
|
}
|
|
8737
8808
|
];
|
|
8809
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested);
|
|
8738
8810
|
const coReason = await coReasonThenInject({
|
|
8739
|
-
provider:
|
|
8811
|
+
provider: coProvider,
|
|
8740
8812
|
messages: synthMessages,
|
|
8741
8813
|
maxTokens,
|
|
8742
8814
|
purpose: "coordinate-coreason"
|
|
@@ -8800,7 +8872,7 @@ ${critiqueBlock}`
|
|
|
8800
8872
|
model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
|
|
8801
8873
|
label: UPGRADE_LABEL,
|
|
8802
8874
|
seat: "synthesizer",
|
|
8803
|
-
...coReasonAns ? { co_reasoner: { model:
|
|
8875
|
+
...coReasonAns ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
8804
8876
|
};
|
|
8805
8877
|
} else if (upgradeRequested) {
|
|
8806
8878
|
result["reasoning_upgrade"] = {
|
|
@@ -9522,6 +9594,7 @@ ${prior.body}` });
|
|
|
9522
9594
|
let synthesisErrors = [];
|
|
9523
9595
|
let personaMeta = null;
|
|
9524
9596
|
let coReasoned = false;
|
|
9597
|
+
let coReasonerModel = null;
|
|
9525
9598
|
if (moderator) {
|
|
9526
9599
|
const synthProvider = superRequested && opts.providers["anthropic"] ? retargetForSuper(opts.providers["anthropic"]) : upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
|
|
9527
9600
|
const condensed = buildModeratorTranscript(transcript);
|
|
@@ -9549,13 +9622,16 @@ TRANSCRIPT:
|
|
|
9549
9622
|
${condensed}`
|
|
9550
9623
|
}
|
|
9551
9624
|
];
|
|
9625
|
+
const openAiSeat = selected.find((p) => p.name === "openai")?.model;
|
|
9626
|
+
const coProvider = pickCoReasoner(opts.providers, upgradeRequested, openAiSeat);
|
|
9552
9627
|
const coReason = await coReasonThenInject({
|
|
9553
|
-
provider:
|
|
9628
|
+
provider: coProvider,
|
|
9554
9629
|
messages: synthMessages,
|
|
9555
9630
|
maxTokens,
|
|
9556
9631
|
purpose: "debate-coreason"
|
|
9557
9632
|
});
|
|
9558
9633
|
synthMessages = coReason.messages;
|
|
9634
|
+
coReasonerModel = coProvider?.model ?? null;
|
|
9559
9635
|
if (coReason.answer) extraAnswers.push(coReason.answer);
|
|
9560
9636
|
coReasoned = coReason.answer !== null;
|
|
9561
9637
|
if (structuredOpt) {
|
|
@@ -9614,7 +9690,7 @@ ${condensed}`
|
|
|
9614
9690
|
model: superRequested ? superPrimary("anthropic") ?? UPGRADE_MODEL : UPGRADE_MODEL,
|
|
9615
9691
|
label: UPGRADE_LABEL,
|
|
9616
9692
|
seat: "moderator synthesis",
|
|
9617
|
-
...coReasoned ? { co_reasoner: { model:
|
|
9693
|
+
...coReasoned && coReasonerModel ? { co_reasoner: { model: coReasonerModel, label: coReasonLabel(coReasonerModel) } } : {}
|
|
9618
9694
|
};
|
|
9619
9695
|
} else if (upgradeRequested) {
|
|
9620
9696
|
result["reasoning_upgrade"] = {
|
|
@@ -11638,7 +11714,7 @@ Re-emit the FULL solution. No commentary.`
|
|
|
11638
11714
|
model: UPGRADE_MODEL,
|
|
11639
11715
|
label: UPGRADE_LABEL,
|
|
11640
11716
|
seat: "solver",
|
|
11641
|
-
...coReasoned ? { co_reasoner: { model:
|
|
11717
|
+
...coReasoned ? { co_reasoner: { model: coProvider.model, label: coReasonLabel(coProvider.model) } } : {}
|
|
11642
11718
|
};
|
|
11643
11719
|
} else if (upgradeRequested) {
|
|
11644
11720
|
result["reasoning_upgrade"] = {
|
|
@@ -11927,7 +12003,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
|
|
|
11927
12003
|
var DEFAULT_PACKAGE = "crosscheck-cli";
|
|
11928
12004
|
var FETCH_TIMEOUT_MS = 3e3;
|
|
11929
12005
|
function engineVersion() {
|
|
11930
|
-
return true ? "0.2.
|
|
12006
|
+
return true ? "0.2.27" : "0.0.0-dev";
|
|
11931
12007
|
}
|
|
11932
12008
|
function defaultUpdateCachePath() {
|
|
11933
12009
|
const base = process.env["CROSSCHECK_DATA_DIR"] || path9.join(os.homedir() || os.tmpdir(), ".crosscheck");
|