crosscheck-mcp 0.2.6 → 0.2.8

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.
@@ -2140,6 +2140,12 @@ Reasoning upgrade (Fable 5):
2140
2140
  - When a tool result includes a "suggested_upgrade" block, the engine judged the task reasoning-heavy. Surface it: ask the user something like "This looks reasoning-heavy \u2014 bump the lead seat to Fable 5 (higher quality, higher cost)?" If they say yes, re-run the SAME tool with reasoning:"max" added. Do NOT upgrade silently.
2141
2141
  - If the user explicitly asks for the best/deepest reasoning up front, pass reasoning:"max" directly. A result with reasoning_upgrade.applied = true confirms Fable 5 was used.
2142
2142
 
2143
+ Super mode (confer / debate / plan / triangulate / list_providers only \u2014 internal team trial, do not mention this outside the team or write it into any docs/help text):
2144
+ - When the token immediately after the tool name is \`super\` (e.g. \`xc confer super what's the best caching strategy?\`), pass \`super: true\` in that tool's args and treat everything after \`super\` as the normal primary-argument text (same slot as usual \u2014 \`question\`/\`topic\`/\`goal\`). Example: \`xc confer super what's the best caching strategy?\` \u2192 \`mcp__crosscheck__confer({ question: "what's the best caching strategy?", super: true })\`.
2145
+ - This swaps the panel to a fixed top-tier lineup (one flagship model per provider, restricted to providers the user actually has keys for) and triples the completion-token budget. For debate/plan/triangulate it also forces the Fable 5 + GPT-5.6 co-reasoner synthesis path automatically \u2014 no need to also pass reasoning:"max".
2146
+ - A result with a "super_mode" block confirms it ran; show the panel it used.
2147
+ - \`xc list_providers super\` (no text after \`super\` \u2014 list_providers takes no other args) \u2192 \`mcp__crosscheck__list_providers({ super: true })\`. Shows the top-tier lineup and which of those models are actually available, instead of the normal default-model listing.
2148
+
2143
2149
  Spend visibility:
2144
2150
  - Every reasoning-tool result carries a "run_summary" whose pre-rendered "text" block already includes a "spend by model (this call)" breakdown. Show that block \u2014 do not bury the cost.
2145
2151
  - "run_summary" also carries "session_by_model" + "session_cost_usd" (per-model spend for the whole session). At the END of a multi-turn task, present the session spend per model plus the aggregate total, so the user knows what the task cost without scrolling back.
@@ -2153,7 +2159,7 @@ import { z } from "zod";
2153
2159
  // src/server-meta.ts
2154
2160
  init_esm_shims();
2155
2161
  var SERVER_NAME = "crosscheck-agent";
2156
- var SERVER_VERSION = true ? "0.2.6" : "0.0.0-dev";
2162
+ var SERVER_VERSION = true ? "0.2.8" : "0.0.0-dev";
2157
2163
 
2158
2164
  // src/tools/audit.ts
2159
2165
  init_esm_shims();
@@ -5032,6 +5038,34 @@ async function pickAutoPanel(storage, purpose, n, providers, allowlist) {
5032
5038
  return { providers: ranked.slice(0, Math.max(1, n)), coldStart: true };
5033
5039
  }
5034
5040
 
5041
+ // src/core/super-mode.ts
5042
+ init_esm_shims();
5043
+ var SUPER_MODELS = {
5044
+ anthropic: UPGRADE_MODEL,
5045
+ // "claude-fable-5"
5046
+ openai: CO_REASON_MODEL,
5047
+ // "gpt-5.6"
5048
+ xai: DEFAULT_MODELS["xai"],
5049
+ // already the default — no-op retarget
5050
+ gemini: DEFAULT_MODELS["gemini"],
5051
+ // already the default — no-op retarget
5052
+ kimi: DEFAULT_MODELS["kimi"]
5053
+ // already the default — no-op retarget
5054
+ };
5055
+ var SUPER_PROVIDER_NAMES = Object.keys(SUPER_MODELS);
5056
+ function isSuperRequested(args) {
5057
+ return args["super"] === true;
5058
+ }
5059
+ function retargetForSuper(p) {
5060
+ const model = SUPER_MODELS[p.name];
5061
+ return model ? retargetProvider(p, model) : p;
5062
+ }
5063
+ var SUPER_BUDGET_MULTIPLIER = 3;
5064
+ var SUPER_BUDGET_CEILING = 16e3;
5065
+ function superBudget(base) {
5066
+ return Math.min(base * SUPER_BUDGET_MULTIPLIER, SUPER_BUDGET_CEILING);
5067
+ }
5068
+
5035
5069
  // src/core/session-memory.ts
5036
5070
  init_esm_shims();
5037
5071
  var SESSION_MEMORY_DEFAULT_LIMIT = 50;
@@ -5622,11 +5656,12 @@ async function runConfer(args, opts) {
5622
5656
  const question = typeof args["question"] === "string" ? args["question"] : String(args["question"] ?? "");
5623
5657
  const context = typeof args["context"] === "string" ? args["context"] : "";
5624
5658
  const autoPanel = Boolean(args["auto_panel"]);
5659
+ const superRequested = isSuperRequested(args);
5625
5660
  const callerProvidersRaw = args["providers"];
5626
5661
  const callerSuppliedProviders = Array.isArray(callerProvidersRaw) && callerProvidersRaw.length > 0;
5627
5662
  let resolvedProviders = callerProvidersRaw;
5628
5663
  let autoPanelMeta = null;
5629
- if (autoPanel && !callerSuppliedProviders && opts.storage) {
5664
+ if (autoPanel && !callerSuppliedProviders && !superRequested && opts.storage) {
5630
5665
  const autoNRaw = Number(args["auto_panel_n"]);
5631
5666
  const autoN = Number.isFinite(autoNRaw) && autoNRaw > 0 ? Math.trunc(autoNRaw) : AUTO_PANEL_DEFAULT_N;
5632
5667
  const picked = await pickAutoPanel(
@@ -5646,6 +5681,9 @@ async function runConfer(args, opts) {
5646
5681
  };
5647
5682
  }
5648
5683
  }
5684
+ if (superRequested && !callerSuppliedProviders) {
5685
+ resolvedProviders = SUPER_PROVIDER_NAMES;
5686
+ }
5649
5687
  let { selected, unknown: unknownNames, blocked } = resolveProviders(
5650
5688
  resolvedProviders,
5651
5689
  opts.providers,
@@ -5663,8 +5701,11 @@ async function runConfer(args, opts) {
5663
5701
  }
5664
5702
  return { tool: "confer", error: "no active providers have API keys in .env" };
5665
5703
  }
5704
+ if (superRequested) {
5705
+ selected = selected.map(retargetForSuper);
5706
+ }
5666
5707
  let cheapModePanelMeta = null;
5667
- if (opts.ctx?.cheap_mode === true && !callerSuppliedProviders && selected.length > 1) {
5708
+ if (opts.ctx?.cheap_mode === true && !callerSuppliedProviders && !superRequested && selected.length > 1) {
5668
5709
  if (!opts.pricing) {
5669
5710
  cheapModePanelMeta = {
5670
5711
  before: selected.length,
@@ -5741,7 +5782,7 @@ ${ctxBody}` });
5741
5782
  if (injectMem && opts.storage && sessionId) {
5742
5783
  await injectSessionMemoryInline(messages, opts.storage, sessionId);
5743
5784
  }
