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.cjs
CHANGED
|
@@ -2015,18 +2015,24 @@ async function sendOpenAICompatible(args) {
|
|
|
2015
2015
|
// src/providers/registry.ts
|
|
2016
2016
|
var DEFAULT_MODELS = {
|
|
2017
2017
|
anthropic: "claude-opus-5",
|
|
2018
|
-
|
|
2019
|
-
// capped at gpt-5) — gpt-5 is the safer, more broadly available default
|
|
2020
|
-
// until a user/org explicitly opts into 5.5 via `crosscheck models set`.
|
|
2021
|
-
openai: "gpt-5",
|
|
2018
|
+
openai: "gpt-5.6-sol",
|
|
2022
2019
|
xai: "grok-4-latest",
|
|
2023
2020
|
mistral: "mistral-large-latest",
|
|
2024
2021
|
groq: "llama-3.3-70b-versatile",
|
|
2025
2022
|
deepseek: "deepseek-chat",
|
|
2026
|
-
gemini: "gemini-3.
|
|
2023
|
+
gemini: "gemini-3.8-flash",
|
|
2027
2024
|
kimi: "kimi-k3",
|
|
2028
2025
|
qwen: "qwen3.8-max"
|
|
2029
2026
|
};
|
|
2027
|
+
var DEFAULT_FALLBACKS = {
|
|
2028
|
+
// gpt-5.6 requires a billing-enabled account and is excluded from the free
|
|
2029
|
+
// tier, so gpt-5 remains the broadly-available floor. One hop, not a
|
|
2030
|
+
// ladder — an intermediate 5.5 step would just be another model to reason
|
|
2031
|
+
// about.
|
|
2032
|
+
openai: ["gpt-5"],
|
|
2033
|
+
// 3.8 Flash is recent enough that some projects won't have it yet.
|
|
2034
|
+
gemini: ["gemini-3.1-pro-preview"]
|
|
2035
|
+
};
|
|
2030
2036
|
var MODEL_ENV_VARS = {
|
|
2031
2037
|
anthropic: "ANTHROPIC_MODEL",
|
|
2032
2038
|
openai: "OPENAI_MODEL",
|
|
@@ -2055,7 +2061,11 @@ function parseFallbackModels(raw) {
|
|
|
2055
2061
|
}
|
|
2056
2062
|
function fallbackModelsFor(env, provider) {
|
|
2057
2063
|
const envVar = MODEL_ENV_VARS[provider];
|
|
2058
|
-
|
|
2064
|
+
const fromEnv = envVar ? parseFallbackModels(env[`${envVar}_FALLBACKS`]) : [];
|
|
2065
|
+
if (fromEnv.length > 0) return fromEnv;
|
|
2066
|
+
const pinned = envVar ? env[envVar] : void 0;
|
|
2067
|
+
if (pinned && pinned !== DEFAULT_MODELS[provider]) return [];
|
|
2068
|
+
return DEFAULT_FALLBACKS[provider] ?? [];
|
|
2059
2069
|
}
|
|
2060
2070
|
function buildProviders(opts) {
|
|
2061
2071
|
const out = {};
|
|
@@ -2219,6 +2229,7 @@ var ROUTABLE_TOOLS = [
|
|
|
2219
2229
|
"explain",
|
|
2220
2230
|
// Operations
|
|
2221
2231
|
"list_providers",
|
|
2232
|
+
"models",
|
|
2222
2233
|
"recommend_panel",
|
|
2223
2234
|
"delegate",
|
|
2224
2235
|
"bench",
|
|
@@ -2275,7 +2286,7 @@ var import_zod = require("zod");
|
|
|
2275
2286
|
// src/server-meta.ts
|
|
2276
2287
|
init_cjs_shims();
|
|
2277
2288
|
var SERVER_NAME = "crosscheck-agent";
|
|
2278
|
-
var SERVER_VERSION = true ? "0.2.
|
|
2289
|
+
var SERVER_VERSION = true ? "0.2.19" : "0.0.0-dev";
|
|
2279
2290
|
|
|
2280
2291
|
// src/tools/audit.ts
|
|
2281
2292
|
init_cjs_shims();
|
|
@@ -3874,7 +3885,7 @@ var import_node_perf_hooks = require("perf_hooks");
|
|
|
3874
3885
|
|
|
3875
3886
|
// src/core/co-reason.ts
|
|
3876
3887
|
init_cjs_shims();
|
|
3877
|
-
var CO_REASON_MODEL = "gpt-5.6";
|
|
3888
|
+
var CO_REASON_MODEL = "gpt-5.6-sol";
|
|
3878
3889
|
var CO_REASON_PROVIDER = "openai";
|
|
3879
3890
|
var CO_REASON_LABEL = "GPT-5.6";
|
|
3880
3891
|
function pickCoReasoner(providers, upgradeRequested) {
|
|
@@ -5245,8 +5256,10 @@ var SUPER_MODELS = {
|
|
|
5245
5256
|
// on it succeeded as recently as 2026-08-30 — so it is an unlisted alias
|
|
5246
5257
|
// rather than a dead id.
|
|
5247
5258
|
xai: [DEFAULT_MODELS["xai"]],
|
|
5248
|
-
// 3.8 Flash
|
|
5249
|
-
|
|
5259
|
+
// 3.8 Flash is now BOTH the everyday default and the super pick for Gemini,
|
|
5260
|
+
// so this can no longer borrow DEFAULT_MODELS as its fallback — that would
|
|
5261
|
+
// repeat the same model and retry one that just failed. Named explicitly.
|
|
5262
|
+
gemini: ["gemini-3.8-flash", "gemini-3.1-pro-preview"],
|
|
5250
5263
|
kimi: [DEFAULT_MODELS["kimi"]],
|
|
5251
5264
|
qwen: [DEFAULT_MODELS["qwen"]]
|
|
5252
5265
|
};
|
|
@@ -11112,11 +11125,13 @@ function runListProviders(args, opts) {
|
|
|
11112
11125
|
const providers = [];
|
|
11113
11126
|
for (const name of names) {
|
|
11114
11127
|
const prov = opts.providers[name];
|
|
11128
|
+
const superChain = superRequested ? superChainFor(name) : [];
|
|
11115
11129
|
providers.push({
|
|
11116
11130
|
name,
|
|
11117
11131
|
available: prov !== void 0,
|
|
11118
11132
|
active: active.has(name),
|
|
11119
|
-
model: superRequested ?
|
|
11133
|
+
model: superRequested ? superPrimary(name) ?? null : prov ? prov.model : null,
|
|
11134
|
+
...superChain.length > 1 ? { fallbacks: superChain.slice(1) } : {}
|
|
11120
11135
|
});
|
|
11121
11136
|
}
|
|
11122
11137
|
const result = {
|
|
@@ -11128,6 +11143,81 @@ function runListProviders(args, opts) {
|
|
|
11128
11143
|
return result;
|
|
11129
11144
|
}
|
|
11130
11145
|
|
|
11146
|
+
// src/tools/models.ts
|
|
11147
|
+
init_cjs_shims();
|
|
11148
|
+
var KNOWN_PROVIDERS7 = [
|
|
11149
|
+
"anthropic",
|
|
11150
|
+
"openai",
|
|
11151
|
+
"xai",
|
|
11152
|
+
"gemini",
|
|
11153
|
+
"mistral",
|
|
11154
|
+
"groq",
|
|
11155
|
+
"deepseek",
|
|
11156
|
+
"kimi",
|
|
11157
|
+
"qwen"
|
|
11158
|
+
];
|
|
11159
|
+
var PICKER_URL = "https://crosscheckagent.com/account/models";
|
|
11160
|
+
var SUPER_ENV_VARS2 = {
|
|
11161
|
+
anthropic: "ANTHROPIC_SUPER_MODEL",
|
|
11162
|
+
openai: "OPENAI_SUPER_MODEL",
|
|
11163
|
+
xai: "XAI_SUPER_MODEL",
|
|
11164
|
+
gemini: "GEMINI_SUPER_MODEL",
|
|
11165
|
+
kimi: "KIMI_SUPER_MODEL",
|
|
11166
|
+
qwen: "QWEN_SUPER_MODEL",
|
|
11167
|
+
mistral: "MISTRAL_SUPER_MODEL",
|
|
11168
|
+
groq: "GROQ_SUPER_MODEL",
|
|
11169
|
+
deepseek: "DEEPSEEK_SUPER_MODEL"
|
|
11170
|
+
};
|
|
11171
|
+
var MODEL_ENV_VARS2 = {
|
|
11172
|
+
anthropic: "ANTHROPIC_MODEL",
|
|
11173
|
+
openai: "OPENAI_MODEL",
|
|
11174
|
+
xai: "XAI_MODEL",
|
|
11175
|
+
gemini: "GEMINI_MODEL",
|
|
11176
|
+
kimi: "KIMI_MODEL",
|
|
11177
|
+
qwen: "QWEN_MODEL",
|
|
11178
|
+
mistral: "MISTRAL_MODEL",
|
|
11179
|
+
groq: "GROQ_MODEL",
|
|
11180
|
+
deepseek: "DEEPSEEK_MODEL"
|
|
11181
|
+
};
|
|
11182
|
+
function runModels(args, opts) {
|
|
11183
|
+
const env = opts.env ?? process.env;
|
|
11184
|
+
const active = new Set(opts.activeProviders ?? Object.keys(opts.providers));
|
|
11185
|
+
const onlySuper = isSuperRequested(args);
|
|
11186
|
+
const names = onlySuper ? SUPER_PROVIDER_NAMES : KNOWN_PROVIDERS7;
|
|
11187
|
+
const rows = [];
|
|
11188
|
+
for (const name of names) {
|
|
11189
|
+
const prov = opts.providers[name];
|
|
11190
|
+
const conferModel = prov ? prov.model : null;
|
|
11191
|
+
const conferPinned = Boolean(MODEL_ENV_VARS2[name] && env[MODEL_ENV_VARS2[name]]);
|
|
11192
|
+
const conferSource = !prov ? "unconfigured" : conferPinned ? "preference" : "default";
|
|
11193
|
+
const superVar = SUPER_ENV_VARS2[name];
|
|
11194
|
+
const superPinned = Boolean(superVar && env[superVar]);
|
|
11195
|
+
const chain = superChainFor(name, env);
|
|
11196
|
+
rows.push({
|
|
11197
|
+
provider: name,
|
|
11198
|
+
available: prov !== void 0,
|
|
11199
|
+
active: active.has(name),
|
|
11200
|
+
confer: conferModel,
|
|
11201
|
+
confer_source: conferSource,
|
|
11202
|
+
super: superPrimary(name, env) ?? null,
|
|
11203
|
+
super_source: superPinned ? "preference" : chain.length > 0 ? "default" : "unconfigured",
|
|
11204
|
+
...chain.length > 1 ? { super_fallbacks: chain.slice(1) } : {}
|
|
11205
|
+
});
|
|
11206
|
+
}
|
|
11207
|
+
const pinned = rows.filter(
|
|
11208
|
+
(r) => r.confer_source === "preference" || r.super_source === "preference"
|
|
11209
|
+
).length;
|
|
11210
|
+
return {
|
|
11211
|
+
tool: "models",
|
|
11212
|
+
providers: rows,
|
|
11213
|
+
...onlySuper ? { super_mode: true } : {},
|
|
11214
|
+
pinned_count: pinned,
|
|
11215
|
+
// Read-only by design — say so, and say where selection actually happens,
|
|
11216
|
+
// rather than leaving someone to guess why nothing changed.
|
|
11217
|
+
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.`
|
|
11218
|
+
};
|
|
11219
|
+
}
|
|
11220
|
+
|
|
11131
11221
|
// src/tools/pick.ts
|
|
11132
11222
|
init_cjs_shims();
|
|
11133
11223
|
var import_node_perf_hooks10 = require("perf_hooks");
|
|
@@ -11448,7 +11538,7 @@ function resolveProviders7(names, available, allowlist) {
|
|
|
11448
11538
|
}
|
|
11449
11539
|
return out;
|
|
11450
11540
|
}
|
|
11451
|
-
var
|
|
11541
|
+
var KNOWN_PROVIDERS8 = [
|
|
11452
11542
|
"anthropic",
|
|
11453
11543
|
"openai",
|
|
11454
11544
|
"xai",
|
|
@@ -11462,7 +11552,7 @@ function unknownProviderError6(unknownNames, available) {
|
|
|
11462
11552
|
const typos = [];
|
|
11463
11553
|
for (const n of unknownNames) {
|
|
11464
11554
|
const key = n.trim().toLowerCase();
|
|
11465
|
-
if (
|
|
11555
|
+
if (KNOWN_PROVIDERS8.includes(key)) notRegistered.push(n);
|
|
11466
11556
|
else typos.push(n);
|
|
11467
11557
|
}
|
|
11468
11558
|
return {
|
|
@@ -12618,7 +12708,7 @@ function resolveProviders8(names, available, allowlist) {
|
|
|
12618
12708
|
}
|
|
12619
12709
|
return out;
|
|
12620
12710
|
}
|
|
12621
|
-
var
|
|
12711
|
+
var KNOWN_PROVIDERS9 = [
|
|
12622
12712
|
"anthropic",
|
|
12623
12713
|
"openai",
|
|
12624
12714
|
"xai",
|
|
@@ -12632,7 +12722,7 @@ function unknownProviderError7(unknownNames, available) {
|
|
|
12632
12722
|
const typos = [];
|
|
12633
12723
|
for (const n of unknownNames) {
|
|
12634
12724
|
const key = n.trim().toLowerCase();
|
|
12635
|
-
if (
|
|
12725
|
+
if (KNOWN_PROVIDERS9.includes(key)) notRegistered.push(n);
|
|
12636
12726
|
else typos.push(n);
|
|
12637
12727
|
}
|
|
12638
12728
|
return {
|
|
@@ -12684,7 +12774,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
|
|
|
12684
12774
|
var DEFAULT_PACKAGE = "crosscheck-cli";
|
|
12685
12775
|
var FETCH_TIMEOUT_MS = 3e3;
|
|
12686
12776
|
function engineVersion() {
|
|
12687
|
-
return true ? "0.2.
|
|
12777
|
+
return true ? "0.2.19" : "0.0.0-dev";
|
|
12688
12778
|
}
|
|
12689
12779
|
function defaultUpdateCachePath() {
|
|
12690
12780
|
const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path13.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");
|
|
@@ -13279,7 +13369,15 @@ var HELP_CATALOG = [
|
|
|
13279
13369
|
primaryArg: "(none)",
|
|
13280
13370
|
summary: "Show configured providers, their default models, and active status.",
|
|
13281
13371
|
example: "xc list_providers",
|
|
13282
|
-
detail: "Lists every provider Crosscheck knows about, which have keys configured, each one's default model, and whether it's active in the panel."
|
|
13372
|
+
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`."
|
|
13373
|
+
},
|
|
13374
|
+
{
|
|
13375
|
+
name: "models",
|
|
13376
|
+
category: "Operations",
|
|
13377
|
+
primaryArg: "(none)",
|
|
13378
|
+
summary: "Where to choose which model each provider uses, per panel.",
|
|
13379
|
+
example: "xc models \xB7 xc models super:true",
|
|
13380
|
+
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."
|
|
13283
13381
|
},
|
|
13284
13382
|
{
|
|
13285
13383
|
name: "recommend_panel",
|
|
@@ -13547,6 +13645,7 @@ function registerCoreTools(opts = {}) {
|
|
|
13547
13645
|
o.repoRoot
|
|
13548
13646
|
),
|
|
13549
13647
|
listProvidersTool(o.providers ?? {}, o.activeProviders ?? null, o.moderatorDefault ?? "anthropic"),
|
|
13648
|
+
modelsTool(o.providers ?? {}, o.activeProviders ?? null),
|
|
13550
13649
|
recallTool(o.storage, o.bridge),
|
|
13551
13650
|
sessionMemoryTool(o.storage, o.bridge),
|
|
13552
13651
|
scoreboardTool(o.storage, o.bridge, o.eventsPath),
|
|
@@ -13962,6 +14061,20 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
|
|
|
13962
14061
|
})
|
|
13963
14062
|
};
|
|
13964
14063
|
}
|
|
14064
|
+
function modelsTool(providers, activeProviders) {
|
|
14065
|
+
return {
|
|
14066
|
+
name: "models",
|
|
14067
|
+
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.",
|
|
14068
|
+
inputSchema: {
|
|
14069
|
+
type: "object",
|
|
14070
|
+
additionalProperties: true,
|
|
14071
|
+
properties: {
|
|
14072
|
+
super: { type: "boolean", description: "Narrow the listing to the super lineup." }
|
|
14073
|
+
}
|
|
14074
|
+
},
|
|
14075
|
+
handler: async (args) => runModels(args, { providers, activeProviders })
|
|
14076
|
+
};
|
|
14077
|
+
}
|
|
13965
14078
|
function reviewTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
|
|
13966
14079
|
return {
|
|
13967
14080
|
name: "review",
|