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.
@@ -2161,6 +2161,12 @@ Reasoning upgrade (Fable 5):
2161
2161
  - 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.
2162
2162
  - 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.
2163
2163
 
2164
+ 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):
2165
+ - 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 })\`.
2166
+ - 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".
2167
+ - A result with a "super_mode" block confirms it ran; show the panel it used.
2168
+ - \`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.
2169
+
2164
2170
  Spend visibility:
2165
2171
  - 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.
2166
2172
  - "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.
@@ -2174,7 +2180,7 @@ var import_zod = require("zod");
2174
2180
  // src/server-meta.ts
2175
2181
  init_cjs_shims();
2176
2182
  var SERVER_NAME = "crosscheck-agent";
2177
- var SERVER_VERSION = true ? "0.2.6" : "0.0.0-dev";
2183
+ var SERVER_VERSION = true ? "0.2.8" : "0.0.0-dev";
2178
2184
 
2179
2185
  // src/tools/audit.ts
2180
2186
  init_cjs_shims();
@@ -5053,6 +5059,34 @@ async function pickAutoPanel(storage, purpose, n, providers, allowlist) {
5053
5059
  return { providers: ranked.slice(0, Math.max(1, n)), coldStart: true };
5054
5060
  }
5055
5061
 
5062
+ // src/core/super-mode.ts
5063
+ init_cjs_shims();
5064
+ var SUPER_MODELS = {
5065
+ anthropic: UPGRADE_MODEL,
5066
+ // "claude-fable-5"
5067
+ openai: CO_REASON_MODEL,
5068
+ // "gpt-5.6"
5069
+ xai: DEFAULT_MODELS["xai"],
5070
+ // already the default — no-op retarget
5071
+ gemini: DEFAULT_MODELS["gemini"],
5072
+ // already the default — no-op retarget
5073
+ kimi: DEFAULT_MODELS["kimi"]
5074
+ // already the default — no-op retarget
5075
+ };
5076
+ var SUPER_PROVIDER_NAMES = Object.keys(SUPER_MODELS);
5077
+ function isSuperRequested(args) {
5078
+ return args["super"] === true;
5079
+ }
5080
+ function retargetForSuper(p) {
5081
+ const model = SUPER_MODELS[p.name];
5082
+ return model ? retargetProvider(p, model) : p;
5083
+ }
5084
+ var SUPER_BUDGET_MULTIPLIER = 3;
5085
+ var SUPER_BUDGET_CEILING = 16e3;
5086
+ function superBudget(base) {
5087
+ return Math.min(base * SUPER_BUDGET_MULTIPLIER, SUPER_BUDGET_CEILING);
5088
+ }
5089
+
5056
5090
  // src/core/session-memory.ts
5057
5091
  init_cjs_shims();
5058
5092
  var SESSION_MEMORY_DEFAULT_LIMIT = 50;
@@ -5643,11 +5677,12 @@ async function runConfer(args, opts) {
5643
5677
  const question = typeof args["question"] === "string" ? args["question"] : String(args["question"] ?? "");
5644
5678
  const context = typeof args["context"] === "string" ? args["context"] : "";
5645
5679
  const autoPanel = Boolean(args["auto_panel"]);
5680
+ const superRequested = isSuperRequested(args);
5646
5681
  const callerProvidersRaw = args["providers"];
5647
5682
  const callerSuppliedProviders = Array.isArray(callerProvidersRaw) && callerProvidersRaw.length > 0;
5648
5683
  let resolvedProviders = callerProvidersRaw;
5649
5684
  let autoPanelMeta = null;
5650
- if (autoPanel && !callerSuppliedProviders && opts.storage) {
5685
+ if (autoPanel && !callerSuppliedProviders && !superRequested && opts.storage) {
5651
5686
  const autoNRaw = Number(args["auto_panel_n"]);
5652
5687
  const autoN = Number.isFinite(autoNRaw) && autoNRaw > 0 ? Math.trunc(autoNRaw) : AUTO_PANEL_DEFAULT_N;
5653
5688
  const picked = await pickAutoPanel(
@@ -5667,6 +5702,9 @@ async function runConfer(args, opts) {
5667
5702
  };
5668
5703
  }
5669
5704
  }
5705
+ if (superRequested && !callerSuppliedProviders) {
5706
+ resolvedProviders = SUPER_PROVIDER_NAMES;
5707
+ }
5670
5708
  let { selected, unknown: unknownNames, blocked } = resolveProviders(
5671
5709
  resolvedProviders,
5672
5710
  opts.providers,
@@ -5684,8 +5722,11 @@ async function runConfer(args, opts) {
5684
5722
  }
5685
5723
  return { tool: "confer", error: "no active providers have API keys in .env" };
5686
5724
  }
5725
+ if (superRequested) {
5726
+ selected = selected.map(retargetForSuper);
5727
+ }
5687
5728
  let cheapModePanelMeta = null;
5688
- if (opts.ctx?.cheap_mode === true && !callerSuppliedProviders && selected.length > 1) {
5729
+ if (opts.ctx?.cheap_mode === true && !callerSuppliedProviders && !superRequested && selected.length > 1) {
5689
5730
  if (!opts.pricing) {
5690
5731
  cheapModePanelMeta = {
5691
5732
  before: selected.length,
@@ -5762,7 +5803,7 @@ ${ctxBody}` });
5762
5803
  if (injectMem && opts.storage && sessionId) {
5763
5804
  await injectSessionMemoryInline(messages, opts.storage, sessionId);
5764
5805
  }