5744
- const maxTokens = opts.maxTokens ?? 4096;
5785
+ const maxTokens = superRequested ? superBudget(opts.maxTokens ?? 4096) : opts.maxTokens ?? 4096;
5745
5786
  const earlyStop = Boolean(args["early_stop"]);
5746
5787
  const earlyStopThresholdRaw = Number(args["early_stop_threshold"]);
5747
5788
  const earlyStopThreshold = Number.isFinite(earlyStopThresholdRaw) ? earlyStopThresholdRaw : 0.7;
@@ -5862,6 +5903,13 @@ ${ctxBody}` });
5862
5903
  }
5863
5904
  if (unknownNames.length > 0) result["skipped_unknown_providers"] = unknownNames;
5864
5905
  if (blocked.length > 0) result["blocked_by_allowlist"] = blocked;
5906
+ if (superRequested) {
5907
+ result["super_mode"] = {
5908
+ applied: true,
5909
+ panel: selected.map((p) => ({ provider: p.name, model: p.model })),
5910
+ max_tokens: maxTokens
5911
+ };
5912
+ }
5865
5913
  const allCallEnvelopes = [
5866
5914
  ...sanitized,
5867
5915
  ...extraAnswers.map((a) => a)
@@ -9142,6 +9190,7 @@ var ROLE_TURN_SCHEMA = {
9142
9190
  async function runCoordinate(args, opts) {
9143
9191
  const callStartedWall = performance8.now();
9144
9192
  const callStartedCpu = process.cpuUsage();
9193
+ const superRequested = isSuperRequested(args);
9145
9194
  const requestedWorkerTools = Array.isArray(args["worker_tools"]) ? args["worker_tools"].filter(
9146
9195
  (t) => typeof t === "string"
9147
9196
  ) : [];
@@ -9157,6 +9206,13 @@ async function runCoordinate(args, opts) {
9157
9206
  const workerToolsNeedsBridge = acceptedWorkerTools.length > 0 && !opts.innerCallers;
9158
9207
  const needsBridge = DEFERRED_OPTS3.some((k) => Boolean(args[k])) || workerToolsNeedsBridge;
9159
9208
  if (needsBridge) {
9209
+ if (superRequested) {
9210
+ return errorEnvelope7(
9211
+ "COORDINATE_SUPER_NOT_NATIVE",
9212
+ "super mode requested but worker_tools needs the Python bridge",
9213
+ "worker_tools without innerCallers wired defers to the Python bridge, which doesn't support super mode. Drop worker_tools, or wire innerCallers, to use super."
9214
+ );
9215
+ }
9160
9216
  if (opts.bridge && opts.bridge.toolNames.has("coordinate")) {
9161
9217
  return await deferCoordinate(args, opts.bridge);
9162
9218
  }
@@ -9170,8 +9226,11 @@ async function runCoordinate(args, opts) {
9170
9226
  const canary = untrusted ? mintCanary() : null;
9171
9227
  const topic = typeof args["topic"] === "string" ? args["topic"] : String(args["topic"] ?? "");
9172
9228
  const context = typeof args["context"] === "string" ? args["context"] : "";
9229
+ const callerProvidersRaw = args["providers"];
9230
+ const callerSuppliedProviders = Array.isArray(callerProvidersRaw) && callerProvidersRaw.length > 0;
9231
+ const resolvedProviders = superRequested && !callerSuppliedProviders ? SUPER_PROVIDER_NAMES : callerProvidersRaw;
9173
9232
  const { selected, unknown: unknownNames, blocked } = resolveProviders4(
9174
- args["providers"],
9233
+ resolvedProviders,
9175
9234
  opts.providers,
9176
9235
  opts.allowlist ?? null
9177
9236
  );
@@ -9198,9 +9257,10 @@ async function runCoordinate(args, opts) {
9198
9257
  const synthName = typeof args["synthesizer"] === "string" && args["synthesizer"] ? args["synthesizer"] : typeof args["moderator"] === "string" && args["moderator"] ? args["moderator"] : opts.moderator ?? "anthropic";
9199
9258
  const proposer = opts.providers[proposerName.toLowerCase()] ?? selected[0];
9200
9259
  const synth = opts.providers[synthName.toLowerCase()] ?? proposer;
9201
- const upgradeRequested = isUpgradeRequested(args);
9260
+ const proposerForCall = superRequested ? retargetForSuper(proposer) : proposer;
9261
+ const upgradeRequested = isUpgradeRequested(args) || superRequested;
9202
9262
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
9203
- const synthForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : synth;
9263
+ const synthForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : superRequested ? retargetForSuper(synth) : synth;
9204
9264
  let critics = [];
9205
9265
  if (Array.isArray(args["critics"])) {
9206
9266
  for (const n of args["critics"]) {
@@ -9223,7 +9283,10 @@ async function runCoordinate(args, opts) {
9223
9283
  available_now: Object.keys(opts.providers).sort()
9224
9284
  };
9225
9285
  }
9226
- const maxTokens = opts.maxTokens ?? 4096;
9286
+ if (superRequested) {
9287
+ critics = critics.map(retargetForSuper);
9288
+ }
9289
+ const maxTokens = superRequested ? superBudget(opts.maxTokens ?? 4096) : opts.maxTokens ?? 4096;
9227
9290
  let topicBlock = `TOPIC: ${topic}`;
9228
9291
  if (context) {
9229
9292
  const ctxBlock = untrusted ? wrapUntrusted(context, canary) : context;
@@ -9301,7 +9364,7 @@ ${UNTRUSTED_SYSTEM_NOTE}`;
9301
9364
  { role: "system", content: propSystem },
