nexus-agents 2.80.0 → 2.80.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.
Files changed (132) hide show
  1. package/dist/{child-mcp-config-SM5I7USN.js → child-mcp-config-UG4CH654.js} +3 -3
  2. package/dist/{chunk-EVZ7YR7H.js → chunk-2ZRTLW2G.js} +3 -3
  3. package/dist/{chunk-VS4KB3AX.js → chunk-376MBRLD.js} +8 -8
  4. package/dist/{chunk-6CJIKX6I.js → chunk-3QRO77LO.js} +44 -16
  5. package/dist/{chunk-6CJIKX6I.js.map → chunk-3QRO77LO.js.map} +1 -1
  6. package/dist/{chunk-YMT6H2HQ.js → chunk-4MHE5UVO.js} +10 -6
  7. package/dist/{chunk-YMT6H2HQ.js.map → chunk-4MHE5UVO.js.map} +1 -1
  8. package/dist/{chunk-ZU2Q3DWE.js → chunk-5FUVEIJC.js} +100 -7
  9. package/dist/chunk-5FUVEIJC.js.map +1 -0
  10. package/dist/{chunk-EKRMWVAH.js → chunk-5SBD55T7.js} +4 -4
  11. package/dist/{chunk-UGXR4PAY.js → chunk-7BSVRW2O.js} +5 -5
  12. package/dist/{chunk-CTSESEFA.js → chunk-BQ55PBN4.js} +2 -2
  13. package/dist/{chunk-SHVGZK4A.js → chunk-C3BOZZQC.js} +3 -3
  14. package/dist/{chunk-AYZ6P7CK.js → chunk-FBW6XKZJ.js} +2 -2
  15. package/dist/{chunk-J5XEJHIQ.js → chunk-FQKQUJBU.js} +3 -3
  16. package/dist/{chunk-JLWKHYIU.js → chunk-GHWTMPPL.js} +2 -2
  17. package/dist/{chunk-FJHZW7CR.js → chunk-H4XSKDI6.js} +2 -2
  18. package/dist/{chunk-BSIGP5XF.js → chunk-HDFUSBU3.js} +2 -2
  19. package/dist/{chunk-UVALD724.js → chunk-HQR27JGL.js} +2 -2
  20. package/dist/{chunk-FAJAWO42.js → chunk-HXXRFTKP.js} +3 -3
  21. package/dist/{chunk-YGKPWUJ6.js → chunk-HYNFZQU4.js} +2 -2
  22. package/dist/{chunk-JXDDSNEK.js → chunk-JECCDZ2S.js} +2 -2
  23. package/dist/{chunk-OO6MTUDS.js → chunk-KN7JWET4.js} +3 -3
  24. package/dist/{chunk-2DBPZQLO.js → chunk-LUVQUKW5.js} +2 -2
  25. package/dist/{chunk-QVHXEQFM.js → chunk-OO662XRQ.js} +3 -3
  26. package/dist/{chunk-UP2VWCW5.js → chunk-PR4QN5HX.js} +12 -7
  27. package/dist/{chunk-GNRANMQ3.js → chunk-RCNNN4E2.js} +947 -880
  28. package/dist/chunk-RCNNN4E2.js.map +1 -0
  29. package/dist/{chunk-HBKZ2DJK.js → chunk-RCWWUZHA.js} +2 -2
  30. package/dist/{chunk-SJUSQGKH.js → chunk-RFUBLOZQ.js} +7 -7
  31. package/dist/{chunk-RIUUFBX4.js → chunk-TE26NHNW.js} +2 -2
  32. package/dist/{chunk-Q2U6SFN2.js → chunk-TLE2YE6G.js} +2 -2
  33. package/dist/{chunk-4XGKCVJL.js → chunk-VQBVL3UD.js} +2 -2
  34. package/dist/{cli-circuit-breaker-JGX54DAD.js → cli-circuit-breaker-MAN2V7DA.js} +5 -5
  35. package/dist/cli.js +92 -83
  36. package/dist/cli.js.map +1 -1
  37. package/dist/{codebase-search-CZUA37RU.js → codebase-search-PIBRTGBE.js} +2 -2
  38. package/dist/{composite-router-UYFYSMBT.js → composite-router-YCIEYOZC.js} +3 -3
  39. package/dist/{consensus-vote-BZ6JSN67.js → consensus-vote-TGTGZSPS.js} +12 -12
  40. package/dist/{context-retriever-G23VVJ5S.js → context-retriever-FKJKKPAA.js} +6 -6
  41. package/dist/dist-APHOQ26Z.js +45959 -0
  42. package/dist/dist-APHOQ26Z.js.map +1 -0
  43. package/dist/{dist-NIXVXYIH.js → dist-OFXI4GYH.js} +2 -2
  44. package/dist/{doctor-deep-OF2LXZ6A.js → doctor-deep-2KT4LZA6.js} +4 -4
  45. package/dist/expert-bridge-6NA7MK7T.js +11 -0
  46. package/dist/{expert-config-HN7U7X2K.js → expert-config-OIIUMJFB.js} +2 -2
  47. package/dist/factory-IIPDY7QB.js +14 -0
  48. package/dist/{factory-I54TX7OY.js → factory-VXHVQXKR.js} +5 -5
  49. package/dist/index.d.ts +68 -5
  50. package/dist/index.js +50 -31
  51. package/dist/index.js.map +1 -1
  52. package/dist/{init-opencode-FE7HVWQL.js → init-opencode-26YCTSR4.js} +6 -6
  53. package/dist/issue-triage-NGWFHIKY.js +15 -0
  54. package/dist/{learning-persistence-TGOBRUUU.js → learning-persistence-Q63HZ2EB.js} +2 -2
  55. package/dist/{outcome-store-adapter-QRFJJIKB.js → outcome-store-adapter-D3UDQFNQ.js} +2 -2
  56. package/dist/{pr-reviewer-helpers-L4L324FQ.js → pr-reviewer-helpers-WYPUYQ2U.js} +2 -2
  57. package/dist/{registry-command-NZLX7ZFV.js → registry-command-AKJBYP5N.js} +3 -3
  58. package/dist/{repo-analyze-GBQT4LAK.js → repo-analyze-D2OY2QSR.js} +2 -2
  59. package/dist/{repo-security-plan-74GJWJSV.js → repo-security-plan-ZGJN6QRW.js} +4 -4
  60. package/dist/{research-helpers-synthesize-LFPEXRIV.js → research-helpers-synthesize-ZWBBFT2O.js} +4 -4
  61. package/dist/{routing-memory-Y2LSEQVS.js → routing-memory-Y5UBVQGM.js} +3 -3
  62. package/dist/{session-memory-RCNQJDJR.js → session-memory-OOBM2GQ7.js} +4 -4
  63. package/dist/{setup-command-ZPLPOJF2.js → setup-command-VJLR47CI.js} +11 -11
  64. package/dist/setup-config-F7NK2KVC.js +10 -0
  65. package/dist/{setup-custom-api-XTJ6YZM6.js → setup-custom-api-53SYDF4L.js} +5 -5
  66. package/dist/{shared-memory-AEO2HJLC.js → shared-memory-CM6T2MYE.js} +2 -2
  67. package/dist/{symbol-extractor-UEBANFSN.js → symbol-extractor-WYXPJH65.js} +2 -2
  68. package/dist/{tool-memory-COZK6SR7.js → tool-memory-RZ7NJCPV.js} +5 -5
  69. package/dist/{weather-report-O4XOYGPK.js → weather-report-VOSP7KKV.js} +3 -3
  70. package/package.json +16 -16
  71. package/dist/chunk-GNRANMQ3.js.map +0 -1
  72. package/dist/chunk-ZU2Q3DWE.js.map +0 -1
  73. package/dist/dist-RLMRWMYO.js +0 -49531
  74. package/dist/dist-RLMRWMYO.js.map +0 -1
  75. package/dist/expert-bridge-6ZLD2NWD.js +0 -11
  76. package/dist/factory-UHDCLEUE.js +0 -14
  77. package/dist/issue-triage-7NR5NQUY.js +0 -15
  78. package/dist/setup-config-F7VRWXY3.js +0 -10
  79. /package/dist/{child-mcp-config-SM5I7USN.js.map → child-mcp-config-UG4CH654.js.map} +0 -0
  80. /package/dist/{chunk-EVZ7YR7H.js.map → chunk-2ZRTLW2G.js.map} +0 -0
  81. /package/dist/{chunk-VS4KB3AX.js.map → chunk-376MBRLD.js.map} +0 -0
  82. /package/dist/{chunk-EKRMWVAH.js.map → chunk-5SBD55T7.js.map} +0 -0
  83. /package/dist/{chunk-UGXR4PAY.js.map → chunk-7BSVRW2O.js.map} +0 -0
  84. /package/dist/{chunk-CTSESEFA.js.map → chunk-BQ55PBN4.js.map} +0 -0
  85. /package/dist/{chunk-SHVGZK4A.js.map → chunk-C3BOZZQC.js.map} +0 -0
  86. /package/dist/{chunk-AYZ6P7CK.js.map → chunk-FBW6XKZJ.js.map} +0 -0
  87. /package/dist/{chunk-J5XEJHIQ.js.map → chunk-FQKQUJBU.js.map} +0 -0
  88. /package/dist/{chunk-JLWKHYIU.js.map → chunk-GHWTMPPL.js.map} +0 -0
  89. /package/dist/{chunk-FJHZW7CR.js.map → chunk-H4XSKDI6.js.map} +0 -0
  90. /package/dist/{chunk-BSIGP5XF.js.map → chunk-HDFUSBU3.js.map} +0 -0
  91. /package/dist/{chunk-UVALD724.js.map → chunk-HQR27JGL.js.map} +0 -0
  92. /package/dist/{chunk-FAJAWO42.js.map → chunk-HXXRFTKP.js.map} +0 -0
  93. /package/dist/{chunk-YGKPWUJ6.js.map → chunk-HYNFZQU4.js.map} +0 -0
  94. /package/dist/{chunk-JXDDSNEK.js.map → chunk-JECCDZ2S.js.map} +0 -0
  95. /package/dist/{chunk-OO6MTUDS.js.map → chunk-KN7JWET4.js.map} +0 -0
  96. /package/dist/{chunk-2DBPZQLO.js.map → chunk-LUVQUKW5.js.map} +0 -0
  97. /package/dist/{chunk-QVHXEQFM.js.map → chunk-OO662XRQ.js.map} +0 -0
  98. /package/dist/{chunk-UP2VWCW5.js.map → chunk-PR4QN5HX.js.map} +0 -0
  99. /package/dist/{chunk-HBKZ2DJK.js.map → chunk-RCWWUZHA.js.map} +0 -0
  100. /package/dist/{chunk-SJUSQGKH.js.map → chunk-RFUBLOZQ.js.map} +0 -0
  101. /package/dist/{chunk-RIUUFBX4.js.map → chunk-TE26NHNW.js.map} +0 -0
  102. /package/dist/{chunk-Q2U6SFN2.js.map → chunk-TLE2YE6G.js.map} +0 -0
  103. /package/dist/{chunk-4XGKCVJL.js.map → chunk-VQBVL3UD.js.map} +0 -0
  104. /package/dist/{cli-circuit-breaker-JGX54DAD.js.map → cli-circuit-breaker-MAN2V7DA.js.map} +0 -0
  105. /package/dist/{codebase-search-CZUA37RU.js.map → codebase-search-PIBRTGBE.js.map} +0 -0
  106. /package/dist/{composite-router-UYFYSMBT.js.map → composite-router-YCIEYOZC.js.map} +0 -0
  107. /package/dist/{consensus-vote-BZ6JSN67.js.map → consensus-vote-TGTGZSPS.js.map} +0 -0
  108. /package/dist/{context-retriever-G23VVJ5S.js.map → context-retriever-FKJKKPAA.js.map} +0 -0
  109. /package/dist/{dist-NIXVXYIH.js.map → dist-OFXI4GYH.js.map} +0 -0
  110. /package/dist/{doctor-deep-OF2LXZ6A.js.map → doctor-deep-2KT4LZA6.js.map} +0 -0
  111. /package/dist/{expert-bridge-6ZLD2NWD.js.map → expert-bridge-6NA7MK7T.js.map} +0 -0
  112. /package/dist/{expert-config-HN7U7X2K.js.map → expert-config-OIIUMJFB.js.map} +0 -0
  113. /package/dist/{factory-I54TX7OY.js.map → factory-IIPDY7QB.js.map} +0 -0
  114. /package/dist/{factory-UHDCLEUE.js.map → factory-VXHVQXKR.js.map} +0 -0
  115. /package/dist/{init-opencode-FE7HVWQL.js.map → init-opencode-26YCTSR4.js.map} +0 -0
  116. /package/dist/{issue-triage-7NR5NQUY.js.map → issue-triage-NGWFHIKY.js.map} +0 -0
  117. /package/dist/{learning-persistence-TGOBRUUU.js.map → learning-persistence-Q63HZ2EB.js.map} +0 -0
  118. /package/dist/{outcome-store-adapter-QRFJJIKB.js.map → outcome-store-adapter-D3UDQFNQ.js.map} +0 -0
  119. /package/dist/{pr-reviewer-helpers-L4L324FQ.js.map → pr-reviewer-helpers-WYPUYQ2U.js.map} +0 -0
  120. /package/dist/{registry-command-NZLX7ZFV.js.map → registry-command-AKJBYP5N.js.map} +0 -0
  121. /package/dist/{repo-analyze-GBQT4LAK.js.map → repo-analyze-D2OY2QSR.js.map} +0 -0
  122. /package/dist/{repo-security-plan-74GJWJSV.js.map → repo-security-plan-ZGJN6QRW.js.map} +0 -0
  123. /package/dist/{research-helpers-synthesize-LFPEXRIV.js.map → research-helpers-synthesize-ZWBBFT2O.js.map} +0 -0
  124. /package/dist/{routing-memory-Y2LSEQVS.js.map → routing-memory-Y5UBVQGM.js.map} +0 -0
  125. /package/dist/{session-memory-RCNQJDJR.js.map → session-memory-OOBM2GQ7.js.map} +0 -0
  126. /package/dist/{setup-command-ZPLPOJF2.js.map → setup-command-VJLR47CI.js.map} +0 -0
  127. /package/dist/{setup-config-F7VRWXY3.js.map → setup-config-F7NK2KVC.js.map} +0 -0
  128. /package/dist/{setup-custom-api-XTJ6YZM6.js.map → setup-custom-api-53SYDF4L.js.map} +0 -0
  129. /package/dist/{shared-memory-AEO2HJLC.js.map → shared-memory-CM6T2MYE.js.map} +0 -0
  130. /package/dist/{symbol-extractor-UEBANFSN.js.map → symbol-extractor-WYXPJH65.js.map} +0 -0
  131. /package/dist/{tool-memory-COZK6SR7.js.map → tool-memory-RZ7NJCPV.js.map} +0 -0
  132. /package/dist/{weather-report-O4XOYGPK.js.map → weather-report-VOSP7KKV.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-YMT6H2HQ.js";
3
+ } from "./chunk-4MHE5UVO.js";
4
4
  import "./chunk-2JQXC3CK.js";