5765
- const maxTokens = opts.maxTokens ?? 4096;
5806
+ const maxTokens = superRequested ? superBudget(opts.maxTokens ?? 4096) : opts.maxTokens ?? 4096;
5766
5807
  const earlyStop = Boolean(args["early_stop"]);
5767
5808
  const earlyStopThresholdRaw = Number(args["early_stop_threshold"]);
5768
5809
  const earlyStopThreshold = Number.isFinite(earlyStopThresholdRaw) ? earlyStopThresholdRaw : 0.7;
@@ -5883,6 +5924,13 @@ ${ctxBody}` });
5883
5924
  }
5884
5925
  if (unknownNames.length > 0) result["skipped_unknown_providers"] = unknownNames;
5885
5926
  if (blocked.length > 0) result["blocked_by_allowlist"] = blocked;
5927
+ if (superRequested) {
5928
+ result["super_mode"] = {
5929
+ applied: true,
5930
+ panel: selected.map((p) => ({ provider: p.name, model: p.model })),
5931
+ max_tokens: maxTokens
5932
+ };
5933
+ }
5886
5934
  const allCallEnvelopes = [
5887
5935
  ...sanitized,
5888
5936
  ...extraAnswers.map((a) => a)
@@ -9146,6 +9194,7 @@ var ROLE_TURN_SCHEMA = {
9146
9194
  async function runCoordinate(args, opts) {
9147
9195
  const callStartedWall = import_node_perf_hooks7.performance.now();
9148
9196
  const callStartedCpu = process.cpuUsage();
9197
+ const superRequested = isSuperRequested(args);
9149
9198
  const requestedWorkerTools = Array.isArray(args["worker_tools"]) ? args["worker_tools"].filter(
9150
9199
  (t) => typeof t === "string"
9151
9200
  ) : [];
@@ -9161,6 +9210,13 @@ async function runCoordinate(args, opts) {
9161
9210
  const workerToolsNeedsBridge = acceptedWorkerTools.length > 0 && !opts.innerCallers;
9162
9211
  const needsBridge = DEFERRED_OPTS3.some((k) => Boolean(args[k])) || workerToolsNeedsBridge;
9163
9212
  if (needsBridge) {
9213
+ if (superRequested) {
9214
+ return errorEnvelope7(
9215
+ "COORDINATE_SUPER_NOT_NATIVE",
9216
+ "super mode requested but worker_tools needs the Python bridge",
9217
+ "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."
9218
+ );
9219
+ }
9164
9220
  if (opts.bridge && opts.bridge.toolNames.has("coordinate")) {
9165
9221
  return await deferCoordinate(args, opts.bridge);
9166
9222
  }
@@ -9174,8 +9230,11 @@ async function runCoordinate(args, opts) {
9174
9230
  const canary = untrusted ? mintCanary() : null;
9175
9231
  const topic = typeof args["topic"] === "string" ? args["topic"] : String(args["topic"] ?? "");
9176
9232
  const context = typeof args["context"] === "string" ? args["context"] : "";
9233
+ const callerProvidersRaw = args["providers"];
9234
+ const callerSuppliedProviders = Array.isArray(callerProvidersRaw) && callerProvidersRaw.length > 0;
9235
+ const resolvedProviders = superRequested && !callerSuppliedProviders ? SUPER_PROVIDER_NAMES : callerProvidersRaw;
9177
9236
  const { selected, unknown: unknownNames, blocked } = resolveProviders4(
9178
- args["providers"],
9237
+ resolvedProviders,
9179
9238
  opts.providers,
9180
9239
  opts.allowlist ?? null
9181
9240
  );
@@ -9202,9 +9261,10 @@ async function runCoordinate(args, opts) {
9202
9261
  const synthName = typeof args["synthesizer"] === "string" && args["synthesizer"] ? args["synthesizer"] : typeof args["moderator"] === "string" && args["moderator"] ? args["moderator"] : opts.moderator ?? "anthropic";
9203
9262
  const proposer = opts.providers[proposerName.toLowerCase()] ?? selected[0];
9204
9263
  const synth = opts.providers[synthName.toLowerCase()] ?? proposer;
9205
- const upgradeRequested = isUpgradeRequested(args);
9264
+ const proposerForCall = superRequested ? retargetForSuper(proposer) : proposer;
9265
+ const upgradeRequested = isUpgradeRequested(args) || superRequested;
9206
9266
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
9207
- const synthForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : synth;
9267
+ const synthForCall = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : superRequested ? retargetForSuper(synth) : synth;
9208
9268
  let critics = [];
9209
9269
  if (Array.isArray(args["critics"])) {
9210
9270
  for (const n of args["critics"]) {
@@ -9227,7 +9287,10 @@ async function runCoordinate(args, opts) {
9227
9287
  available_now: Object.keys(opts.providers).sort()
9228
9288
  };
9229
9289
  }
9230
- const maxTokens = opts.maxTokens ?? 4096;
9290
+ if (superRequested) {
9291
+ critics = critics.map(retargetForSuper);
9292
+ }
9293
+ const maxTokens = superRequested ? superBudget(opts.maxTokens ?? 4096) : opts.maxTokens ?? 4096;
9231
9294
  let topicBlock = `TOPIC: ${topic}`;
9232
9295
  if (context) {
9233
9296
  const ctxBlock = untrusted ? wrapUntrusted(context, canary) : context;
@@ -9305,7 +9368,7 @@ ${UNTRUSTED_SYSTEM_NOTE}`;
9305
9368
  { role: "system", content: propSystem },