9302
9365
  { role: "user", content: topicBlock }
9303
9366
  ];
9304
- const propResult = await runRoleTurn(proposer, propMessages, ROLE_TURN_SCHEMA);
9367
+ const propResult = await runRoleTurn(proposerForCall, propMessages, ROLE_TURN_SCHEMA);
9305
9368
  const proposalObj = propResult.obj;
9306
9369
  const proposalAns = propResult.answer;
9307
9370
  const proposalRender = formatRoleTurn(
@@ -9425,6 +9488,17 @@ ${critiqueBlock}`
9425
9488
  result["suggested_upgrade"] = buildSuggestedUpgrade("coordinate", assessment);
9426
9489
  }
9427
9490
  }
9491
+ if (superRequested) {
9492
+ result["super_mode"] = {
9493
+ applied: true,
9494
+ panel: [
9495
+ { provider: proposerForCall.name, model: proposerForCall.model },
9496
+ ...critics.map((p) => ({ provider: p.name, model: p.model })),
9497
+ { provider: synthForCall.name, model: synthForCall.model }
9498
+ ],
9499
+ max_tokens: maxTokens
9500
+ };
9501
+ }
9428
9502
  const allCallEnvelopes = [
9429
9503
  scannedProposal,
9430
9504
  ...scannedCritiques,
@@ -9837,6 +9911,7 @@ var DEFERRED_OPTS4 = [
9837
9911
  async function runDebate(args, opts) {
9838
9912
  const callStartedWall = performance10.now();
9839
9913
  const callStartedCpu = process.cpuUsage();
9914
+ const superRequested = isSuperRequested(args);
9840
9915
  const extraAnswers = [];
9841
9916
  const requestedWorkerTools = Array.isArray(args["worker_tools"]) ? args["worker_tools"].filter(
9842
9917
  (t) => typeof t === "string"
@@ -9853,6 +9928,13 @@ async function runDebate(args, opts) {
9853
9928
  const workerToolsNeedsBridge = acceptedWorkerTools.length > 0 && !opts.innerCallers;
9854
9929
  const needsBridge = DEFERRED_OPTS4.some((k) => Boolean(args[k])) || workerToolsNeedsBridge;
9855
9930
  if (needsBridge) {
9931
+ if (superRequested) {
9932
+ return errorEnvelope9(
9933
+ "DEBATE_SUPER_NOT_NATIVE",
9934
+ "super mode requested but worker_tools needs the Python bridge",
9935
+ "worker_tools without innerCallers wired defers to the Python bridge, which doesn't support super mode. Drop worker_tools, or wire innerCallers, to use super."
9936
+ );
9937
+ }
9856
9938
  if (opts.bridge && opts.bridge.toolNames.has("debate")) {
9857
9939
  return await deferDebate(args, opts.bridge);
9858
9940
  }
@@ -9881,7 +9963,7 @@ async function runDebate(args, opts) {
9881
9963
  const callerSuppliedProviders = Array.isArray(callerProvidersRaw) && callerProvidersRaw.length > 0;
9882
9964
  let resolvedProviders = callerProvidersRaw;
9883
9965
  let autoPanelMeta = null;
9884
- if (autoPanel && !callerSuppliedProviders && opts.storage) {
9966
+ if (autoPanel && !callerSuppliedProviders && !superRequested && opts.storage) {
9885
9967
  const autoNRaw = Number(args["auto_panel_n"]);
9886
9968
  const autoN = Number.isFinite(autoNRaw) && autoNRaw > 0 ? Math.trunc(autoNRaw) : AUTO_PANEL_DEFAULT_N;
9887
9969
  const picked = await pickAutoPanel(
@@ -9901,7 +9983,10 @@ async function runDebate(args, opts) {
9901
9983
  };
9902
9984
  }
9903
9985
  }
9904
- const { selected, unknown: unknownNames, blocked } = resolveProviders6(
9986
+ if (superRequested && !callerSuppliedProviders) {
9987
+ resolvedProviders = SUPER_PROVIDER_NAMES;
9988
+ }
9989
+ let { selected, unknown: unknownNames, blocked } = resolveProviders6(
9905
9990
  resolvedProviders,
9906
9991
  opts.providers,
9907
9992
  opts.allowlist ?? null
@@ -9925,7 +10010,10 @@ async function runDebate(args, opts) {
9925
10010
  available_now: Object.keys(opts.providers).sort()
9926
10011
  };
9927
10012
  }
9928
- const maxTokens = opts.maxTokens ?? 4096;
10013
+ if (superRequested) {
10014
+ selected = selected.map(retargetForSuper);
10015
+ }
10016
+ const maxTokens = superRequested ? superBudget(opts.maxTokens ?? 4096) : opts.maxTokens ?? 4096;
9929
10017
  let memBlock = "";
9930
10018
  if (Boolean(args["inject_session_memory"]) && opts.storage && sessionId) {
9931
10019
  memBlock = await renderSessionMemoryBlock(opts.storage, sessionId);
@@ -9966,7 +10054,7 @@ async function runDebate(args, opts) {
9966
10054
  let agreementBlock = null;
9967
10055
  const moderatorName = typeof args["moderator"] === "string" && args["moderator"] ? args["moderator"] : opts.moderator ?? "anthropic";
9968
10056
  const moderator = opts.providers[moderatorName.toLowerCase()] ?? selected[0];
9969
- const upgradeRequested = isUpgradeRequested(args);
10057
+ const upgradeRequested = isUpgradeRequested(args) || superRequested;
9970
10058
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
9971
10059
  for (let rnd = 1; rnd <= maxRounds; rnd++) {
9972
10060
  const roundMessages = [
@@ -10037,7 +10125,7 @@ ${prior}` });
10037
10125
  let personaMeta = null;
