crosscheck-mcp 0.2.13 → 0.2.14

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.
@@ -1266,8 +1266,21 @@ function isCreditsFailure(status, bodyText) {
1266
1266
  }
1267
1267
  return false;
1268
1268
  }
1269
- function httpFailureToProviderError(provider, status, bodyText, retryAfterS) {
1269
+ var MODEL_ACCESS_RE = /model_not_found|does not have access to model|does not exist|model[\s_]not[\s_]found|invalid model|unknown model|unsupported model/i;
1270
+ function isModelAccessFailure(status, bodyText) {
1271
+ if (status < 400 || status >= 500) return false;
1272
+ return MODEL_ACCESS_RE.test(bodyText);
1273
+ }
1274
+ function httpFailureToProviderError(provider, status, bodyText, retryAfterS, model) {
1270
1275
  const detail = bodyText.slice(0, 512);
1276
+ if (isModelAccessFailure(status, bodyText)) {
1277
+ const modelRef = model ? `"${model}"` : "the configured model";
1278
+ return new ProviderError(
1279
+ "client",
1280
+ `${provider}: your account/project doesn't have access to ${modelRef} (HTTP ${status}). This is a model-access problem, not a key problem \u2014 your ${provider} API key is fine, ${modelRef} just isn't enabled for this account/project. Fix: run \`crosscheck models set ${provider} <a-model-you-have-access-to>\` (or set ${provider.toUpperCase()}_MODEL in your .env until that's available). Detail: ${detail}`,
1281
+ { status }
1282
+ );
1283
+ }
1271
1284
  if (isCreditsFailure(status, bodyText)) {
1272
1285
  return new ProviderError(
1273
1286
  "auth",
@@ -1605,7 +1618,7 @@ async function sendAnthropic(args) {
1605
1618
  return { text, attempts: 1, usage: applyPricing(usage, args.pricing) };
1606
1619
  }
1607
1620
  const bodyText = await respLike.text().catch(() => "");
1608
- throw httpFailureToProviderError("anthropic", status, bodyText, parseRetryAfter(respLike));
1621
+ throw httpFailureToProviderError("anthropic", status, bodyText, parseRetryAfter(respLike), args.model);
1609
1622
  };
1610
1623
  await acquireRateLimit("anthropic", args.signal ? { signal: args.signal } : void 0);
1611
1624
  return sendWithRetry(attemptOnce, resolveRetryConfig(), args.signal);
@@ -1784,7 +1797,7 @@ async function sendGemini(args) {
1784
1797
  return { text, attempts: 1, usage: applyPricing2(usage, args.pricing) };
1785
1798
  }
1786
1799
  const bodyText = await respLike.text().catch(() => "");
1787
- throw httpFailureToProviderError("gemini", status, bodyText, parseRetryAfter(respLike));
1800
+ throw httpFailureToProviderError("gemini", status, bodyText, parseRetryAfter(respLike), args.model);
1788
1801
  };
1789
1802
  await acquireRateLimit("gemini", args.signal ? { signal: args.signal } : void 0);
1790
1803
  return sendWithRetry(attemptOnce, resolveRetryConfig(), args.signal);
@@ -1958,7 +1971,7 @@ async function sendOpenAICompatible(args) {
1958
1971
  return { text, attempts: 1, usage: applyPricing3(usage, args.pricing) };
1959
1972
  }
1960
1973
  const bodyText = await respLike.text().catch(() => "");
1961
- throw httpFailureToProviderError(args.provider, status, bodyText, parseRetryAfter(respLike));
1974
+ throw httpFailureToProviderError(args.provider, status, bodyText, parseRetryAfter(respLike), args.model);
1962
1975
  };
1963
1976
  await acquireRateLimit(args.provider, args.signal ? { signal: args.signal } : void 0);
1964
1977
  return sendWithRetry(attemptOnce, resolveRetryConfig(), args.signal);
@@ -1967,7 +1980,10 @@ async function sendOpenAICompatible(args) {
1967
1980
  // src/providers/registry.ts
1968
1981
  var DEFAULT_MODELS = {
1969
1982
  anthropic: "claude-opus-5",
1970
- openai: "gpt-5.5",
1983
+ // gpt-5.5 is not enabled on every OpenAI account/project (some are still
1984
+ // capped at gpt-5) — gpt-5 is the safer, more broadly available default
1985
+ // until a user/org explicitly opts into 5.5 via `crosscheck models set`.
1986
+ openai: "gpt-5",
1971
1987
  xai: "grok-4-latest",
1972
1988
  mistral: "mistral-large-latest",
1973
1989
  groq: "llama-3.3-70b-versatile",
@@ -2213,7 +2229,7 @@ var import_zod = require("zod");
2213
2229
  // src/server-meta.ts
2214
2230
  init_cjs_shims();
2215
2231
  var SERVER_NAME = "crosscheck-agent";
2216
- var SERVER_VERSION = true ? "0.2.13" : "0.0.0-dev";
2232
+ var SERVER_VERSION = true ? "0.2.14" : "0.0.0-dev";
2217
2233
 
2218
2234
  // src/tools/audit.ts
2219
2235
  init_cjs_shims();
@@ -12507,7 +12523,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
12507
12523
  var DEFAULT_PACKAGE = "crosscheck-cli";
12508
12524
  var FETCH_TIMEOUT_MS = 3e3;
12509
12525
  function engineVersion() {
12510
- return true ? "0.2.13" : "0.0.0-dev";
12526
+ return true ? "0.2.14" : "0.0.0-dev";
12511
12527
  }
12512
12528
  function defaultUpdateCachePath() {
12513
12529
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path13.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");