9306
9369
  { role: "user", content: topicBlock }
9307
9370
  ];
9308
- const propResult = await runRoleTurn(proposer, propMessages, ROLE_TURN_SCHEMA);
9371
+ const propResult = await runRoleTurn(proposerForCall, propMessages, ROLE_TURN_SCHEMA);
9309
9372
  const proposalObj = propResult.obj;
9310
9373
  const proposalAns = propResult.answer;
9311
9374
  const proposalRender = formatRoleTurn(
@@ -9429,6 +9492,17 @@ ${critiqueBlock}`
9429
9492
  result["suggested_upgrade"] = buildSuggestedUpgrade("coordinate", assessment);
9430
9493
  }
9431
9494
  }
9495
+ if (superRequested) {
9496
+ result["super_mode"] = {
9497
+ applied: true,
9498
+ panel: [
9499
+ { provider: proposerForCall.name, model: proposerForCall.model },
9500
+ ...critics.map((p) => ({ provider: p.name, model: p.model })),
9501
+ { provider: synthForCall.name, model: synthForCall.model }
9502
+ ],
9503
+ max_tokens: maxTokens
9504
+ };
9505
+ }
9432
9506
  const allCallEnvelopes = [
9433
9507
  scannedProposal,
9434
9508
  ...scannedCritiques,
@@ -9841,6 +9915,7 @@ var DEFERRED_OPTS4 = [
9841
9915
  async function runDebate(args, opts) {
9842
9916
  const callStartedWall = import_node_perf_hooks9.performance.now();
9843
9917
  const callStartedCpu = process.cpuUsage();
9918
+ const superRequested = isSuperRequested(args);
9844
9919
  const extraAnswers = [];
9845
9920
  const requestedWorkerTools = Array.isArray(args["worker_tools"]) ? args["worker_tools"].filter(
9846
9921
  (t) => typeof t === "string"
@@ -9857,6 +9932,13 @@ async function runDebate(args, opts) {
9857
9932
  const workerToolsNeedsBridge = acceptedWorkerTools.length > 0 && !opts.innerCallers;
9858
9933
  const needsBridge = DEFERRED_OPTS4.some((k) => Boolean(args[k])) || workerToolsNeedsBridge;
9859
9934
  if (needsBridge) {
9935
+ if (superRequested) {
9936
+ return errorEnvelope9(
9937
+ "DEBATE_SUPER_NOT_NATIVE",
9938
+ "super mode requested but worker_tools needs the Python bridge",
9939
+ "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."
9940
+ );
9941
+ }
9860
9942
  if (opts.bridge && opts.bridge.toolNames.has("debate")) {
9861
9943
  return await deferDebate(args, opts.bridge);
9862
9944
  }
@@ -9885,7 +9967,7 @@ async function runDebate(args, opts) {
9885
9967
  const callerSuppliedProviders = Array.isArray(callerProvidersRaw) && callerProvidersRaw.length > 0;
9886
9968
  let resolvedProviders = callerProvidersRaw;
9887
9969
  let autoPanelMeta = null;
9888
- if (autoPanel && !callerSuppliedProviders && opts.storage) {
9970
+ if (autoPanel && !callerSuppliedProviders && !superRequested && opts.storage) {
9889
9971
  const autoNRaw = Number(args["auto_panel_n"]);
9890
9972
  const autoN = Number.isFinite(autoNRaw) && autoNRaw > 0 ? Math.trunc(autoNRaw) : AUTO_PANEL_DEFAULT_N;
9891
9973
  const picked = await pickAutoPanel(
@@ -9905,7 +9987,10 @@ async function runDebate(args, opts) {
9905
9987
  };
9906
9988
  }
9907
9989
  }
9908
- const { selected, unknown: unknownNames, blocked } = resolveProviders6(
9990
+ if (superRequested && !callerSuppliedProviders) {
9991
+ resolvedProviders = SUPER_PROVIDER_NAMES;
9992
+ }
9993
+ let { selected, unknown: unknownNames, blocked } = resolveProviders6(
9909
9994
  resolvedProviders,
9910
9995
  opts.providers,
9911
9996
  opts.allowlist ?? null
@@ -9929,7 +10014,10 @@ async function runDebate(args, opts) {
9929
10014
  available_now: Object.keys(opts.providers).sort()
9930
10015
  };
9931
10016
  }
9932
- const maxTokens = opts.maxTokens ?? 4096;
10017
+ if (superRequested) {
10018
+ selected = selected.map(retargetForSuper);
10019
+ }
10020
+ const maxTokens = superRequested ? superBudget(opts.maxTokens ?? 4096) : opts.maxTokens ?? 4096;
9933
10021
  let memBlock = "";
9934
10022
  if (Boolean(args["inject_session_memory"]) && opts.storage && sessionId) {
9935
10023
  memBlock = await renderSessionMemoryBlock(opts.storage, sessionId);
@@ -9970,7 +10058,7 @@ async function runDebate(args, opts) {
9970
10058
  let agreementBlock = null;
9971
10059
  const moderatorName = typeof args["moderator"] === "string" && args["moderator"] ? args["moderator"] : opts.moderator ?? "anthropic";
9972
10060
  const moderator = opts.providers[moderatorName.toLowerCase()] ?? selected[0];
9973
- const upgradeRequested = isUpgradeRequested(args);
10061
+ const upgradeRequested = isUpgradeRequested(args) || superRequested;
9974
10062
  const upgraded = upgradeRequested && opts.providers["anthropic"] !== void 0;
9975
10063
  for (let rnd = 1; rnd <= maxRounds; rnd++) {
9976
10064
  const roundMessages = [
@@ -10041,7 +10129,7 @@ ${prior}` });
10041
10129
  let personaMeta = null;