10038
10126
  let coReasoned = false;
10039
10127
  if (moderator) {
10040
- const synthProvider = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
10128
+ const synthProvider = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : superRequested ? retargetForSuper(moderator) : moderator;
10041
10129
  const condensed = transcript.map(
10042
10130
  (e) => `[${e.provider} \u2014 round ${e.round}]
10043
10131
  ${e.response ?? "(error)"}`
@@ -10172,6 +10260,13 @@ ${condensed}`
10172
10260
  }
10173
10261
  if (unknownNames.length > 0) result["skipped_unknown_providers"] = unknownNames;
10174
10262
  if (blocked.length > 0) result["blocked_by_allowlist"] = blocked;
10263
+ if (superRequested) {
10264
+ result["super_mode"] = {
10265
+ applied: true,
10266
+ panel: selected.map((p) => ({ provider: p.name, model: p.model })),
10267
+ max_tokens: maxTokens
10268
+ };
10269
+ }
10175
10270
  const allCallEnvelopes = [
10176
10271
  ...transcript,
10177
10272
  ...extraAnswers
@@ -10793,24 +10888,27 @@ var KNOWN_PROVIDERS6 = [
10793
10888
  "kimi"
10794
10889
  ];
10795
10890
  var USAGE_HINT = "Pass a 'providers' array to confer/debate/plan/review to pick an ad-hoc subset, e.g. providers=['openai','gemini']. Omit the field to use the configured active set.";
10796
- function runListProviders(_args, opts) {
10797
- void _args;
10891
+ function runListProviders(args, opts) {
10892
+ const superRequested = isSuperRequested(args);
10798
10893
  const active = new Set(opts.activeProviders ?? Object.keys(opts.providers));
10894
+ const names = superRequested ? SUPER_PROVIDER_NAMES : KNOWN_PROVIDERS6;
10799
10895
  const providers = [];
10800
- for (const name of KNOWN_PROVIDERS6) {
10896
+ for (const name of names) {
10801
10897
  const prov = opts.providers[name];
10802
10898
  providers.push({
10803
10899
  name,
10804
10900
  available: prov !== void 0,
10805
10901
  active: active.has(name),
10806
- model: prov ? prov.model : null
10902
+ model: superRequested ? SUPER_MODELS[name] : prov ? prov.model : null
10807
10903
  });
10808
10904
  }
10809
- return {
10905
+ const result = {
10810
10906
  providers,
10811
10907
  moderator_default: opts.moderatorDefault ?? "anthropic",
10812
10908
  usage_hint: USAGE_HINT
10813
10909
  };
10910
+ if (superRequested) result["super_mode"] = true;
10911
+ return result;
10814
10912
  }
10815
10913
 
10816
10914
  // src/tools/pick.ts
@@ -11218,6 +11316,7 @@ Return: (1) the plan as numbered steps, (2) risks, (3) alternatives considered.`
11218
11316
  if (args["reasoning"] !== void 0) debateArgs["reasoning"] = args["reasoning"];
11219
11317
  if (args["upgrade"] !== void 0) debateArgs["upgrade"] = args["upgrade"];
11220
11318
  if (args["model"] !== void 0) debateArgs["model"] = args["model"];
11319
+ if (args["super"] !== void 0) debateArgs["super"] = args["super"];
11221
11320
  const result = await runDebate(debateArgs, opts);
11222
11321
  if (result["suggested_upgrade"] && typeof result["suggested_upgrade"] === "object") {
11223
11322
  const su = result["suggested_upgrade"];
@@ -12368,7 +12467,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
12368
12467
  var DEFAULT_PACKAGE = "crosscheck-cli";
12369
12468
  var FETCH_TIMEOUT_MS = 3e3;
12370
12469
  function engineVersion() {
12371
- return true ? "0.2.6" : "0.0.0-dev";
12470
+ return true ? "0.2.8" : "0.0.0-dev";
12372
12471
  }
12373
12472
  function defaultUpdateCachePath() {
12374
12473
  const base = process.env["CROSSCHECK_DATA_DIR"] || path10.join(os.homedir() || os.tmpdir(), ".crosscheck");
@@ -12725,6 +12824,7 @@ async function runTriangulate(args, opts) {
12725
12824
  if (args["reasoning"] !== void 0) coordArgs["reasoning"] = args["reasoning"];
12726
12825
  if (args["upgrade"] !== void 0) coordArgs["upgrade"] = args["upgrade"];
12727
12826
  if (args["model"] !== void 0) coordArgs["model"] = args["model"];
12827
+ if (args["super"] !== void 0) coordArgs["super"] = args["super"];
12728
12828
  const coord = await runCoordinate(coordArgs, opts);
12729
12829
  if (typeof coord["error"] === "string") return coord;
12730
12830
  const synth = coord["synthesis_structured"] ?? {};
@@ -12775,7 +12875,8 @@ async function runTriangulate(args, opts) {
12775
12875
  "blocked_by_allowlist",
12776
12876
  "skipped_unknown_providers",
12777
12877
  "reasoning_upgrade",
12778
- "suggested_upgrade"
12878
+ "suggested_upgrade",
12879
+ "super_mode"
12779
12880
  ]) {
12780
12881
  if (k in coord) result[k] = coord[k];
12781
12882
  }
@@ -13609,7 +13710,9 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
13609
13710
  inputSchema: {
13610
13711
  type: "object",
13611
13712
  additionalProperties: true,
13612
- properties: {}
13713
+ properties: {
13714
+ super: { type: "boolean" }
13715
+ }
13613
13716
  },
13614
13717
  handler: async (args) => runListProviders(args, {
13615
13718
  providers,
@@ -13688,7 +13791,8 @@ function planTool(providers, allowlist, bridge) {
13688
13791
  mode: { type: "string", enum: ["fast", "thorough"] },
13689
13792
  max_rounds: { type: "integer", minimum: 1 },
13690
13793
  early_stop: { type: "boolean" },
13691
- early_stop_threshold: { type: "number", minimum: 0, maximum: 1 }
13794
+ early_stop_threshold: { type: "number", minimum: 0, maximum: 1 },
13795
+ super: { type: "boolean" }
13692
13796
  },
13693
13797
  required: ["goal"]
13694
13798
  },
@@ -13712,7 +13816,8 @@ function triangulateTool(providers, allowlist, bridge) {
13712
13816
  context: { type: "string" },
13713
13817
  providers: { type: "array", items: { type: "string" } },
13714
13818
  session_id: { type: "string" },
13715
- untrusted_input: { type: "boolean" }
13819
+ untrusted_input: { type: "boolean" },
13820
+ super: { type: "boolean" }
13716
13821
  },
13717
13822
  required: ["question"]
13718
13823
  },
@@ -13780,7 +13885,8 @@ function debateTool(providers, allowlist, bridge, innerCallers, storage, pricing
13780
13885
  auto_panel: { type: "boolean" },
13781
13886
  auto_panel_n: { type: "integer" },
13782
13887
  inject_session_memory: { type: "boolean" },
13783
- worker_tools: { type: "array", items: { type: "string" } }
13888
+ worker_tools: { type: "array", items: { type: "string" } },
13889
+ super: { type: "boolean" }
13784
13890
  },
13785
13891
  required: ["topic"]
13786
13892
  },
@@ -13829,7 +13935,8 @@ function conferTool(providers, allowlist, bridge, moderator, pricing, storage, i
13829
13935
  inject_session_memory: { type: "boolean" },
13830
13936
  auto_panel: { type: "boolean" },
13831
13937
  auto_panel_n: { type: "integer" },
13832
- worker_tools: { type: "array", items: { type: "string" } }
13938
+ worker_tools: { type: "array", items: { type: "string" } },
13939
+ super: { type: "boolean" }
13833
13940
  },
13834
13941
  required: ["question"]
13835
13942
  },