5
- import "./chunk-UP2VWCW5.js";
5
+ import "./chunk-PR4QN5HX.js";
6
6
 
7
7
  // src/cli-adapters/child-mcp-config.ts
8
8
  import { writeFile, mkdtemp, rm } from "fs/promises";
@@ -59,4 +59,4 @@ export {
59
59
  generateMcpConfig,
60
60
  getDefaultAllowedTools
61
61
  };
62
- //# sourceMappingURL=child-mcp-config-SM5I7USN.js.map
62
+ //# sourceMappingURL=child-mcp-config-UG4CH654.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenAIAdapter
3
- } from "./chunk-FAJAWO42.js";
3
+ } from "./chunk-HXXRFTKP.js";
4
4
  import {
5
5
  ConfigError,
6
6
  createLogger,
@@ -9,7 +9,7 @@ import {
9
9
  getTimeProvider,
10
10
  lookupInTreeCapability,
11
11
  ok
12
- } from "./chunk-YMT6H2HQ.js";
12
+ } from "./chunk-4MHE5UVO.js";
13
13
  import {
14
14
  getNexusDataDir
15
15
  } from "./chunk-2JQXC3CK.js";
@@ -307,4 +307,4 @@ export {
307
307
  discoverModels,
308
308
  buildOpenAICompatAdapters
309
309
  };