10042
10130
  let coReasoned = false;
10043
10131
  if (moderator) {
10044
- const synthProvider = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : moderator;
10132
+ const synthProvider = upgraded ? retargetProvider(opts.providers["anthropic"], UPGRADE_MODEL) : superRequested ? retargetForSuper(moderator) : moderator;
10045
10133
  const condensed = transcript.map(
10046
10134
  (e) => `[${e.provider} \u2014 round ${e.round}]
10047
10135
  ${e.response ?? "(error)"}`
@@ -10176,6 +10264,13 @@ ${condensed}`
10176
10264
  }
10177
10265
  if (unknownNames.length > 0) result["skipped_unknown_providers"] = unknownNames;
10178
10266
  if (blocked.length > 0) result["blocked_by_allowlist"] = blocked;
10267
+ if (superRequested) {
10268
+ result["super_mode"] = {
10269
+ applied: true,
10270
+ panel: selected.map((p) => ({ provider: p.name, model: p.model })),
10271
+ max_tokens: maxTokens
10272
+ };
10273
+ }
10179
10274
  const allCallEnvelopes = [
10180
10275
  ...transcript,
10181
10276
  ...extraAnswers
@@ -10797,24 +10892,27 @@ var KNOWN_PROVIDERS6 = [
10797
10892
  "kimi"
10798
10893
  ];
10799
10894
  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.";
10800
- function runListProviders(_args, opts) {
10801
- void _args;
10895
+ function runListProviders(args, opts) {
10896
+ const superRequested = isSuperRequested(args);
10802
10897
  const active = new Set(opts.activeProviders ?? Object.keys(opts.providers));
10898
+ const names = superRequested ? SUPER_PROVIDER_NAMES : KNOWN_PROVIDERS6;
10803
10899
  const providers = [];
10804
- for (const name of KNOWN_PROVIDERS6) {
10900
+ for (const name of names) {
10805
10901
  const prov = opts.providers[name];
10806
10902
  providers.push({
10807
10903
  name,
10808
10904
  available: prov !== void 0,
10809
10905
  active: active.has(name),
10810
- model: prov ? prov.model : null
10906
+ model: superRequested ? SUPER_MODELS[name] : prov ? prov.model : null
10811
10907
  });
10812
10908
  }
10813
- return {
10909
+ const result = {
10814
10910
  providers,
10815
10911
  moderator_default: opts.moderatorDefault ?? "anthropic",
10816
10912
  usage_hint: USAGE_HINT
10817
10913
  };
10914
+ if (superRequested) result["super_mode"] = true;
10915
+ return result;
10818
10916
  }
10819
10917
 
10820
10918
  // src/tools/pick.ts
@@ -11222,6 +11320,7 @@ Return: (1) the plan as numbered steps, (2) risks, (3) alternatives considered.`
11222
11320
  if (args["reasoning"] !== void 0) debateArgs["reasoning"] = args["reasoning"];
11223
11321
  if (args["upgrade"] !== void 0) debateArgs["upgrade"] = args["upgrade"];
11224
11322
  if (args["model"] !== void 0) debateArgs["model"] = args["model"];
11323
+ if (args["super"] !== void 0) debateArgs["super"] = args["super"];
11225
11324
  const result = await runDebate(debateArgs, opts);
11226
11325
  if (result["suggested_upgrade"] && typeof result["suggested_upgrade"] === "object") {
11227
11326
  const su = result["suggested_upgrade"];
@@ -12372,7 +12471,7 @@ var CHECK_INTERVAL_SECONDS = 3 * 24 * 60 * 60;
12372
12471
  var DEFAULT_PACKAGE = "crosscheck-cli";
12373
12472
  var FETCH_TIMEOUT_MS = 3e3;
12374
12473
  function engineVersion() {
12375
- return true ? "0.2.6" : "0.0.0-dev";
12474
+ return true ? "0.2.8" : "0.0.0-dev";
12376
12475
  }
12377
12476
  function defaultUpdateCachePath() {
12378
12477
  const base = process.env["CROSSCHECK_DATA_DIR"] || import_node_path13.default.join(import_node_os2.default.homedir() || import_node_os2.default.tmpdir(), ".crosscheck");
@@ -12729,6 +12828,7 @@ async function runTriangulate(args, opts) {
12729
12828
  if (args["reasoning"] !== void 0) coordArgs["reasoning"] = args["reasoning"];
12730
12829
  if (args["upgrade"] !== void 0) coordArgs["upgrade"] = args["upgrade"];
12731
12830
  if (args["model"] !== void 0) coordArgs["model"] = args["model"];
12831
+ if (args["super"] !== void 0) coordArgs["super"] = args["super"];
12732
12832
  const coord = await runCoordinate(coordArgs, opts);
12733
12833
  if (typeof coord["error"] === "string") return coord;
12734
12834
  const synth = coord["synthesis_structured"] ?? {};
@@ -12779,7 +12879,8 @@ async function runTriangulate(args, opts) {
12779
12879
  "blocked_by_allowlist",
12780
12880
  "skipped_unknown_providers",
12781
12881
  "reasoning_upgrade",
12782
- "suggested_upgrade"
12882
+ "suggested_upgrade",
12883
+ "super_mode"
12783
12884
  ]) {
12784
12885
  if (k in coord) result[k] = coord[k];
12785
12886
  }
@@ -13613,7 +13714,9 @@ function listProvidersTool(providers, activeProviders, moderatorDefault) {
13613
13714
  inputSchema: {
13614
13715
  type: "object",
13615
13716
  additionalProperties: true,
13616
- properties: {}
13717
+ properties: {
13718
+ super: { type: "boolean" }
13719
+ }
13617
13720
  },
13618
13721
  handler: async (args) => runListProviders(args, {
13619
13722
  providers,
@@ -13692,7 +13795,8 @@ function planTool(providers, allowlist, bridge) {
13692
13795
  mode: { type: "string", enum: ["fast", "thorough"] },
13693
13796
  max_rounds: { type: "integer", minimum: 1 },
13694
13797
  early_stop: { type: "boolean" },
13695
- early_stop_threshold: { type: "number", minimum: 0, maximum: 1 }
13798
+ early_stop_threshold: { type: "number", minimum: 0, maximum: 1 },
13799
+ super: { type: "boolean" }
13696
13800
  },
13697
13801
  required: ["goal"]
13698
13802
  },
@@ -13716,7 +13820,8 @@ function triangulateTool(providers, allowlist, bridge) {
13716
13820
  context: { type: "string" },
13717
13821
  providers: { type: "array", items: { type: "string" } },
13718
13822
  session_id: { type: "string" },
13719
- untrusted_input: { type: "boolean" }
13823
+ untrusted_input: { type: "boolean" },
13824
+ super: { type: "boolean" }
13720
13825
  },
13721
13826
  required: ["question"]
13722
13827
  },
@@ -13784,7 +13889,8 @@ function debateTool(providers, allowlist, bridge, innerCallers, storage, pricing
13784
13889
  auto_panel: { type: "boolean" },
13785
13890
  auto_panel_n: { type: "integer" },
13786
13891
  inject_session_memory: { type: "boolean" },
13787
- worker_tools: { type: "array", items: { type: "string" } }
13892
+ worker_tools: { type: "array", items: { type: "string" } },
13893
+ super: { type: "boolean" }
13788
13894
  },
13789
13895
  required: ["topic"]
13790
13896
  },
@@ -13833,7 +13939,8 @@ function conferTool(providers, allowlist, bridge, moderator, pricing, storage, i
13833
13939
  inject_session_memory: { type: "boolean" },
13834
13940
  auto_panel: { type: "boolean" },
13835
13941
  auto_panel_n: { type: "integer" },
13836
- worker_tools: { type: "array", items: { type: "string" } }
13942
+ worker_tools: { type: "array", items: { type: "string" } },
13943
+ super: { type: "boolean" }
13837
13944
  },
13838
13945
  required: ["question"]
13839
13946
  },