nexus-agents 8.53.4 → 8.54.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/{ast-rule-runner-PELERN3O.js → ast-rule-runner-O662YIWH.js} +3 -3
- package/dist/{child-mcp-config-RYQSABJT.js → child-mcp-config-TAVB7ICF.js} +2 -2
- package/dist/{chunk-XYK2GPUF.js → chunk-2DFG2IDE.js} +2 -2
- package/dist/{chunk-WAVAOSH5.js → chunk-2LTE4FRY.js} +7 -7
- package/dist/{chunk-33RHZITC.js → chunk-2NKV7GWF.js} +2 -2
- package/dist/{chunk-JIUX35FD.js → chunk-34T342GH.js} +3 -3
- package/dist/{chunk-R4ITN2N2.js → chunk-35U4M4YF.js} +4 -4
- package/dist/{chunk-SKUCBZI5.js → chunk-3BTD6HDP.js} +151 -40
- package/dist/chunk-3BTD6HDP.js.map +1 -0
- package/dist/{chunk-TS4GGKYN.js → chunk-3FAK4CZI.js} +2 -2
- package/dist/{chunk-2WCWSJES.js → chunk-3VIEHYNH.js} +5 -5
- package/dist/{chunk-NBQ457TC.js → chunk-42XZ33YH.js} +6 -6
- package/dist/{chunk-2RLHE2AN.js → chunk-4C4BKY35.js} +9 -9
- package/dist/{chunk-WWZKWC2Z.js → chunk-AMPKDK4X.js} +3 -3
- package/dist/{chunk-M6VNZD43.js → chunk-BAH7SLHC.js} +36 -36
- package/dist/{chunk-XBSPEJ23.js → chunk-C5VV4BYU.js} +2 -2
- package/dist/{chunk-YKCVPCLR.js → chunk-EQMBAF6Y.js} +2 -2
- package/dist/{chunk-54YTICHC.js → chunk-EZTD6X3P.js} +2 -2
- package/dist/{chunk-5EEP73OA.js → chunk-FL5QS2FN.js} +2 -2
- package/dist/{chunk-3IYEZ2PK.js → chunk-GNBK6OCF.js} +2 -2
- package/dist/{chunk-NGXHFMA6.js → chunk-I3C4CMEA.js} +5 -3
- package/dist/{chunk-NGXHFMA6.js.map → chunk-I3C4CMEA.js.map} +1 -1
- package/dist/{chunk-X5R6QOF2.js → chunk-PLAU4ZYK.js} +2 -2
- package/dist/{chunk-XMMRINZK.js → chunk-QOXO4PHO.js} +2 -2
- package/dist/{chunk-J45ABSJ6.js → chunk-RPHVUPZ7.js} +2 -2
- package/dist/{chunk-THPZO2XW.js → chunk-RWMWQGPI.js} +4 -4
- package/dist/{chunk-USHZGWDJ.js → chunk-SNOZB4FU.js} +20 -11
- package/dist/chunk-SNOZB4FU.js.map +1 -0
- package/dist/{chunk-XM5MYAMC.js → chunk-SO5VA6XR.js} +2 -2
- package/dist/{chunk-X5IOLM33.js → chunk-UGBSTL7K.js} +2 -2
- package/dist/{chunk-SKUIP3ER.js → chunk-UQ5QN6ML.js} +2 -2
- package/dist/{chunk-GE4KNPPO.js → chunk-UVN7V7WQ.js} +2 -2
- package/dist/{chunk-CTLBZ33K.js → chunk-WAUP2RBW.js} +5 -5
- package/dist/{chunk-3PLSFD3D.js → chunk-WFZIQMCH.js} +2 -2
- package/dist/{chunk-ELBJDCC7.js → chunk-WGN2GCQE.js} +2 -2
- package/dist/{chunk-ECVWK52H.js → chunk-WKTC37PV.js} +2 -2
- package/dist/{chunk-3JFRPAYE.js → chunk-YB74LXLF.js} +4 -4
- package/dist/{chunk-N6NHQWQR.js → chunk-YC3TZ5N2.js} +2 -2
- package/dist/{chunk-QMHL5IYT.js → chunk-YDJQBOYE.js} +3 -3
- package/dist/{chunk-6GLEQDA7.js → chunk-ZOJWE5AB.js} +4 -4
- package/dist/{cli-circuit-breaker-D7NZ7YF3.js → cli-circuit-breaker-IEAKDBEX.js} +3 -3
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +68 -53
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-JRFBB5YP.js → composite-router-A7LIM76Z.js} +2 -2
- package/dist/{consensus-vote-I5CZQNJV.js → consensus-vote-RBJKBRHH.js} +17 -17
- package/dist/{consensus-vote-types-CA7Xuzl3.d.ts → consensus-vote-types-CXSFJkat.d.ts} +91 -0
- package/dist/{context-retriever-BIAAVT6X.js → context-retriever-766P6Q5N.js} +8 -8
- package/dist/{doctor-deep-PLJHEYWB.js → doctor-deep-O4H5EHJU.js} +3 -3
- package/dist/{doctor-live-JTSQWZ2L.js → doctor-live-EEJFWBO3.js} +10 -10
- package/dist/{expert-bridge-VLEDZGPA.js → expert-bridge-5WFR7CU7.js} +4 -4
- package/dist/{factory-EUZWJNFU.js → factory-DRAOHRNW.js} +9 -9
- package/dist/{factory-KBUTXBHE.js → factory-QMGXR4O3.js} +5 -5
- package/dist/{improvement-review-MD3UPWNW.js → improvement-review-SYSTVQ5V.js} +6 -6
- package/dist/index.d.ts +10 -2
- package/dist/index.js +32 -32
- package/dist/{init-opencode-WMDH2ZUK.js → init-opencode-2M52KWAW.js} +6 -6
- package/dist/issue-triage-YMGSB67V.js +17 -0
- package/dist/{pr-reviewer-helpers-JWJ4HVPW.js → pr-reviewer-helpers-7Z4YCH7M.js} +4 -4
- package/dist/{registry-command-IFZYXY5Y.js → registry-command-BFIP4H5K.js} +2 -2
- package/dist/{repo-security-plan-JKXJSVP2.js → repo-security-plan-YTH6WX2D.js} +3 -3
- package/dist/{research-helpers-synthesize-QI2V4GS6.js → research-helpers-synthesize-3F2V3UT4.js} +4 -4
- package/dist/{routing-memory-EFMYS572.js → routing-memory-BXPT2NGR.js} +2 -2
- package/dist/{session-memory-XO5T3PJD.js → session-memory-EMQDHMCG.js} +3 -3
- package/dist/{setup-config-JRFZ5LM3.js → setup-config-X2LBKED3.js} +3 -3
- package/dist/{setup-custom-api-FH2EM46D.js → setup-custom-api-SPNYKU3G.js} +4 -4
- package/dist/setup-data-dir-TB7MYUX2.js +31 -0
- package/dist/{tool-memory-JHJKFFIX.js → tool-memory-WOIZTLSM.js} +5 -5
- package/dist/{unified-registry-DPL6V77X.js → unified-registry-KPTDXCLT.js} +10 -10
- package/dist/{weather-report-CAHU2PCR.js → weather-report-HXMGZBOD.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-SKUCBZI5.js.map +0 -1
- package/dist/chunk-USHZGWDJ.js.map +0 -1
- package/dist/issue-triage-UNLRUO2O.js +0 -17
- package/dist/setup-data-dir-ZX2ZRKIW.js +0 -31
- /package/dist/{ast-rule-runner-PELERN3O.js.map → ast-rule-runner-O662YIWH.js.map} +0 -0
- /package/dist/{child-mcp-config-RYQSABJT.js.map → child-mcp-config-TAVB7ICF.js.map} +0 -0
- /package/dist/{chunk-XYK2GPUF.js.map → chunk-2DFG2IDE.js.map} +0 -0
- /package/dist/{chunk-WAVAOSH5.js.map → chunk-2LTE4FRY.js.map} +0 -0
- /package/dist/{chunk-33RHZITC.js.map → chunk-2NKV7GWF.js.map} +0 -0
- /package/dist/{chunk-JIUX35FD.js.map → chunk-34T342GH.js.map} +0 -0
- /package/dist/{chunk-R4ITN2N2.js.map → chunk-35U4M4YF.js.map} +0 -0
- /package/dist/{chunk-TS4GGKYN.js.map → chunk-3FAK4CZI.js.map} +0 -0
- /package/dist/{chunk-2WCWSJES.js.map → chunk-3VIEHYNH.js.map} +0 -0
- /package/dist/{chunk-NBQ457TC.js.map → chunk-42XZ33YH.js.map} +0 -0
- /package/dist/{chunk-2RLHE2AN.js.map → chunk-4C4BKY35.js.map} +0 -0
- /package/dist/{chunk-WWZKWC2Z.js.map → chunk-AMPKDK4X.js.map} +0 -0
- /package/dist/{chunk-M6VNZD43.js.map → chunk-BAH7SLHC.js.map} +0 -0
- /package/dist/{chunk-XBSPEJ23.js.map → chunk-C5VV4BYU.js.map} +0 -0
- /package/dist/{chunk-YKCVPCLR.js.map → chunk-EQMBAF6Y.js.map} +0 -0
- /package/dist/{chunk-54YTICHC.js.map → chunk-EZTD6X3P.js.map} +0 -0
- /package/dist/{chunk-5EEP73OA.js.map → chunk-FL5QS2FN.js.map} +0 -0
- /package/dist/{chunk-3IYEZ2PK.js.map → chunk-GNBK6OCF.js.map} +0 -0
- /package/dist/{chunk-X5R6QOF2.js.map → chunk-PLAU4ZYK.js.map} +0 -0
- /package/dist/{chunk-XMMRINZK.js.map → chunk-QOXO4PHO.js.map} +0 -0
- /package/dist/{chunk-J45ABSJ6.js.map → chunk-RPHVUPZ7.js.map} +0 -0
- /package/dist/{chunk-THPZO2XW.js.map → chunk-RWMWQGPI.js.map} +0 -0
- /package/dist/{chunk-XM5MYAMC.js.map → chunk-SO5VA6XR.js.map} +0 -0
- /package/dist/{chunk-X5IOLM33.js.map → chunk-UGBSTL7K.js.map} +0 -0
- /package/dist/{chunk-SKUIP3ER.js.map → chunk-UQ5QN6ML.js.map} +0 -0
- /package/dist/{chunk-GE4KNPPO.js.map → chunk-UVN7V7WQ.js.map} +0 -0
- /package/dist/{chunk-CTLBZ33K.js.map → chunk-WAUP2RBW.js.map} +0 -0
- /package/dist/{chunk-3PLSFD3D.js.map → chunk-WFZIQMCH.js.map} +0 -0
- /package/dist/{chunk-ELBJDCC7.js.map → chunk-WGN2GCQE.js.map} +0 -0
- /package/dist/{chunk-ECVWK52H.js.map → chunk-WKTC37PV.js.map} +0 -0
- /package/dist/{chunk-3JFRPAYE.js.map → chunk-YB74LXLF.js.map} +0 -0
- /package/dist/{chunk-N6NHQWQR.js.map → chunk-YC3TZ5N2.js.map} +0 -0
- /package/dist/{chunk-QMHL5IYT.js.map → chunk-YDJQBOYE.js.map} +0 -0
- /package/dist/{chunk-6GLEQDA7.js.map → chunk-ZOJWE5AB.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-D7NZ7YF3.js.map → cli-circuit-breaker-IEAKDBEX.js.map} +0 -0
- /package/dist/{composite-router-JRFBB5YP.js.map → composite-router-A7LIM76Z.js.map} +0 -0
- /package/dist/{consensus-vote-I5CZQNJV.js.map → consensus-vote-RBJKBRHH.js.map} +0 -0
- /package/dist/{context-retriever-BIAAVT6X.js.map → context-retriever-766P6Q5N.js.map} +0 -0
- /package/dist/{doctor-deep-PLJHEYWB.js.map → doctor-deep-O4H5EHJU.js.map} +0 -0
- /package/dist/{doctor-live-JTSQWZ2L.js.map → doctor-live-EEJFWBO3.js.map} +0 -0
- /package/dist/{expert-bridge-VLEDZGPA.js.map → expert-bridge-5WFR7CU7.js.map} +0 -0
- /package/dist/{factory-EUZWJNFU.js.map → factory-DRAOHRNW.js.map} +0 -0
- /package/dist/{factory-KBUTXBHE.js.map → factory-QMGXR4O3.js.map} +0 -0
- /package/dist/{improvement-review-MD3UPWNW.js.map → improvement-review-SYSTVQ5V.js.map} +0 -0
- /package/dist/{init-opencode-WMDH2ZUK.js.map → init-opencode-2M52KWAW.js.map} +0 -0
- /package/dist/{issue-triage-UNLRUO2O.js.map → issue-triage-YMGSB67V.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-JWJ4HVPW.js.map → pr-reviewer-helpers-7Z4YCH7M.js.map} +0 -0
- /package/dist/{registry-command-IFZYXY5Y.js.map → registry-command-BFIP4H5K.js.map} +0 -0
- /package/dist/{repo-security-plan-JKXJSVP2.js.map → repo-security-plan-YTH6WX2D.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-QI2V4GS6.js.map → research-helpers-synthesize-3F2V3UT4.js.map} +0 -0
- /package/dist/{routing-memory-EFMYS572.js.map → routing-memory-BXPT2NGR.js.map} +0 -0
- /package/dist/{session-memory-XO5T3PJD.js.map → session-memory-EMQDHMCG.js.map} +0 -0
- /package/dist/{setup-config-JRFZ5LM3.js.map → setup-config-X2LBKED3.js.map} +0 -0
- /package/dist/{setup-custom-api-FH2EM46D.js.map → setup-custom-api-SPNYKU3G.js.map} +0 -0
- /package/dist/{setup-data-dir-ZX2ZRKIW.js.map → setup-data-dir-TB7MYUX2.js.map} +0 -0
- /package/dist/{tool-memory-JHJKFFIX.js.map → tool-memory-WOIZTLSM.js.map} +0 -0
- /package/dist/{unified-registry-DPL6V77X.js.map → unified-registry-KPTDXCLT.js.map} +0 -0
- /package/dist/{weather-report-CAHU2PCR.js.map → weather-report-HXMGZBOD.js.map} +0 -0
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
getBuiltInAstRulesPath,
|
|
10
10
|
loadRules,
|
|
11
11
|
runAstQaRules
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-2NKV7GWF.js";
|
|
13
|
+
import "./chunk-I3C4CMEA.js";
|
|
14
14
|
import "./chunk-MTYJPPIG.js";
|
|
15
15
|
import "./chunk-BTYRPZON.js";
|
|
16
16
|
import "./chunk-ZPWHCABL.js";
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
loadRules,
|
|
27
27
|
runAstQaRules
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=ast-rule-runner-
|
|
29
|
+
//# sourceMappingURL=ast-rule-runner-O662YIWH.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-T46RV7Y7.js";
|
|
4
4
|
import {
|
|
5
5
|
createLogger
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-I3C4CMEA.js";
|
|
7
7
|
import "./chunk-MTYJPPIG.js";
|
|
8
8
|
import "./chunk-BTYRPZON.js";
|
|
9
9
|
import "./chunk-ZPWHCABL.js";
|
|
@@ -60,4 +60,4 @@ export {
|
|
|
60
60
|
generateMcpConfig,
|
|
61
61
|
getDefaultAllowedTools
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=child-mcp-config-
|
|
63
|
+
//# sourceMappingURL=child-mcp-config-TAVB7ICF.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
CACHE_TIMEOUTS,
|
|
3
3
|
createLogger,
|
|
4
4
|
getTimeProvider
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-I3C4CMEA.js";
|
|
6
6
|
|
|
7
7
|
// src/security/trust-types.ts
|
|
8
8
|
import { z } from "zod";
|
|
@@ -610,4 +610,4 @@ export {
|
|
|
610
610
|
resolveReputationGatingMode,
|
|
611
611
|
gateWithReputation
|
|
612
612
|
};
|
|
613
|
-
//# sourceMappingURL=chunk-
|
|
613
|
+
//# sourceMappingURL=chunk-2DFG2IDE.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveCliSlot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3FAK4CZI.js";
|
|
4
4
|
import {
|
|
5
5
|
createLogger,
|
|
6
6
|
getTimeProvider,
|
|
7
7
|
isRateLimitText
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-I3C4CMEA.js";
|
|
9
9
|
|
|
10
10
|
// src/pipeline/expert-bridge.ts
|
|
11
11
|
function resolveCliFromModelString(model) {
|
|
@@ -21,7 +21,7 @@ async function getMcpConfigPath() {
|
|
|
21
21
|
if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
|
|
22
22
|
mcpConfigInitPromise ??= (async () => {
|
|
23
23
|
try {
|
|
24
|
-
const { generateMcpConfig } = await import("./child-mcp-config-
|
|
24
|
+
const { generateMcpConfig } = await import("./child-mcp-config-TAVB7ICF.js");
|
|
25
25
|
const config = await generateMcpConfig();
|
|
26
26
|
cachedMcpConfigPath = config.configPath;
|
|
27
27
|
cachedMcpConfigCleanup = config.cleanup;
|
|
@@ -93,8 +93,8 @@ var routerInitPromise = null;
|
|
|
93
93
|
async function getRouter() {
|
|
94
94
|
if (cachedRouter !== null) return cachedRouter;
|
|
95
95
|
routerInitPromise ??= (async () => {
|
|
96
|
-
const { createAllAdapters } = await import("./factory-
|
|
97
|
-
const { createCompositeRouter } = await import("./composite-router-
|
|
96
|
+
const { createAllAdapters } = await import("./factory-DRAOHRNW.js");
|
|
97
|
+
const { createCompositeRouter } = await import("./composite-router-A7LIM76Z.js");
|
|
98
98
|
const adapters = createAllAdapters();
|
|
99
99
|
if (adapters.size === 0) {
|
|
100
100
|
routerInitPromise = null;
|
|
@@ -102,7 +102,7 @@ async function getRouter() {
|
|
|
102
102
|
}
|
|
103
103
|
cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
|
|
104
104
|
try {
|
|
105
|
-
const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-
|
|
105
|
+
const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-IEAKDBEX.js");
|
|
106
106
|
cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
|
|
107
107
|
} catch (error) {
|
|
108
108
|
const msg = error instanceof Error ? error.message : String(error);
|
|
@@ -213,4 +213,4 @@ export {
|
|
|
213
213
|
tokenSplitFromUsage,
|
|
214
214
|
executeExpert
|
|
215
215
|
};
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
216
|
+
//# sourceMappingURL=chunk-2LTE4FRY.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
ValidationError,
|
|
4
4
|
createLogger,
|
|
5
5
|
formatZodError
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-I3C4CMEA.js";
|
|
7
7
|
|
|
8
8
|
// src/security/ast-rule-runner.ts
|
|
9
9
|
import { existsSync } from "node:fs";
|
|
@@ -241,4 +241,4 @@ export {
|
|
|
241
241
|
collectAstQaFindings,
|
|
242
242
|
runAstQaRules
|
|
243
243
|
};
|
|
244
|
-
//# sourceMappingURL=chunk-
|
|
244
|
+
//# sourceMappingURL=chunk-2NKV7GWF.js.map
|
|
@@ -10,13 +10,13 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
assessReputation,
|
|
12
12
|
sanitizeInput
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2DFG2IDE.js";
|
|
14
14
|
import {
|
|
15
15
|
createLogger,
|
|
16
16
|
err,
|
|
17
17
|
getTimeProvider,
|
|
18
18
|
ok
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-I3C4CMEA.js";
|
|
20
20
|
|
|
21
21
|
// src/dogfooding/pr-reviewer-helpers.ts
|
|
22
22
|
import { randomUUID } from "node:crypto";
|
|
@@ -416,4 +416,4 @@ export {
|
|
|
416
416
|
createFailedReview,
|
|
417
417
|
reviewPostingBlock
|
|
418
418
|
};
|
|
419
|
-
//# sourceMappingURL=chunk-
|
|
419
|
+
//# sourceMappingURL=chunk-34T342GH.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GitHubProvider,
|
|
3
3
|
ScmError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EZTD6X3P.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveToken
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WFZIQMCH.js";
|
|
8
8
|
import {
|
|
9
9
|
err,
|
|
10
10
|
ok
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-I3C4CMEA.js";
|
|
12
12
|
|
|
13
13
|
// src/scm/factory.ts
|
|
14
14
|
async function createScmProvider(config) {
|
|
@@ -41,4 +41,4 @@ export {
|
|
|
41
41
|
createScmProvider,
|
|
42
42
|
createGitHubProvider
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-35U4M4YF.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computeCostDetail,
|
|
3
3
|
priceBasisOf
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WGN2GCQE.js";
|
|
5
5
|
import {
|
|
6
6
|
allOf
|
|
7
7
|
} from "./chunk-OQB3XC5O.js";
|
|
@@ -23,27 +23,29 @@ import {
|
|
|
23
23
|
toolSuccessStructured,
|
|
24
24
|
withProgressHeartbeat,
|
|
25
25
|
wrapToolWithTimeout
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-ZOJWE5AB.js";
|
|
27
27
|
import {
|
|
28
28
|
VERSION
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-GNBK6OCF.js";
|
|
30
30
|
import {
|
|
31
31
|
UNRESOLVED_MODEL_ID,
|
|
32
32
|
assessPanelIndependence,
|
|
33
33
|
countDistinctModels,
|
|
34
34
|
createEvent,
|
|
35
35
|
getGlobalRegistry
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-YB74LXLF.js";
|
|
37
37
|
import {
|
|
38
38
|
getToolMemory
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-RWMWQGPI.js";
|
|
40
40
|
import {
|
|
41
41
|
authRemediation,
|
|
42
|
+
classifyExtractedError,
|
|
42
43
|
delay,
|
|
43
44
|
getAvailableClis,
|
|
45
|
+
isTimeoutText,
|
|
44
46
|
sleep,
|
|
45
47
|
withTimeout
|
|
46
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-SNOZB4FU.js";
|
|
47
49
|
import {
|
|
48
50
|
AgentError,
|
|
49
51
|
CLI_NAMES,
|
|
@@ -68,11 +70,12 @@ import {
|
|
|
68
70
|
getTimeProvider,
|
|
69
71
|
isDurableCapacityText,
|
|
70
72
|
isRateLimitLikeError,
|
|
73
|
+
isRateLimitText,
|
|
71
74
|
ok,
|
|
72
75
|
registerPersistentOutcomeStoreFactory,
|
|
73
76
|
resolveClassGuardMs,
|
|
74
77
|
resolveVoteTimeout
|
|
75
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-I3C4CMEA.js";
|
|
76
79
|
import {
|
|
77
80
|
ensureLearningDir,
|
|
78
81
|
getOutcomesFile
|
|
@@ -142,13 +145,6 @@ var VOTER_ROLES = {
|
|
|
142
145
|
scope_steward: "Scope Steward - asks whether to build at all; checks existing tools, biases toward kill-the-feature (#2185)"
|
|
143
146
|
};
|
|
144
147
|
|
|
145
|
-
// src/cli-adapters/codex-limits.ts
|
|
146
|
-
var CODEX_DEFAULT_MAX_THREADS = 6;
|
|
147
|
-
function checkCodexConcurrency(codexBoundConcurrency) {
|
|
148
|
-
if (codexBoundConcurrency <= CODEX_DEFAULT_MAX_THREADS) return null;
|
|
149
|
-
return `${String(codexBoundConcurrency)} parallel calls are bound for Codex, exceeding its default max_threads=${String(CODEX_DEFAULT_MAX_THREADS)}. Codex may queue or drop the excess. Raise [agents] max_threads in ~/.codex/config.toml, or spread the panel across more CLIs (claude/gemini) so fewer roles land on Codex.`;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
148
|
// src/cli/panel-independence.ts
|
|
153
149
|
function reportPanelIndependence(adapters, roleCount, phase, logger11) {
|
|
154
150
|
reportPanelModelIndependence(
|
|
@@ -265,6 +261,13 @@ async function retryErroredRoles(first, relaunch, logger11, backoffMs) {
|
|
|
265
261
|
return first.map((v) => recovered.get(v.role) ?? v);
|
|
266
262
|
}
|
|
267
263
|
|
|
264
|
+
// src/cli-adapters/codex-limits.ts
|
|
265
|
+
var CODEX_DEFAULT_MAX_THREADS = 6;
|
|
266
|
+
function checkCodexConcurrency(codexBoundConcurrency) {
|
|
267
|
+
if (codexBoundConcurrency <= CODEX_DEFAULT_MAX_THREADS) return null;
|
|
268
|
+
return `${String(codexBoundConcurrency)} parallel calls are bound for Codex, exceeding its default max_threads=${String(CODEX_DEFAULT_MAX_THREADS)}. Codex may queue or drop the excess. Raise [agents] max_threads in ~/.codex/config.toml, or spread the panel across more CLIs (claude/gemini) so fewer roles land on Codex.`;
|
|
269
|
+
}
|
|
270
|
+
|
|
268
271
|
// src/cli/voter-adapter-resolve.ts
|
|
269
272
|
var NoAdapterError = class extends Error {
|
|
270
273
|
constructor(message) {
|
|
@@ -297,6 +300,50 @@ function resolveAdapterOrFail(options, logger11, allowSimulation) {
|
|
|
297
300
|
`No adapter available for voting: ${resolved.error}. Install a CLI (claude/gemini/codex) or set ANTHROPIC_API_KEY.`
|
|
298
301
|
);
|
|
299
302
|
}
|
|
303
|
+
function warnIfCodexConcurrencyExceeded(roleAdapters, logger11) {
|
|
304
|
+
const codexBound = [...roleAdapters.values()].filter(
|
|
305
|
+
(a) => a.name === "codex"
|
|
306
|
+
).length;
|
|
307
|
+
const warning = checkCodexConcurrency(codexBound);
|
|
308
|
+
if (warning !== null) {
|
|
309
|
+
logger11.warn("Codex concurrency limit may be exceeded", { detail: warning });
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// src/cli/voter-fallback.ts
|
|
314
|
+
function bareCliName(id) {
|
|
315
|
+
return id.startsWith("cli-") ? id.slice("cli-".length) : id;
|
|
316
|
+
}
|
|
317
|
+
function classifyFallbackReason(message) {
|
|
318
|
+
if (isDurableCapacityText(message)) return "capacity";
|
|
319
|
+
if (isRateLimitText(message)) return "rate-limit";
|
|
320
|
+
if (classifyExtractedError(message, "unknown").code === "NOT_AUTHENTICATED") return "auth";
|
|
321
|
+
if (UNVERIFIABLE_STDERR_RE.test(message)) return "sandbox";
|
|
322
|
+
if (isTimeoutText(message)) return "timeout";
|
|
323
|
+
return "unknown";
|
|
324
|
+
}
|
|
325
|
+
function detectedModel(adapter) {
|
|
326
|
+
const id = adapter.modelId;
|
|
327
|
+
return typeof id === "string" && id !== "" && id !== UNRESOLVED_MODEL_ID ? id : void 0;
|
|
328
|
+
}
|
|
329
|
+
function assignedCliOf(key) {
|
|
330
|
+
return typeof key === "string" && key !== "" ? bareCliName(key) : void 0;
|
|
331
|
+
}
|
|
332
|
+
function crossCliFallback(assigned, assignedKey, error) {
|
|
333
|
+
const fromModel = detectedModel(assigned);
|
|
334
|
+
return {
|
|
335
|
+
fromCli: assignedCliOf(assignedKey) ?? "unknown",
|
|
336
|
+
...fromModel !== void 0 ? { fromModel } : {},
|
|
337
|
+
reason: classifyFallbackReason(error)
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
function inFamilyFallback(cli, fromModel) {
|
|
341
|
+
return { fromCli: bareCliName(cli), fromModel, reason: "capacity" };
|
|
342
|
+
}
|
|
343
|
+
function withAssignedCli(result, assignedKey) {
|
|
344
|
+
const assignedCli = assignedCliOf(assignedKey);
|
|
345
|
+
return assignedCli === void 0 ? result : { ...result, assignedCli };
|
|
346
|
+
}
|
|
300
347
|
|
|
301
348
|
// src/cli/voter-prompts.ts
|
|
302
349
|
var DEFAULT_VOTER_PROJECT = "nexus-agents";
|
|
@@ -1081,7 +1128,10 @@ async function runVoteCompletion(args) {
|
|
|
1081
1128
|
// #6094: the transport's captured stderr rides up with the vote so the
|
|
1082
1129
|
// caller can classify a seat that could not read the artifact from the
|
|
1083
1130
|
// structured signal rather than from its prose.
|
|
1084
|
-
cliStderr: response.value.cliStderr
|
|
1131
|
+
cliStderr: response.value.cliStderr,
|
|
1132
|
+
// #6115: the alias the seat asked for, when the CLI answered on another
|
|
1133
|
+
// one of its family (#6120) — the seat's result discloses it as a fallback.
|
|
1134
|
+
fallbackFrom: response.value.fallbackFrom
|
|
1085
1135
|
};
|
|
1086
1136
|
}
|
|
1087
1137
|
async function executeSingleVoteAttempt(role, proposal, adapter, timeoutMs, context = {}) {
|
|
@@ -1099,7 +1149,8 @@ async function executeSingleVoteAttempt(role, proposal, adapter, timeoutMs, cont
|
|
|
1099
1149
|
vote,
|
|
1100
1150
|
output: completion.output,
|
|
1101
1151
|
usage: completion.usage,
|
|
1102
|
-
cliStderr: completion.cliStderr
|
|
1152
|
+
cliStderr: completion.cliStderr,
|
|
1153
|
+
fallbackFrom: completion.fallbackFrom
|
|
1103
1154
|
};
|
|
1104
1155
|
} catch (error) {
|
|
1105
1156
|
if (error instanceof SyntheticVoteError) {
|
|
@@ -1139,7 +1190,8 @@ async function executeWithRetries(opts) {
|
|
|
1139
1190
|
attemptMs,
|
|
1140
1191
|
succeeded: true
|
|
1141
1192
|
});
|
|
1142
|
-
|
|
1193
|
+
const { vote, usage, cliStderr, fallbackFrom } = result;
|
|
1194
|
+
return { vote, usage, cliStderr, fallbackFrom, ok: true };
|
|
1143
1195
|
}
|
|
1144
1196
|
lastError = result.error;
|
|
1145
1197
|
if (logFailedAttempt(logger11, { role, attempt, maxRetries, attemptMs, error: lastError })) {
|
|
@@ -1180,8 +1232,8 @@ function shouldRetryOnFallback(result, used, fallback) {
|
|
|
1180
1232
|
function adapterCliKey(adapter) {
|
|
1181
1233
|
return adapter.name ?? adapter.providerId;
|
|
1182
1234
|
}
|
|
1183
|
-
function
|
|
1184
|
-
return { ...result, pinnedModel };
|
|
1235
|
+
function withAssignment(result, pinnedModel, assignedKey) {
|
|
1236
|
+
return withAssignedCli({ ...result, pinnedModel }, assignedKey);
|
|
1185
1237
|
}
|
|
1186
1238
|
function createKeyedSerializer() {
|
|
1187
1239
|
const tails = /* @__PURE__ */ new Map();
|
|
@@ -1216,21 +1268,24 @@ async function launchRoleVote(role, index, input, voteOnAdapter) {
|
|
|
1216
1268
|
if (index > 0 && input.interDelay > 0) await delay(input.interDelay);
|
|
1217
1269
|
const adapter = input.roleAdapters.get(role) ?? input.fallbackAdapter;
|
|
1218
1270
|
const pinnedModel = adapter.modelId;
|
|
1271
|
+
const assignedKey = adapterCliKey(adapter);
|
|
1272
|
+
const stamp = (r) => withAssignment(r, pinnedModel, assignedKey);
|
|
1219
1273
|
if (cancelled(input.signal)) {
|
|
1220
|
-
return
|
|
1274
|
+
return stamp(createErrorVoteResult(role, CANCELLED_MESSAGE, 0));
|
|
1221
1275
|
}
|
|
1222
1276
|
const primary = await voteOnAdapter(role, adapter);
|
|
1223
|
-
if (!shouldRetryOnFallback(primary, adapter, input.fallbackAdapter))
|
|
1224
|
-
|
|
1225
|
-
}
|
|
1226
|
-
if (cancelled(input.signal)) return withPinnedModel(primary, pinnedModel);
|
|
1277
|
+
if (!shouldRetryOnFallback(primary, adapter, input.fallbackAdapter)) return stamp(primary);
|
|
1278
|
+
if (cancelled(input.signal)) return stamp(primary);
|
|
1227
1279
|
input.logger.warn("Voter failed on diverse adapter; retrying on fallback (#3587)", {
|
|
1228
1280
|
role,
|
|
1229
|
-
failedCli:
|
|
1281
|
+
failedCli: assignedKey,
|
|
1230
1282
|
fallbackCli: adapterCliKey(input.fallbackAdapter),
|
|
1231
1283
|
error: primary.error
|
|
1232
1284
|
});
|
|
1233
|
-
|
|
1285
|
+
const recovered = await voteOnAdapter(role, input.fallbackAdapter);
|
|
1286
|
+
if (recovered.source === "error") return stamp(recovered);
|
|
1287
|
+
const fallback = crossCliFallback(adapter, assignedKey, primary.error ?? "");
|
|
1288
|
+
return stamp({ ...recovered, fallback });
|
|
1234
1289
|
}
|
|
1235
1290
|
async function launchVotesWithOverallDeadline(input) {
|
|
1236
1291
|
const { roles, proposal, logger: logger11, voteOptions, overallDeadlineMs, voteFn } = input;
|
|
@@ -1270,7 +1325,7 @@ function computeOverallConsensusDeadlineMs(timeoutMs, maxRetries, roleCount, int
|
|
|
1270
1325
|
}
|
|
1271
1326
|
var DEFAULT_INTER_AGENT_DELAY_MS = 2e3;
|
|
1272
1327
|
var defaultLogger = createLogger({ component: "voter-agents" });
|
|
1273
|
-
function buildLlmVoteResult(role, vote, usage, adapter, processingTimeMs) {
|
|
1328
|
+
function buildLlmVoteResult(role, { vote, usage, fallbackFrom }, adapter, processingTimeMs) {
|
|
1274
1329
|
return {
|
|
1275
1330
|
role,
|
|
1276
1331
|
vote,
|
|
@@ -1278,6 +1333,9 @@ function buildLlmVoteResult(role, vote, usage, adapter, processingTimeMs) {
|
|
|
1278
1333
|
source: "llm",
|
|
1279
1334
|
cli: adapter.providerId,
|
|
1280
1335
|
model: adapter.modelId,
|
|
1336
|
+
// #6115: the CLI answered on another model of its family (#6120) — a
|
|
1337
|
+
// capacity fallback by construction, disclosed on the seat.
|
|
1338
|
+
...fallbackFrom !== void 0 ? { fallback: inFamilyFallback(adapter.providerId, fallbackFrom) } : {},
|
|
1281
1339
|
// #4472: surface the voter's choice at the result level, where the tally
|
|
1282
1340
|
// and the record read it. Absent when no options were declared or the
|
|
1283
1341
|
// selection matched none of them.
|
|
@@ -1326,7 +1384,7 @@ async function executeAgentVote(role, proposal, adapter, logger11, options) {
|
|
|
1326
1384
|
const result = await executeWithRetries({ ...retryOptions, options: declaredOptions });
|
|
1327
1385
|
const processingTimeMs = getTimeProvider().now() - start;
|
|
1328
1386
|
if (result.ok) {
|
|
1329
|
-
const built = buildLlmVoteResult(role, result
|
|
1387
|
+
const built = buildLlmVoteResult(role, result, adapter, processingTimeMs);
|
|
1330
1388
|
return finalizeParsedVote(built, result.cliStderr, logger11);
|
|
1331
1389
|
}
|
|
1332
1390
|
logger11.error("Vote execution failed after all retries", void 0, {
|
|
@@ -1344,15 +1402,6 @@ async function executeAgentVote(role, proposal, adapter, logger11, options) {
|
|
|
1344
1402
|
${remediation}`;
|
|
1345
1403
|
return createErrorVoteResult(role, errorText, processingTimeMs, adapter.providerId);
|
|
1346
1404
|
}
|
|
1347
|
-
function warnIfCodexConcurrencyExceeded(roleAdapters, logger11) {
|
|
1348
|
-
const codexBound = [...roleAdapters.values()].filter(
|
|
1349
|
-
(a) => a.name === "codex"
|
|
1350
|
-
).length;
|
|
1351
|
-
const warning = checkCodexConcurrency(codexBound);
|
|
1352
|
-
if (warning !== null) {
|
|
1353
|
-
logger11.warn("Codex concurrency limit may be exceeded", { detail: warning });
|
|
1354
|
-
}
|
|
1355
|
-
}
|
|
1356
1405
|
function assignUniformAdapter(roles, adapter) {
|
|
1357
1406
|
const adapters = /* @__PURE__ */ new Map();
|
|
1358
1407
|
for (const role of roles) adapters.set(role, adapter);
|
|
@@ -5032,6 +5081,46 @@ function createPersistentCorrelationTracker(config) {
|
|
|
5032
5081
|
// src/mcp/tools/consensus-vote-types.ts
|
|
5033
5082
|
import { z as z7 } from "zod";
|
|
5034
5083
|
|
|
5084
|
+
// src/cli/vote-diversity.ts
|
|
5085
|
+
function answeringSeats(votes) {
|
|
5086
|
+
return votes.filter((v) => v.source === "llm");
|
|
5087
|
+
}
|
|
5088
|
+
function resolvedModel(v) {
|
|
5089
|
+
return v.model === void 0 || v.model === "" || v.model === UNRESOLVED_MODEL_ID ? void 0 : v.model;
|
|
5090
|
+
}
|
|
5091
|
+
function seatFallbacks(votes) {
|
|
5092
|
+
const out = [];
|
|
5093
|
+
for (const v of answeringSeats(votes)) {
|
|
5094
|
+
if (v.fallback === void 0) continue;
|
|
5095
|
+
out.push({
|
|
5096
|
+
role: v.role,
|
|
5097
|
+
fallback: v.fallback,
|
|
5098
|
+
toCli: v.cli === void 0 ? "?" : bareCliName(v.cli),
|
|
5099
|
+
toModel: resolvedModel(v)
|
|
5100
|
+
});
|
|
5101
|
+
}
|
|
5102
|
+
return out;
|
|
5103
|
+
}
|
|
5104
|
+
function panelDiversityOf(votes) {
|
|
5105
|
+
const models = answeringSeats(votes).map(resolvedModel).filter((m) => m !== void 0);
|
|
5106
|
+
return {
|
|
5107
|
+
distinctModels: countDistinctModels(models),
|
|
5108
|
+
fallbacks: seatFallbacks(votes).length
|
|
5109
|
+
};
|
|
5110
|
+
}
|
|
5111
|
+
var MIN_PANEL_FOR_DIVERSITY_WARNING = 3;
|
|
5112
|
+
function singleModelPanelWarning(votes) {
|
|
5113
|
+
if (votes.length < MIN_PANEL_FOR_DIVERSITY_WARNING) return void 0;
|
|
5114
|
+
const answered = answeringSeats(votes);
|
|
5115
|
+
const models = answered.map(resolvedModel);
|
|
5116
|
+
const model = models[0];
|
|
5117
|
+
if (model === void 0 || models.includes(void 0)) return void 0;
|
|
5118
|
+
if (panelDiversityOf(votes).distinctModels !== 1) return void 0;
|
|
5119
|
+
const silent = votes.length - answered.length;
|
|
5120
|
+
const missing = silent > 0 ? ` (${String(silent)} did not answer)` : "";
|
|
5121
|
+
return `All ${String(answered.length)} seats answered on ${model}${missing}; independence is weaker than assigned.`;
|
|
5122
|
+
}
|
|
5123
|
+
|
|
5035
5124
|
// src/mcp/tools/consensus-vote-option-detection.ts
|
|
5036
5125
|
var MULTI_OPTION_PATTERNS = Object.freeze([
|
|
5037
5126
|
// `Option A` and `OPTION A`, but NOT `option a` — the lowercase form appears
|
|
@@ -5183,7 +5272,9 @@ function toAgentVoteSummary(result) {
|
|
|
5183
5272
|
// Present only when true, so a clean panel's response is unchanged.
|
|
5184
5273
|
...result.retried === true ? { retried: true } : {},
|
|
5185
5274
|
// #6094: same rule for a seat that could not read the artifact.
|
|
5186
|
-
...result.source === "unverifiable" ? { unverifiable: true } : {}
|
|
5275
|
+
...result.source === "unverifiable" ? { unverifiable: true } : {},
|
|
5276
|
+
// #6115: and for a seat that answered elsewhere.
|
|
5277
|
+
...result.fallback !== void 0 ? { fallback: result.fallback } : {}
|
|
5187
5278
|
};
|
|
5188
5279
|
}
|
|
5189
5280
|
function mapOutcomeToDecision(outcome) {
|
|
@@ -5339,6 +5430,8 @@ function buildResponse(input, result, costSummary, voteRecord) {
|
|
|
5339
5430
|
durationMs: result.totalTimeMs,
|
|
5340
5431
|
simulateVotes: result.simulateVotes,
|
|
5341
5432
|
project: disclosedProject(input, result),
|
|
5433
|
+
// #6115: always present — a panel nobody answered is explicit zeros.
|
|
5434
|
+
panelDiversity: panelDiversityOf(result.votes),
|
|
5342
5435
|
// #3991: surface the authentic-vote-record persistence outcome so a skipped
|
|
5343
5436
|
// or failed persist is visible to the MCP caller (was WARN-only).
|
|
5344
5437
|
voteRecordPersisted: voteRecord?.persisted ?? false
|
|
@@ -5378,6 +5471,7 @@ function applyOptionalResponseFields(response, input, result, errorCount, costSu
|
|
|
5378
5471
|
response,
|
|
5379
5472
|
unverifiableSeatsWarning(response.voteCounts.unverifiable, result.votes.length)
|
|
5380
5473
|
);
|
|
5474
|
+
appendPanelWarning(response, singleModelPanelWarning(result.votes));
|
|
5381
5475
|
const engaged = result.votes.length - errorCount;
|
|
5382
5476
|
const undeclared = checkUndeclaredOptions(
|
|
5383
5477
|
input.proposal,
|
|
@@ -6281,6 +6375,8 @@ function votesToCostInputs(votes) {
|
|
|
6281
6375
|
const input = {
|
|
6282
6376
|
role: v.role,
|
|
6283
6377
|
model: v.model,
|
|
6378
|
+
// #6115: the assignment beside the model that answered.
|
|
6379
|
+
...v.assignedCli !== void 0 ? { assignedCli: v.assignedCli } : {},
|
|
6284
6380
|
...reportedTokenFields(v),
|
|
6285
6381
|
...detail?.priced === true ? { costUsd: detail.costUsd } : {},
|
|
6286
6382
|
// #4406 — state what kind of rate the cost rests on, but only when we
|
|
@@ -7690,7 +7786,7 @@ function logPartialProposal(bounded, log) {
|
|
|
7690
7786
|
}
|
|
7691
7787
|
async function runContrarianCheck(proposal, log) {
|
|
7692
7788
|
try {
|
|
7693
|
-
const { executeExpert } = await import("./expert-bridge-
|
|
7789
|
+
const { executeExpert } = await import("./expert-bridge-5WFR7CU7.js");
|
|
7694
7790
|
const bounded = boundArtifactForReview(proposal, CONTRARIAN_PROPOSAL_BUDGET, "proposal");
|
|
7695
7791
|
logPartialProposal(bounded, log);
|
|
7696
7792
|
const result = await executeExpert("architecture", buildContrarianPrompt(bounded));
|
|
@@ -8134,6 +8230,12 @@ var CONSENSUS_VOTE_OUTPUT_SCHEMA = {
|
|
|
8134
8230
|
error: z12.boolean(),
|
|
8135
8231
|
/** #6094: present only when the seat could not read the artifact. */
|
|
8136
8232
|
unverifiable: z12.literal(true).optional(),
|
|
8233
|
+
/** #6115: present only when the seat answered elsewhere than assigned. */
|
|
8234
|
+
fallback: z12.object({
|
|
8235
|
+
fromCli: z12.string().max(100),
|
|
8236
|
+
fromModel: z12.string().max(100).optional(),
|
|
8237
|
+
reason: z12.enum(["rate-limit", "capacity", "auth", "timeout", "sandbox", "unknown"])
|
|
8238
|
+
}).optional(),
|
|
8137
8239
|
modelUsed: z12.string().max(100).optional(),
|
|
8138
8240
|
rejectionCategories: z12.array(
|
|
8139
8241
|
z12.enum([
|
|
@@ -8183,6 +8285,13 @@ var CONSENSUS_VOTE_OUTPUT_SCHEMA = {
|
|
|
8183
8285
|
// omitted from this schema until #4032 — its absence made a strict MCP client
|
|
8184
8286
|
// reject any degraded-panel vote (`-32602 additional properties`).
|
|
8185
8287
|
panelWarning: z12.string().optional(),
|
|
8288
|
+
// #6115: distinct answering models and seats that answered elsewhere than
|
|
8289
|
+
// assigned. Always on the response (explicit zeros); optional here only
|
|
8290
|
+
// because the async `pending` envelope shares this schema.
|
|
8291
|
+
panelDiversity: z12.object({
|
|
8292
|
+
distinctModels: z12.number().int().nonnegative(),
|
|
8293
|
+
fallbacks: z12.number().int().nonnegative()
|
|
8294
|
+
}).optional(),
|
|
8186
8295
|
// #3855: per-decision cost rollup. Same omission as panelWarning (#4032) — it
|
|
8187
8296
|
// is present on the response whenever cost recording succeeds (common in `api`
|
|
8188
8297
|
// billing mode). Shared schema lives with the type (single source of truth).
|
|
@@ -8307,6 +8416,8 @@ export {
|
|
|
8307
8416
|
createWeightedVoting,
|
|
8308
8417
|
CorrelationTracker,
|
|
8309
8418
|
createCorrelationTracker,
|
|
8419
|
+
seatFallbacks,
|
|
8420
|
+
panelDiversityOf,
|
|
8310
8421
|
VotingStrategySchema,
|
|
8311
8422
|
ErrorPolicySchema,
|
|
8312
8423
|
VoteThresholdSchema,
|
|
@@ -8330,4 +8441,4 @@ export {
|
|
|
8330
8441
|
CONSENSUS_VOTE_TOOL_SCHEMA,
|
|
8331
8442
|
registerConsensusVoteTool
|
|
8332
8443
|
};
|
|
8333
|
-
//# sourceMappingURL=chunk-
|
|
8444
|
+
//# sourceMappingURL=chunk-3BTD6HDP.js.map
|