crosscheck-mcp 0.2.17 → 0.2.19
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 +128 -17
- package/dist/browser-ext.cjs.map +1 -1
- package/dist/browser-ext.js +128 -17
- package/dist/browser-ext.js.map +1 -1
- package/dist/node-stdio.cjs +130 -17
- package/dist/node-stdio.cjs.map +1 -1
- package/dist/node-stdio.js +130 -17
- package/dist/node-stdio.js.map +1 -1
- package/package.json +1 -1
package/dist/node-stdio.js
CHANGED
|
@@ -1991,18 +1991,24 @@ async function sendOpenAICompatible(args) {
|
|
|
1991
1991
|
// src/providers/registry.ts
|
|
1992
1992
|
var DEFAULT_MODELS = {
|
|
1993
1993
|
anthropic: "claude-opus-5",
|
|
1994
|
-
|
|
1995
|
-
// capped at gpt-5) — gpt-5 is the safer, more broadly available default
|
|
1996
|
-
// until a user/org explicitly opts into 5.5 via `crosscheck models set`.
|
|
1997
|
-
openai: "gpt-5",
|
|
1994
|
+
openai: "gpt-5.6-sol",
|
|
1998
1995
|
xai: "grok-4-latest",
|
|
1999
1996
|
mistral: "mistral-large-latest",
|
|
2000
1997
|
groq: "llama-3.3-70b-versatile",
|
|
2001
1998
|
deepseek: "deepseek-chat",
|
|
2002
|
-
gemini: "gemini-3.
|
|
1999
|
+
gemini: "gemini-3.8-flash",
|
|
2003
2000
|
kimi: "kimi-k3",
|
|
2004
2001
|
qwen: "qwen3.8-max"
|
|
2005
2002
|
};
|
|
2003
|
+
var DEFAULT_FALLBACKS = {
|
|
2004
|
+
// gpt-5.6 requires a billing-enabled account and is excluded from the free
|
|
2005
|
+
// tier, so gpt-5 remains the broadly-available floor. One hop, not a
|
|
2006
|
+
// ladder — an intermediate 5.5 step would just be another model to reason
|
|
2007
|
+
// about.
|
|
2008
|
+
openai: ["gpt-5"],
|
|
2009
|
+
// 3.8 Flash is recent enough that some projects won't have it yet.
|
|
2010
|
+
gemini: ["gemini-3.1-pro-preview"]
|
|
2011
|
+
};
|
|
2006
2012
|
var MODEL_ENV_VARS = {
|
|
2007
2013
|
anthropic: "ANTHROPIC_MODEL",
|
|
2008
2014
|
openai: "OPENAI_MODEL",
|
|
@@ -2031,7 +2037,11 @@ function parseFallbackModels(raw) {
|
|
|
2031
2037
|
}
|
|
2032
2038
|
function fallbackModelsFor(env, provider) {
|
|
2033
2039
|
const envVar = MODEL_ENV_VARS[provider];
|
|
2034
|
-
|
|
2040
|
+
const fromEnv = envVar ? parseFallbackModels(env[`${envVar}_FALLBACKS`]) : [];
|
|
2041
|
+
if (fromEnv.length > 0) return fromEnv;
|
|
2042
|
+
const pinned = envVar ? env[envVar] : void 0;
|
|
2043
|
+
if (pinned && pinned !== DEFAULT_MODELS[provider]) return [];
|
|
2044
|
+
return DEFAULT_FALLBACKS[provider] ?? [];
|
|
2035
2045
|
}
|
|
2036
2046
|
function buildProviders(opts) {
|
|
2037
2047
|
const out = {};
|
|
@@ -2198,6 +2208,7 @@ var ROUTABLE_TOOLS = [
|
|
|
2198
2208
|
"explain",
|
|
2199
2209
|
// Operations
|
|
2200
2210
|
"list_providers",
|
|
2211
|
+
"models",
|
|
2201
2212
|
"recommend_panel",
|
|
2202
2213
|
"delegate",
|
|
2203
2214
|
"bench",
|
|
@@ -2254,7 +2265,7 @@ import { z } from "zod";
|
|
|
2254
2265
|
// src/server-meta.ts
|
|
2255
2266
|
init_esm_shims();
|
|
2256
2267
|
var SERVER_NAME = "crosscheck-agent";
|
|
2257
|
-
var SERVER_VERSION = true ? "0.2.
|
|
2268
|
+
var SERVER_VERSION = true ? "0.2.19" : "0.0.0-dev";
|
|
2258
2269
|
|
|
2259
2270
|
// src/tools/audit.ts
|
|
2260
2271
|
init_esm_shims();
|
|
@@ -3853,7 +3864,7 @@ import { performance as performance2 } from "perf_hooks";
|
|
|
3853
3864
|
|
|
3854
3865
|
// src/core/co-reason.ts
|
|
3855
3866
|
init_esm_shims();
|
|
3856
|
-
var CO_REASON_MODEL = "gpt-5.6";
|
|
3867
|
+
var CO_REASON_MODEL = "gpt-5.6-sol";
|
|
3857
3868
|
var CO_REASON_PROVIDER = "openai";
|
|
3858
3869
|
var CO_REASON_LABEL = "GPT-5.6";
|
|
3859
3870
|
function pickCoReasoner(providers, upgradeRequested) {
|
|
@@ -5224,8 +5235,10 @@ var SUPER_MODELS = {
|
|
|
5224
5235
|
// on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
|
|
5225
5236
|
// rather than a dead id.
|
|
5226
5237
|
xai: [DEFAULT_MODELS["xai"]],
|
|
5227
|
-
// 3.8 Flash
|
|
5228
|
-
|
|
5238
|
+
// 3.8 Flash is now BOTH the everyday default and the super pick for Gemini,
|
|
5239
|
+
// so this can no longer borrow DEFAULT_MODELS as its fallback — that would
|
|
5240
|
+
// repeat the same model and retry one that just failed. Named explicitly.
|
|
5241
|
+
gemini: ["gemini-3.8-flash", "gemini-3.1-pro-preview"],
|
|
5229
5242
|
kimi: [DEFAULT_MODELS["kimi"]],
|
|
5230
5243
|
qwen: [DEFAULT_MODELS["qwen"]]
|
|
5231
5244
|
};
|
|
@@ -11108,11 +11121,13 @@ function runListProviders(args, opts) {
|
|
|
11108
11121
|
const providers = [];
|
|
11109
11122
|
for (const name of names) {
|
|
11110
11123
|
const prov = opts.providers[name];
|
|
11124
|
+
const superChain = superRequested ? superChainFor(name) : [];
|
|
11111
11125
|
providers.push({
|
|
11112
11126
|
name,
|
|
11113
11127
|
available: prov !== void 0,
|
|
11114
11128
|
active: active.has(name),
|
|
11115
|
-
model: superRequested ?
|
|
11129
|
+
model: superRequested ? superPrimary(name) ?? null : prov ? prov.model : null,
|
|
11130
|
+
...superChain.length > 1 ? { fallbacks: superChain.slice(1) } : {}
|
|
11116
11131
|
});
|
|
11117
11132
|
}
|
|
11118
11133
|
const result = {
|
|
@@ -11124,6 +11139,81 @@ function runListProviders(args, opts) {
|
|
|
11124
11139
|
return result;
|
|
11125
11140
|
}
|
|
11126
11141
|
|
|
11142
|
+
// src/tools/models.ts
|
|
11143
|
+
init_esm_shims();
|
|
11144
|
+
var KNOWN_PROVIDERS7 = [
|
|
11145
|
+
"anthropic",
|
|
11146
|
+
"openai",
|
|
11147
|
+
"xai",
|
|
11148
|
+
"gemini",
|
|
11149
|
+
"mistral",
|
|
11150
|
+
"groq",
|
|
11151
|
+
"deepseek",
|
|
11152
|
+
"kimi",
|
|
11153
|
+
"qwen"
|
|
11154
|
+
];
|
|
11155
|
+
var PICKER_URL = "https://crosscheckagent.com/account/models";
|
|
11156
|
+
var SUPER_ENV_VARS2 = {
|
|
11157
|
+
anthropic: "ANTHROPIC_SUPER_MODEL",
|
|
11158
|
+
openai: "OPENAI_SUPER_MODEL",
|
|
11159
|
+
xai: "XAI_SUPER_MODEL",
|
|
11160
|
+
gemini: "GEMINI_SUPER_MODEL",
|
|
11161
|
+
kimi: "KIMI_SUPER_MODEL",
|
|
11162
|
+
qwen: "QWEN_SUPER_MODEL",
|
|
11163
|
+
mistral: "MISTRAL_SUPER_MODEL",
|
|
11164
|
+
groq: "GROQ_SUPER_MODEL",
|
|
11165
|
+
deepseek: "DEEPSEEK_SUPER_MODEL"
|
|
11166
|
+
};
|
|
11167
|
+
var MODEL_ENV_VARS2 = {
|
|
11168
|
+
anthropic: "ANTHROPIC_MODEL",
|
|
11169
|
+
openai: "OPENAI_MODEL",
|
|
11170
|
+
xai: "XAI_MODEL",
|
|
11171
|
+
gemini: "GEMINI_MODEL",
|
|
11172
|
+
kimi: "KIMI_MODEL",
|
|
11173
|
+
qwen: "QWEN_MODEL",
|
|
11174
|
+
mistral: "MISTRAL_MODEL",
|
|
11175
|
+
groq: "GROQ_MODEL",
|
|
11176
|
+
deepseek: "DEEPSEEK_MODEL"
|
|
11177
|
+
};
|
|
11178
|
+
function runModels(args, opts) {
|
|
11179
|
+
const env = opts.env ?? process.env;
|
|
11180
|
+
const active = new Set(opts.activeProviders ?? Object.keys(opts.providers));
|
|
11181
|
+
const onlySuper = isSuperRequested(args);
|
|
11182
|
+
const names = onlySuper ? SUPER_PROVIDER_NAMES : KNOWN_PROVIDERS7;
|
|
11183
|
+
const rows = [];
|
|
11184
|
+
for (const name of names) {
|
|
11185
|
+
const prov = opts.providers[name];
|
|
11186
|
+
const conferModel = prov ? prov.model : null;
|
|
11187
|
+
const conferPinned = Boolean(MODEL_ENV_VARS2[name] && env[MODEL_ENV_VARS2[name]]);
|
|
11188
|
+
const conferSource = !prov ? "unconfigured" : conferPinned ? "preference" : "default";
|
|
11189
|
+
const superVar = SUPER_ENV_VARS2[name];
|
|
11190
|
+
const superPinned = Boolean(superVar && env[superVar]);
|
|
11191
|
+
const chain = superChainFor(name, env);
|
|
11192
|
+
rows.push({
|
|
11193
|
+
provider: name,
|
|
11194
|
+
available: prov !== void 0,
|
|
11195
|
+
active: active.has(name),
|
|
11196
|
+
confer: conferModel,
|
|
11197
|
+
confer_source: conferSource,
|
|
11198
|
+
super: superPrimary(name, env) ?? null,
|
|
11199
|
+
super_source: superPinned ? "preference" : chain.length > 0 ? "default" : "unconfigured",
|
|
11200
|
+
...chain.length > 1 ? { super_fallbacks: chain.slice(1) } : {}
|
|
11201
|
+
});
|
|
11202
|
+
}
|
|
11203
|
+
const pinned = rows.filter(
|
|
11204
|
+
(r) => r.confer_source === "preference" || r.super_source === "preference"
|
|
11205
|
+
).length;
|
|
11206
|
+
return {
|
|
11207
|
+
tool: "models",
|
|
11208
|
+
providers: rows,
|
|
11209
|
+
...onlySuper ? { super_mode: true } : {},
|
|
11210
|
+
pinned_count: pinned,
|
|
11211
|
+
// Read-only by design — say so, and say where selection actually happens,
|
|
11212
|
+
// rather than leaving someone to guess why nothing changed.
|
|
11213
|
+
how_to_change: `This is read-only. Choose models at ${PICKER_URL} \u2014 a dropdown per provider, with separate tabs for \`confer\` and \`confer super\` \u2014 then run \`crosscheck models sync\`, or restart the MCP server. In the terminal, \`crosscheck models set <provider> <model>\` pins one and \`crosscheck models fallback <provider> <model>\` greenlights a fallback (tried ONLY when the pinned model is inaccessible, never for a bad key, a rate limit, or a 500). Terminal commands edit the confer set only; picking a separate super lineup is browser-only for now.`
|
|
11214
|
+
};
|
|
11215
|
+
}
|
|
11216
|
+
|
|
11127
11217
|
// src/tools/pick.ts
|
|
11128
11218
|
init_esm_shims();
|
|
11129
11219
|
import { performance as performance11 } from "perf_hooks";
|
|
@@ -11444,7 +11534,7 @@ function resolveProviders7(names, available, allowlist) {
|
|
|
11444
11534
|
}
|
|
11445
11535
|
return out;
|
|
11446
11536
|
}
|
|
11447
|
-
var
|
|
11537
|
+
var KNOWN_PROVIDERS8 = [
|
|
11448
11538
|
"anthropic",
|
|
11449
11539
|
"openai",
|
|
11450
11540
|
"xai",
|
|
@@ -11458,7 +11548,7 @@ function unknownProviderError6(unknownNames, available) {
|
|
|
11458
11548
|
const typos = [];
|
|
11459
11549
|
for (const n of unknownNames) {
|
|
11460
11550
|
const key = n.trim().toLowerCase();
|
|
11461
|
-
if (
|
|
11551
|
+
if (KNOWN_PROVIDERS8.includes(key)) notRegistered.push(n);
|
|
11462
11552
|
else typos.push(n);
|
|
11463
11553
|
}
|
|
11464
11554
|
return {
|
|
@@ -12614,7 +12704,7 @@ function resolveProviders8(names, available, allowlist) {
|
|
|
12614
12704
|
}
|
|
12615
12705
|
return out;
|
|
12616
12706
|
}
|
|
12617
|
-
var
|
|
12707
|
+
var KNOWN_PROVIDERS9 = [
|
|
12618
12708
|
"anthropic",
|
|
12619
12709
|
"openai",
|
|
12620
12710
|
"xai",
|
|
@@ -12628,7 +12718,7 @@ function unknownProviderError7(unknownNames, available) {
|
|
|
12628
12718
|
const typos = [];
|
|
12629
12719
|
for (const n of unknownNames) {
|
|
12630
12720
|
const key = n.trim().toLowerCase();
|
|
12631
|
-
if (
|
|
12721
|
+
if (KNOWN_PROVIDERS9.includes(key)) notRegistered.push(n);
|
|
12632
12722
|
else typos.push(n);
|
|
12633
12723
|
}
|
|
12634
12724
|
return {
|
|
@@ -12680,7 +12770,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
|
|
|
12680
12770
|
var DEFAULT_PACKAGE = "crosscheck-cli";
|
|
12681
12771
|
var FETCH_TIMEOUT_MS = 3e3;
|
|
12682
12772
|
function engineVersion() {
|
|
12683
|
-
return true ? "0.2.
|
|
12773
|
+
return true ? "0.2.19" : "0.0.0-dev";
|
|
12684
12774
|
}
|
|
12685
12775
|
function defaultUpdateCachePath() {
|
|
12686
12776
|
const base = process.env["CROSSCHECK_DATA_DIR"] || path10.join(os.homedir() || os.tmpdir(), ".crosscheck");
|
|
@@ -13275,7 +13365,15 @@ var HELP_CATALOG = [
|
|
|
13275
13365
|
primaryArg: "(none)",
|
|
13276
13366
|
summary: "Show configured providers, their default models, and active status.",
|
|
13277
13367
|
example: "xc list_providers",
|
|
13278
|
-
detail: "Lists every provider Crosscheck knows about, which have keys configured, each one's default model, and whether it's active in the panel."
|
|
13368
|
+
detail: "Lists every provider Crosscheck knows about, which have keys configured, each one's default model, and whether it's active in the panel. For what each provider will actually RUN on each panel, and how to change it, use `xc models`."
|
|
13369
|
+
},
|
|
13370
|
+
{
|
|
13371
|
+
name: "models",
|
|
13372
|
+
category: "Operations",
|
|
13373
|
+
primaryArg: "(none)",
|
|
13374
|
+
summary: "Where to choose which model each provider uses, per panel.",
|
|
13375
|
+
example: "xc models \xB7 xc models super:true",
|
|
13376
|
+
detail: "Every provider has a default model, and `super` has its own flagship lineup. Both are defaults you can change, per provider, per machine.\n\nEasiest in the browser: crosscheckagent.com/account/models. A dropdown per provider, with separate tabs for `confer` (the everyday panel, also used by debate/audit/plan) and `confer super` (the flagship lineup). The blank option names the engine's own default, so leaving a row alone tells you what you're getting. Save, then run `crosscheck models sync` in your terminal \u2014 or just restart the MCP server.\n\nFrom the terminal: `crosscheck models list` shows what this machine will actually use and why (env var, your preference, org policy, or default); `crosscheck models set <provider> <model>` pins one; `crosscheck models fallback <provider> <model>` greenlights a fallback, tried ONLY if the pinned model comes back inaccessible \u2014 never for a bad key, a rate limit, or a 500, since a different model wouldn't fix those.\n\nTwo things that catch people out. Leaving a provider blank in the super tab means 'inherit my confer choice', not 'reset to default'. And the terminal commands edit the confer set only \u2014 choosing a separate lineup for super is browser-only for now."
|
|
13279
13377
|
},
|
|
13280
13378
|
{
|
|
13281
13379
|
name: "recommend_panel",
|
|
@@ -13543,6 +13641,7 @@ function registerCoreTools(opts = {}) {
|
|
|
13543
13641
|
o.repoRoot
|
|
13544
13642
|
),
|
|
13545
13643
|
listProvidersTool(o.providers ?? {}, o.activeProviders ?? null, o.moderatorDefault ?? "anthropic"),
|
|
13644
|
+
modelsTool(o.providers ?? {}, o.activeProviders ?? null),
|
|
13546
13645
|
recallTool(o.storage, o.bridge),
|
|
13547
13646
|
sessionMemoryTool(o.storage, o.bridge),
|
|
13548
13647
|
scoreboardTool(o.storage, o.bridge, o.eventsPath),
|
|
@@ -13958,6 +14057,20 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
|
|
|
13958
14057
|
})
|
|
13959
14058
|
};
|
|
13960
14059
|
}
|
|
14060
|
+
function modelsTool(providers, activeProviders) {
|
|
14061
|
+
return {
|
|
14062
|
+
name: "models",
|
|
14063
|
+
description: "Show which model each provider will use, for BOTH panels \u2014 plain confer and `super` \u2014 with where each choice came from (your preference or the engine default), plus where to change them. Read-only; selection happens in the browser or the CLI.",
|
|
14064
|
+
inputSchema: {
|
|
14065
|
+
type: "object",
|
|
14066
|
+
additionalProperties: true,
|
|
14067
|
+
properties: {
|
|
14068
|
+
super: { type: "boolean", description: "Narrow the listing to the super lineup." }
|
|
14069
|
+
}
|
|
14070
|
+
},
|
|
14071
|
+
handler: async (args) => runModels(args, { providers, activeProviders })
|
|
14072
|
+
};
|
|
14073
|
+
}
|
|
13961
14074
|
function reviewTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
|
|
13962
14075
|
return {
|
|
13963
14076
|
name: "review",
|