310
- //# sourceMappingURL=chunk-EVZ7YR7H.js.map
310
+ //# sourceMappingURL=chunk-2ZRTLW2G.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getCliForModelId
3
- } from "./chunk-Q2U6SFN2.js";
3
+ } from "./chunk-TLE2YE6G.js";
4
4
  import {
5
5
  MODEL_IDS,
6
6
  createLogger,
7
7
  getTimeProvider,
8
8
  isRateLimitText
9
- } from "./chunk-YMT6H2HQ.js";
9
+ } from "./chunk-4MHE5UVO.js";
10
10
 
11
11
  // src/pipeline/expert-bridge.ts
12
12
  function resolveCliFromModelString(model) {
@@ -21,7 +21,7 @@ var cachedMcpConfigPath = null;
21
21
  async function getMcpConfigPath() {
22
22
  if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
23
23
  try {
24
- const { generateMcpConfig } = await import("./child-mcp-config-SM5I7USN.js");
24
+ const { generateMcpConfig } = await import("./child-mcp-config-UG4CH654.js");
25
25
  const config = await generateMcpConfig();
26
26
  cachedMcpConfigPath = config.configPath;
27
27
  return cachedMcpConfigPath;
@@ -52,13 +52,13 @@ function adaptCompositeRouter(compositeRouter) {
52
52
  }
53
53
  async function getRouter() {
54
54
  if (cachedRouter !== null) return cachedRouter;
55
- const { createAllAdapters } = await import("./factory-I54TX7OY.js");
56
- const { createCompositeRouter } = await import("./composite-router-UYFYSMBT.js");
55
+ const { createAllAdapters } = await import("./factory-VXHVQXKR.js");
56
+ const { createCompositeRouter } = await import("./composite-router-YCIEYOZC.js");
57
57
  const adapters = createAllAdapters();
58
58
  if (adapters.size === 0) return null;
59
59
  cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
60
60
  try {
61
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-JGX54DAD.js");
61
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-MAN2V7DA.js");
62
62
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
63
63
  } catch (error) {
64
64
  const msg = error instanceof Error ? error.message : String(error);
@@ -117,7 +117,7 @@ async function dispatchWithRateLimitRetry(router, task, expertType, start) {
117
117
  async function executeExpert(expertType, prompt) {
118
118
  const start = getTimeProvider().now();
119
119
  try {
120
- const { BUILT_IN_EXPERTS } = await import("./expert-config-HN7U7X2K.js");
120
+ const { BUILT_IN_EXPERTS } = await import("./expert-config-OIIUMJFB.js");
121
121
  const config = BUILT_IN_EXPERTS[expertType];
122
122
  const fullPrompt = `${config.systemPrompt}
123
123
 
@@ -160,4 +160,4 @@ ${prompt}`;
160
160
  export {
161
161
  executeExpert
162
162
  };
163
- //# sourceMappingURL=chunk-VS4KB3AX.js.map
163
+ //# sourceMappingURL=chunk-376MBRLD.js.map
@@ -2,23 +2,23 @@ import {
2
2
  CUSTOM_API_BASE_URL_ENV,
3
3
  PROVIDER_ENV_KEYS,
4
4
  validateCustomApiBaseUrl
5
- } from "./chunk-JLWKHYIU.js";
5
+ } from "./chunk-GHWTMPPL.js";
6
6
  import {
7
7
  AdapterModelError,
8
8
  BaseAdapter,
9
9
  createStream,
10
10
  requireApiKey,
11
11
  validateApiKeyPresence
12
- } from "./chunk-YGKPWUJ6.js";
12
+ } from "./chunk-HYNFZQU4.js";
13
13
  import {
14
14
  getToolMemory
15
- } from "./chunk-OO6MTUDS.js";
15
+ } from "./chunk-KN7JWET4.js";
16
16
  import {
17
17
  getDefaultAvailableModelsCache
18
- } from "./chunk-HBKZ2DJK.js";
18
+ } from "./chunk-RCWWUZHA.js";
19
19
  import {
20
20
  CUSTOM_API_DEFAULT_MODEL
21
- } from "./chunk-BSIGP5XF.js";
21
+ } from "./chunk-HDFUSBU3.js";
22
22
  import {
23
23
  createCliAdapter,
24
24
  createCliDetectionCache,
@@ -27,7 +27,7 @@ import {
27
27
  isCliAvailable,
28
28
  sanitizeOutput,
29
29
  withTimeout
30
- } from "./chunk-ZU2Q3DWE.js";
30
+ } from "./chunk-5FUVEIJC.js";
31
31
  import {
32
32
  AgentError,
33
33
  CACHE_TIMEOUTS,
@@ -70,7 +70,7 @@ import {
70
70
  resolveCliAlias,
71
71
  resolveVoteTimeout,
72
72
  toRateLimitError
73
- } from "./chunk-YMT6H2HQ.js";
73
+ } from "./chunk-4MHE5UVO.js";
74
74
  import {
75
75
  ensureLearningDir,
76
76
  getNexusDataDir,
@@ -5283,6 +5283,13 @@ function createHigherOrderVotingStrategy(options) {
5283
5283
  }
5284
5284
 
5285
5285
  // src/consensus/strategies.ts
5286
+ function evaluateThreshold(approveCount, votingTotal, threshold, inclusive) {
5287
+ const ratio = approveCount / votingTotal;
5288
+ return {
5289
+ approved: inclusive ? ratio >= threshold : ratio > threshold,
5290
+ approvalPercentage: ratio * 100
5291
+ };
5292
+ }
5286
5293
  var BaseVotingStrategy = class {
5287
5294
  /**
5288
5295
  * Count votes by decision type.
@@ -5346,8 +5353,12 @@ var SimpleMajorityStrategy = class extends BaseVotingStrategy {
5346
5353
  reason: "No votes cast (excluding abstentions)"
5347
5354
  };
5348
5355
  }
5349
- const approvalPercentage = counts.approve / votingVotes * 100;
5350
- const approved = counts.approve / votingVotes > threshold;
5356
+ const { approved, approvalPercentage } = evaluateThreshold(
5357
+ counts.approve,
5358
+ votingVotes,
5359
+ threshold,
5360
+ false
5361
+ );
5351
5362
  return {
5352
5363
  approved,
5353
5364
  approvalPercentage,
@@ -5370,8 +5381,12 @@ var SupermajorityStrategy = class extends BaseVotingStrategy {
5370
5381
  reason: "No votes cast (excluding abstentions)"
5371
5382
  };
5372
5383
  }
5373
- const approvalPercentage = counts.approve / votingVotes * 100;
5374
- const approved = counts.approve / votingVotes >= threshold;
5384
+ const { approved, approvalPercentage } = evaluateThreshold(
5385
+ counts.approve,
5386
+ votingVotes,
5387
+ threshold,
5388
+ true
5389
+ );
5375
5390
  return {
5376
5391
  approved,
5377
5392
  approvalPercentage,
@@ -5434,8 +5449,12 @@ var ProofOfLearningStrategy = class extends BaseVotingStrategy {
5434
5449
  reason: "No weighted votes cast (excluding abstentions)"
5435
5450
  };
5436
5451
  }
5437
- const approvalPercentage = weightedCounts.approve / votingWeight * 100;
5438
- const approved = weightedCounts.approve / votingWeight > threshold;
5452
+ const { approved, approvalPercentage } = evaluateThreshold(
5453
+ weightedCounts.approve,
5454
+ votingWeight,
5455
+ threshold,
5456
+ false
5457
+ );
5439
5458
  return {
5440
5459
  approved,
5441
5460
  approvalPercentage,
@@ -5671,7 +5690,16 @@ var ConsensusEngine = class {
5671
5690
  return this.closeInternal(proposalId).then((r) => r.ok ? ok(void 0) : err(r.error));
5672
5691
  }
5673
5692
  if (this.allRequiredVotersVoted(state)) {
5674
- const expanded = await this.tryExpandQuorum(proposalId, state);
5693
+ if (state.expansionInFlight === true) {
5694
+ return Promise.resolve(ok(void 0));
5695
+ }
5696
+ state.expansionInFlight = true;
5697
+ let expanded;
5698
+ try {
5699
+ expanded = await this.tryExpandQuorum(proposalId, state);
5700
+ } finally {
5701
+ state.expansionInFlight = false;
5702
+ }
5675
5703
  if (!expanded) {
5676
5704
  return this.closeInternal(proposalId).then((r) => r.ok ? ok(void 0) : err(r.error));
5677
5705
  }
@@ -8650,7 +8678,7 @@ async function processVotesWithCascade(engineVotes, opts) {
8650
8678
  var CONTRARIAN_ESCALATION_THRESHOLD = 0.8;
8651
8679
  async function runContrarianCheck(proposal, log) {
8652
8680
  try {
8653
- const { executeExpert } = await import("./expert-bridge-6ZLD2NWD.js");
8681
+ const { executeExpert } = await import("./expert-bridge-6NA7MK7T.js");
8654
8682
  const prompt = [
8655
8683
  "You are a contrarian analyst. Your job is to find reasons this proposal should be REJECTED.",
8656
8684
  "Look for: YAGNI (not needed), MISALIGNED (wrong tech/architecture), SECURITY_RISK, SCOPE_CREEP.",
@@ -9067,4 +9095,4 @@ export {
9067
9095
  CONSENSUS_VOTE_OUTPUT_SCHEMA,
9068
9096
  registerConsensusVoteTool
9069
9097
  };
9070
- //# sourceMappingURL=chunk-6CJIKX6I.js.map
9098
+ //# sourceMappingURL=chunk-3QRO77LO.js.map