crosscheck-mcp 0.1.1 → 0.1.2

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.
@@ -5717,11 +5717,43 @@ Synthesize the node outputs into a single coherent deliverable. Preserve any [MI
5717
5717
  { role: "system", content: "You are the orchestrator. Combine node outputs into the final result." },
5718
5718
  { role: "user", content: recombinePrompt }
5719
5719
  ];
5720
- const synthAns = await askOne(moderator, recMsgs, {
5720
+ let synthProvider = moderator;
5721
+ let synthModel = null;
5722
+ if (cheapMode && opts.pricing) {
5723
+ const pick = selectForDifficulty({
5724
+ pricing: opts.pricing,
5725
+ tier: "med",
5726
+ availableProviders: cheapAvailable,
5727
+ providerWeights: cheapWeights,
5728
+ ...cheapAllowOnly ? { allowOnly: cheapAllowOnly } : {}
5729
+ });
5730
+ for (const c of pick.scored) {
5731
+ if (isModelDead(c.provider, c.model)) continue;
5732
+ const base = opts.providers[c.provider];
5733
+ if (base) {
5734
+ synthProvider = retargetProvider(base, c.model);
5735
+ synthModel = `${c.provider}/${c.model}`;
5736
+ break;
5737
+ }
5738
+ }
5739
+ }
5740
+ let synthAns = await askOne(synthProvider, recMsgs, {
5721
5741
  maxTokens,
5722
5742
  temperature: 0.4,
5723
5743
  purpose: "synth"
5724
5744
  });
5745
+ if (synthAns.error !== void 0 && synthProvider !== moderator) {
5746
+ if (isDeadModelError(synthAns) && synthModel) {
5747
+ const [prov, mdl] = synthModel.split("/");
5748
+ if (prov && mdl) recordDeadModel(prov, mdl, synthAns.error ?? "");
5749
+ }
5750
+ synthAns = await askOne(moderator, recMsgs, {
5751
+ maxTokens,
5752
+ temperature: 0.4,
5753
+ purpose: "synth"
5754
+ });
5755
+ synthModel = null;
5756
+ }
5725
5757
  const finalText = synthAns.error !== void 0 ? "" : synthAns.response ?? "";
5726
5758
  const synthErr = synthAns.error;
5727
5759
  const publicNodes = Object.keys(nodesById).map(
@@ -5745,6 +5777,7 @@ Synthesize the node outputs into a single coherent deliverable. Preserve any [MI
5745
5777
  fail_fast: failFast,
5746
5778
  cheap_mode: cheapMode
5747
5779
  };
5780
+ if (synthModel) result["synth_model"] = synthModel;
5748
5781
  if (synthErr) result["synth_error"] = synthErr;
5749
5782
  if (plannerErrors.length > 0) result["planner_errors"] = plannerErrors;
5750
5783
  if (unknownNames.length > 0) result["skipped_unknown_providers"] = unknownNames;