nexus-agents 2.141.6 → 2.142.0
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.
- package/dist/{chunk-V2GQUJ3X.js → chunk-FPIAD37H.js} +62 -16
- package/dist/chunk-FPIAD37H.js.map +1 -0
- package/dist/{chunk-3ZZLPQBJ.js → chunk-NESFWFYT.js} +4 -4
- package/dist/{chunk-KCWBMVFC.js → chunk-PXH2RMJL.js} +3 -3
- package/dist/{chunk-OHLXCCQP.js → chunk-ZFARSMPH.js} +2 -2
- package/dist/cli.js +4 -4
- package/dist/{consensus-vote-EZX4S5MB.js → consensus-vote-DYE7UKAI.js} +2 -2
- package/dist/index.js +4 -4
- package/dist/{setup-command-2BHNMMKL.js → setup-command-EFIGMMYZ.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-V2GQUJ3X.js.map +0 -1
- /package/dist/{chunk-3ZZLPQBJ.js.map → chunk-NESFWFYT.js.map} +0 -0
- /package/dist/{chunk-KCWBMVFC.js.map → chunk-PXH2RMJL.js.map} +0 -0
- /package/dist/{chunk-OHLXCCQP.js.map → chunk-ZFARSMPH.js.map} +0 -0
- /package/dist/{consensus-vote-EZX4S5MB.js.map → consensus-vote-DYE7UKAI.js.map} +0 -0
- /package/dist/{setup-command-2BHNMMKL.js.map → setup-command-EFIGMMYZ.js.map} +0 -0
|
@@ -73,6 +73,38 @@ import {
|
|
|
73
73
|
// src/mcp/tools/consensus-vote.ts
|
|
74
74
|
import { z as z10 } from "zod";
|
|
75
75
|
|
|
76
|
+
// src/cli/voter-model-overrides.ts
|
|
77
|
+
function voterModelOverrideEnvKey(role) {
|
|
78
|
+
return `NEXUS_VOTER_MODEL_${role.toUpperCase()}`;
|
|
79
|
+
}
|
|
80
|
+
function resolveVoterModelOverrides(roles, gatewayAdapters, logger10) {
|
|
81
|
+
const overrides = /* @__PURE__ */ new Map();
|
|
82
|
+
if (gatewayAdapters.length === 0) return overrides;
|
|
83
|
+
const byId = /* @__PURE__ */ new Map();
|
|
84
|
+
for (const adapter of gatewayAdapters) byId.set(adapter.modelId, adapter);
|
|
85
|
+
for (const role of roles) {
|
|
86
|
+
const envKey = voterModelOverrideEnvKey(role);
|
|
87
|
+
const raw = process.env[envKey];
|
|
88
|
+
if (raw === void 0 || raw.trim() === "") continue;
|
|
89
|
+
const requested = raw.trim();
|
|
90
|
+
const adapter = byId.get(requested) ?? gatewayAdapters.find((a) => a.modelId.toLowerCase() === requested.toLowerCase());
|
|
91
|
+
if (adapter === void 0) {
|
|
92
|
+
logger10.warn(
|
|
93
|
+
`Voter model override ${envKey}="${requested}" is not a discovered gateway model \u2014 falling back to round-robin for role "${role}".`,
|
|
94
|
+
{ role, requested, available: [...byId.keys()] }
|
|
95
|
+
);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
overrides.set(role, adapter);
|
|
99
|
+
}
|
|
100
|
+
if (overrides.size > 0) {
|
|
101
|
+
logger10.info("Applied per-role voter model overrides (#4055)", {
|
|
102
|
+
overrides: Object.fromEntries([...overrides].map(([r, a]) => [r, a.modelId]))
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return overrides;
|
|
106
|
+
}
|
|
107
|
+
|
|
76
108
|
// src/cli/vote-types.ts
|
|
77
109
|
var VOTER_ROLES = {
|
|
78
110
|
architect: "Software Architect - evaluates technical design, scalability, and maintainability",
|
|
@@ -980,24 +1012,38 @@ function assignRoundRobinAdapters(roles, entries, logger10, source) {
|
|
|
980
1012
|
});
|
|
981
1013
|
return adapters;
|
|
982
1014
|
}
|
|
983
|
-
|
|
984
|
-
if (gatewayAdapters
|
|
985
|
-
if (
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
});
|
|
991
|
-
}
|
|
992
|
-
return assignUniformAdapter(roles, gatewayAdapters[0] ?? fallbackAdapter);
|
|
1015
|
+
function resolveGatewayRoleAdapters(roles, gatewayAdapters, fallbackAdapter, logger10) {
|
|
1016
|
+
if (gatewayAdapters.length === 1) {
|
|
1017
|
+
if (roles.length > 1) {
|
|
1018
|
+
logger10.warn("Consensus panel collapsed to a single gateway model \u2014 votes may correlate", {
|
|
1019
|
+
model: gatewayAdapters[0]?.modelId,
|
|
1020
|
+
roleCount: roles.length
|
|
1021
|
+
});
|
|
993
1022
|
}
|
|
994
|
-
return
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
1023
|
+
return assignUniformAdapter(roles, gatewayAdapters[0] ?? fallbackAdapter);
|
|
1024
|
+
}
|
|
1025
|
+
const overrides = resolveVoterModelOverrides(roles, gatewayAdapters, logger10);
|
|
1026
|
+
const roundRobinRoles = roles.filter((r) => !overrides.has(r));
|
|
1027
|
+
const assigned = assignRoundRobinAdapters(
|
|
1028
|
+
roundRobinRoles,
|
|
1029
|
+
gatewayAdapters.map((a) => ({ label: a.modelId, adapter: a })),
|
|
1030
|
+
logger10,
|
|
1031
|
+
"gateway"
|
|
1032
|
+
);
|
|
1033
|
+
for (const [role, adapter] of overrides) assigned.set(role, adapter);
|
|
1034
|
+
const distinctModels = new Set([...assigned.values()].map((a) => a.modelId));
|
|
1035
|
+
if (roles.length > 1 && distinctModels.size === 1) {
|
|
1036
|
+
logger10.warn(
|
|
1037
|
+
"Consensus panel collapsed to a single gateway model via overrides \u2014 votes may correlate",
|
|
1038
|
+
{ model: [...distinctModels][0], roleCount: roles.length }
|
|
999
1039
|
);
|
|
1000
1040
|
}
|
|
1041
|
+
return assigned;
|
|
1042
|
+
}
|
|
1043
|
+
async function resolveDiverseAdapters(roles, logger10, fallbackAdapter, gatewayAdapters) {
|
|
1044
|
+
if (gatewayAdapters !== void 0 && gatewayAdapters.length > 0) {
|
|
1045
|
+
return resolveGatewayRoleAdapters(roles, gatewayAdapters, fallbackAdapter, logger10);
|
|
1046
|
+
}
|
|
1001
1047
|
let availableClis;
|
|
1002
1048
|
try {
|
|
1003
1049
|
availableClis = await getAvailableClis();
|
|
@@ -6134,4 +6180,4 @@ export {
|
|
|
6134
6180
|
CONSENSUS_VOTE_OUTPUT_SCHEMA,
|
|
6135
6181
|
registerConsensusVoteTool
|
|
6136
6182
|
};
|
|
6137
|
-
//# sourceMappingURL=chunk-
|
|
6183
|
+
//# sourceMappingURL=chunk-FPIAD37H.js.map
|