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.
@@ -5695,11 +5695,43 @@ Synthesize the node outputs into a single coherent deliverable. Preserve any [MI
5695
5695
  { role: "system", content: "You are the orchestrator. Combine node outputs into the final result." },
5696
5696
  { role: "user", content: recombinePrompt }
5697
5697
  ];
5698
- const synthAns = await askOne(moderator, recMsgs, {
5698
+ let synthProvider = moderator;
5699
+ let synthModel = null;
5700
+ if (cheapMode && opts.pricing) {
5701
+ const pick = selectForDifficulty({
5702
+ pricing: opts.pricing,
5703
+ tier: "med",
5704
+ availableProviders: cheapAvailable,
5705
+ providerWeights: cheapWeights,
5706
+ ...cheapAllowOnly ? { allowOnly: cheapAllowOnly } : {}
5707
+ });
5708
+ for (const c of pick.scored) {
5709
+ if (isModelDead(c.provider, c.model)) continue;
5710
+ const base = opts.providers[c.provider];
5711
+ if (base) {
5712
+ synthProvider = retargetProvider(base, c.model);
5713
+ synthModel = `${c.provider}/${c.model}`;
5714
+ break;
5715
+ }
5716
+ }
5717
+ }
5718
+ let synthAns = await askOne(synthProvider, recMsgs, {
5699
5719
  maxTokens,
5700
5720
  temperature: 0.4,
5701
5721
  purpose: "synth"
5702
5722
  });
5723
+ if (synthAns.error !== void 0 && synthProvider !== moderator) {
5724
+ if (isDeadModelError(synthAns) && synthModel) {
5725
+ const [prov, mdl] = synthModel.split("/");
5726
+ if (prov && mdl) recordDeadModel(prov, mdl, synthAns.error ?? "");
5727
+ }
5728
+ synthAns = await askOne(moderator, recMsgs, {
5729
+ maxTokens,
5730
+ temperature: 0.4,
5731
+ purpose: "synth"
5732
+ });
5733
+ synthModel = null;
5734
+ }
5703
5735
  const finalText = synthAns.error !== void 0 ? "" : synthAns.response ?? "";
5704
5736
  const synthErr = synthAns.error;
5705
5737
  const publicNodes = Object.keys(nodesById).map(
@@ -5723,6 +5755,7 @@ Synthesize the node outputs into a single coherent deliverable. Preserve any [MI
5723
5755
  fail_fast: failFast,
5724
5756
  cheap_mode: cheapMode
5725
5757
  };
5758
+ if (synthModel) result["synth_model"] = synthModel;
5726
5759
  if (synthErr) result["synth_error"] = synthErr;
5727
5760
  if (plannerErrors.length > 0) result["planner_errors"] = plannerErrors;
5728
5761
  if (unknownNames.length > 0) result["skipped_unknown_providers"] = unknownNames;