crosscheck-mcp 0.2.17 → 0.2.18
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 +107 -8
- package/dist/browser-ext.cjs.map +1 -1
- package/dist/browser-ext.js +107 -8
- package/dist/browser-ext.js.map +1 -1
- package/dist/node-stdio.cjs +109 -8
- package/dist/node-stdio.cjs.map +1 -1
- package/dist/node-stdio.js +109 -8
- package/dist/node-stdio.js.map +1 -1
- package/package.json +1 -1
package/dist/browser-ext.cjs
CHANGED
|
@@ -1353,7 +1353,7 @@ var import_zod = require("zod");
|
|
|
1353
1353
|
|
|
1354
1354
|
// src/server-meta.ts
|
|
1355
1355
|
var SERVER_NAME = "crosscheck-agent";
|
|
1356
|
-
var SERVER_VERSION = true ? "0.2.
|
|
1356
|
+
var SERVER_VERSION = true ? "0.2.18" : "0.0.0-dev";
|
|
1357
1357
|
|
|
1358
1358
|
// src/tools/audit.ts
|
|
1359
1359
|
var import_node_fs4 = require("fs");
|
|
@@ -10115,11 +10115,13 @@ function runListProviders(args, opts) {
|
|
|
10115
10115
|
const providers = [];
|
|
10116
10116
|
for (const name of names) {
|
|
10117
10117
|
const prov = opts.providers[name];
|
|
10118
|
+
const superChain = superRequested ? superChainFor(name) : [];
|
|
10118
10119
|
providers.push({
|
|
10119
10120
|
name,
|
|
10120
10121
|
available: prov !== void 0,
|
|
10121
10122
|
active: active.has(name),
|
|
10122
|
-
model: superRequested ?
|
|
10123
|
+
model: superRequested ? superPrimary(name) ?? null : prov ? prov.model : null,
|
|
10124
|
+
...superChain.length > 1 ? { fallbacks: superChain.slice(1) } : {}
|
|
10123
10125
|
});
|
|
10124
10126
|
}
|
|
10125
10127
|
const result = {
|
|
@@ -10131,6 +10133,80 @@ function runListProviders(args, opts) {
|
|
|
10131
10133
|
return result;
|
|
10132
10134
|
}
|
|
10133
10135
|
|
|
10136
|
+
// src/tools/models.ts
|
|
10137
|
+
var KNOWN_PROVIDERS7 = [
|
|
10138
|
+
"anthropic",
|
|
10139
|
+
"openai",
|
|
10140
|
+
"xai",
|
|
10141
|
+
"gemini",
|
|
10142
|
+
"mistral",
|
|
10143
|
+
"groq",
|
|
10144
|
+
"deepseek",
|
|
10145
|
+
"kimi",
|
|
10146
|
+
"qwen"
|
|
10147
|
+
];
|
|
10148
|
+
var PICKER_URL = "https://crosscheckagent.com/account/models";
|
|
10149
|
+
var SUPER_ENV_VARS2 = {
|
|
10150
|
+
anthropic: "ANTHROPIC_SUPER_MODEL",
|
|
10151
|
+
openai: "OPENAI_SUPER_MODEL",
|
|
10152
|
+
xai: "XAI_SUPER_MODEL",
|
|
10153
|
+
gemini: "GEMINI_SUPER_MODEL",
|
|
10154
|
+
kimi: "KIMI_SUPER_MODEL",
|
|
10155
|
+
qwen: "QWEN_SUPER_MODEL",
|
|
10156
|
+
mistral: "MISTRAL_SUPER_MODEL",
|
|
10157
|
+
groq: "GROQ_SUPER_MODEL",
|
|
10158
|
+
deepseek: "DEEPSEEK_SUPER_MODEL"
|
|
10159
|
+
};
|
|
10160
|
+
var MODEL_ENV_VARS2 = {
|
|
10161
|
+
anthropic: "ANTHROPIC_MODEL",
|
|
10162
|
+
openai: "OPENAI_MODEL",
|
|
10163
|
+
xai: "XAI_MODEL",
|
|
10164
|
+
gemini: "GEMINI_MODEL",
|
|
10165
|
+
kimi: "KIMI_MODEL",
|
|
10166
|
+
qwen: "QWEN_MODEL",
|
|
10167
|
+
mistral: "MISTRAL_MODEL",
|
|
10168
|
+
groq: "GROQ_MODEL",
|
|
10169
|
+
deepseek: "DEEPSEEK_MODEL"
|
|
10170
|
+
};
|
|
10171
|
+
function runModels(args, opts) {
|
|
10172
|
+
const env = opts.env ?? process.env;
|
|
10173
|
+
const active = new Set(opts.activeProviders ?? Object.keys(opts.providers));
|
|
10174
|
+
const onlySuper = isSuperRequested(args);
|
|
10175
|
+
const names = onlySuper ? SUPER_PROVIDER_NAMES : KNOWN_PROVIDERS7;
|
|
10176
|
+
const rows = [];
|
|
10177
|
+
for (const name of names) {
|
|
10178
|
+
const prov = opts.providers[name];
|
|
10179
|
+
const conferModel = prov ? prov.model : null;
|
|
10180
|
+
const conferPinned = Boolean(MODEL_ENV_VARS2[name] && env[MODEL_ENV_VARS2[name]]);
|
|
10181
|
+
const conferSource = !prov ? "unconfigured" : conferPinned ? "preference" : "default";
|
|
10182
|
+
const superVar = SUPER_ENV_VARS2[name];
|
|
10183
|
+
const superPinned = Boolean(superVar && env[superVar]);
|
|
10184
|
+
const chain = superChainFor(name, env);
|
|
10185
|
+
rows.push({
|
|
10186
|
+
provider: name,
|
|
10187
|
+
available: prov !== void 0,
|
|
10188
|
+
active: active.has(name),
|
|
10189
|
+
confer: conferModel,
|
|
10190
|
+
confer_source: conferSource,
|
|
10191
|
+
super: superPrimary(name, env) ?? null,
|
|
10192
|
+
super_source: superPinned ? "preference" : chain.length > 0 ? "default" : "unconfigured",
|
|
10193
|
+
...chain.length > 1 ? { super_fallbacks: chain.slice(1) } : {}
|
|
10194
|
+
});
|
|
10195
|
+
}
|
|
10196
|
+
const pinned = rows.filter(
|
|
10197
|
+
(r) => r.confer_source === "preference" || r.super_source === "preference"
|
|
10198
|
+
).length;
|
|
10199
|
+
return {
|
|
10200
|
+
tool: "models",
|
|
10201
|
+
providers: rows,
|
|
10202
|
+
...onlySuper ? { super_mode: true } : {},
|
|
10203
|
+
pinned_count: pinned,
|
|
10204
|
+
// Read-only by design — say so, and say where selection actually happens,
|
|
10205
|
+
// rather than leaving someone to guess why nothing changed.
|
|
10206
|
+
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.`
|
|
10207
|
+
};
|
|
10208
|
+
}
|
|
10209
|
+
|
|
10134
10210
|
// src/tools/pick.ts
|
|
10135
10211
|
var import_node_perf_hooks10 = require("perf_hooks");
|
|
10136
10212
|
var PICK_SCORES_SCHEMA = {
|
|
@@ -10450,7 +10526,7 @@ function resolveProviders7(names, available, allowlist) {
|
|
|
10450
10526
|
}
|
|
10451
10527
|
return out;
|
|
10452
10528
|
}
|
|
10453
|
-
var
|
|
10529
|
+
var KNOWN_PROVIDERS8 = [
|
|
10454
10530
|
"anthropic",
|
|
10455
10531
|
"openai",
|
|
10456
10532
|
"xai",
|
|
@@ -10464,7 +10540,7 @@ function unknownProviderError6(unknownNames, available) {
|
|
|
10464
10540
|
const typos = [];
|
|
10465
10541
|
for (const n of unknownNames) {
|
|
10466
10542
|
const key = n.trim().toLowerCase();
|
|
10467
|
-
if (
|
|
10543
|
+
if (KNOWN_PROVIDERS8.includes(key)) notRegistered.push(n);
|
|
10468
10544
|
else typos.push(n);
|
|
10469
10545
|
}
|
|
10470
10546
|
return {
|
|
@@ -11613,7 +11689,7 @@ function resolveProviders8(names, available, allowlist) {
|
|
|
11613
11689
|
}
|
|
11614
11690
|
return out;
|
|
11615
11691
|
}
|
|
11616
|
-
var
|
|
11692
|
+
var KNOWN_PROVIDERS9 = [
|
|
11617
11693
|
"anthropic",
|
|
11618
11694
|
"openai",
|
|
11619
11695
|
"xai",
|
|
@@ -11627,7 +11703,7 @@ function unknownProviderError7(unknownNames, available) {
|
|
|
11627
11703
|
const typos = [];
|
|
11628
11704
|
for (const n of unknownNames) {
|
|
11629
11705
|
const key = n.trim().toLowerCase();
|
|
11630
|
-
if (
|
|
11706
|
+
if (KNOWN_PROVIDERS9.includes(key)) notRegistered.push(n);
|
|
11631
11707
|
else typos.push(n);
|
|
11632
11708
|
}
|
|
11633
11709
|
return {
|
|
@@ -11677,7 +11753,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
|
|
|
11677
11753
|
var DEFAULT_PACKAGE = "crosscheck-cli";
|
|
11678
11754
|
var FETCH_TIMEOUT_MS = 3e3;
|
|
11679
11755
|
function engineVersion() {
|
|
11680
|
-
return true ? "0.2.
|
|
11756
|
+
return true ? "0.2.18" : "0.0.0-dev";
|
|
11681
11757
|
}
|
|
11682
11758
|
function defaultUpdateCachePath() {
|
|
11683
11759
|
const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path12.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");
|
|
@@ -12270,7 +12346,15 @@ var HELP_CATALOG = [
|
|
|
12270
12346
|
primaryArg: "(none)",
|
|
12271
12347
|
summary: "Show configured providers, their default models, and active status.",
|
|
12272
12348
|
example: "xc list_providers",
|
|
12273
|
-
detail: "Lists every provider Crosscheck knows about, which have keys configured, each one's default model, and whether it's active in the panel."
|
|
12349
|
+
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`."
|
|
12350
|
+
},
|
|
12351
|
+
{
|
|
12352
|
+
name: "models",
|
|
12353
|
+
category: "Operations",
|
|
12354
|
+
primaryArg: "(none)",
|
|
12355
|
+
summary: "Where to choose which model each provider uses, per panel.",
|
|
12356
|
+
example: "xc models \xB7 xc models super:true",
|
|
12357
|
+
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."
|
|
12274
12358
|
},
|
|
12275
12359
|
{
|
|
12276
12360
|
name: "recommend_panel",
|
|
@@ -12538,6 +12622,7 @@ function registerCoreTools(opts = {}) {
|
|
|
12538
12622
|
o.repoRoot
|
|
12539
12623
|
),
|
|
12540
12624
|
listProvidersTool(o.providers ?? {}, o.activeProviders ?? null, o.moderatorDefault ?? "anthropic"),
|
|
12625
|
+
modelsTool(o.providers ?? {}, o.activeProviders ?? null),
|
|
12541
12626
|
recallTool(o.storage, o.bridge),
|
|
12542
12627
|
sessionMemoryTool(o.storage, o.bridge),
|
|
12543
12628
|
scoreboardTool(o.storage, o.bridge, o.eventsPath),
|
|
@@ -12953,6 +13038,20 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
|
|
|
12953
13038
|
})
|
|
12954
13039
|
};
|
|
12955
13040
|
}
|
|
13041
|
+
function modelsTool(providers, activeProviders) {
|
|
13042
|
+
return {
|
|
13043
|
+
name: "models",
|
|
13044
|
+
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.",
|
|
13045
|
+
inputSchema: {
|
|
13046
|
+
type: "object",
|
|
13047
|
+
additionalProperties: true,
|
|
13048
|
+
properties: {
|
|
13049
|
+
super: { type: "boolean", description: "Narrow the listing to the super lineup." }
|
|
13050
|
+
}
|
|
13051
|
+
},
|
|
13052
|
+
handler: async (args) => runModels(args, { providers, activeProviders })
|
|
13053
|
+
};
|
|
13054
|
+
}
|
|
12956
13055
|
function reviewTool(providers, allowlist, bridge, storage, breakers, transcriptsDir, repoRoot) {
|
|
12957
13056
|
return {
|
|
12958
13057
|
name: "review",
|