nexus-agents 2.93.0 → 2.94.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.
Files changed (117) hide show
  1. package/dist/{child-mcp-config-WNISXFYD.js → child-mcp-config-PPFHJZSO.js} +2 -2
  2. package/dist/{chunk-RTUZSR4R.js → chunk-24WC4XO2.js} +2 -2
  3. package/dist/{chunk-XVY3I7JT.js → chunk-2YMRRZRM.js} +9 -12
  4. package/dist/chunk-2YMRRZRM.js.map +1 -0
  5. package/dist/{chunk-4A4WPM75.js → chunk-43UDRX3N.js} +8 -10
  6. package/dist/{chunk-4A4WPM75.js.map → chunk-43UDRX3N.js.map} +1 -1
  7. package/dist/{chunk-BHA6V7GK.js → chunk-4QESFYGV.js} +4 -4
  8. package/dist/{chunk-AZP66FIA.js → chunk-5B4VLSMP.js} +3 -3
  9. package/dist/{chunk-VSG6RSE6.js → chunk-5ZB3MTA7.js} +3 -3
  10. package/dist/{chunk-FTCU55O6.js → chunk-63OGXDHS.js} +4 -4
  11. package/dist/{chunk-G5IDRWWI.js → chunk-76535ZNP.js} +4 -4
  12. package/dist/{chunk-SHSKW5ML.js → chunk-77JUKFTG.js} +7 -7
  13. package/dist/{chunk-ZYHHDPFW.js → chunk-ADRTAUJA.js} +4 -4
  14. package/dist/{chunk-DTFMYM3V.js → chunk-EB43BGAR.js} +2 -2
  15. package/dist/{chunk-T73G67GT.js → chunk-EDPDH5YT.js} +3 -3
  16. package/dist/{chunk-CPH6LKXO.js → chunk-EJR6U67L.js} +2 -2
  17. package/dist/{chunk-ULBKFMVO.js → chunk-FUGPKYEJ.js} +2 -2
  18. package/dist/{chunk-ZOAU7RE4.js → chunk-G5EBHQ2L.js} +4 -6
  19. package/dist/{chunk-ZOAU7RE4.js.map → chunk-G5EBHQ2L.js.map} +1 -1
  20. package/dist/{chunk-SMGH2B3A.js → chunk-GMZDRTVJ.js} +20 -3
  21. package/dist/chunk-GMZDRTVJ.js.map +1 -0
  22. package/dist/{chunk-57OH2O2U.js → chunk-KSJPDQSG.js} +2 -2
  23. package/dist/{chunk-JEBWSHSU.js → chunk-L7I55FAN.js} +2 -2
  24. package/dist/{chunk-JCETWDU7.js → chunk-LCLVSNST.js} +2 -2
  25. package/dist/{chunk-K7VGX37L.js → chunk-OKGHHCS5.js} +3 -3
  26. package/dist/{chunk-WU3SUA35.js → chunk-OSSGG7KW.js} +2 -2
  27. package/dist/{chunk-HKISF2E7.js → chunk-OT6V5ROA.js} +225 -8
  28. package/dist/chunk-OT6V5ROA.js.map +1 -0
  29. package/dist/{chunk-BNHBZRU7.js → chunk-Q3NUA7CW.js} +3 -3
  30. package/dist/{chunk-E3QWWP67.js → chunk-R2NKJPUX.js} +2 -2
  31. package/dist/{chunk-2T4NV6QT.js → chunk-ROAANOOB.js} +2 -2
  32. package/dist/{chunk-LJMO5P6O.js → chunk-TNBWHOPY.js} +23 -13
  33. package/dist/chunk-TNBWHOPY.js.map +1 -0
  34. package/dist/{chunk-IJ2AZZVH.js → chunk-UC3PVIN4.js} +141 -28
  35. package/dist/chunk-UC3PVIN4.js.map +1 -0
  36. package/dist/{chunk-SORBJPRA.js → chunk-XBPFVWA2.js} +2 -2
  37. package/dist/{chunk-2IBJC2EP.js → chunk-YDXGYKZJ.js} +2 -2
  38. package/dist/{chunk-5BTRDVWC.js → chunk-ZY2EMD72.js} +5 -5
  39. package/dist/{cli-circuit-breaker-6E4E2IU7.js → cli-circuit-breaker-BAERQZ3H.js} +4 -4
  40. package/dist/cli.js +68 -42
  41. package/dist/cli.js.map +1 -1
  42. package/dist/{composite-router-MQOPXLVV.js → composite-router-EONKFRDD.js} +2 -2
  43. package/dist/{consensus-vote-ZRADOLXH.js → consensus-vote-TO5575P3.js} +12 -13
  44. package/dist/{context-retriever-TZGIETJO.js → context-retriever-JM564MOV.js} +6 -6
  45. package/dist/{doctor-deep-OU2WC55V.js → doctor-deep-VFBQ7TY4.js} +3 -3
  46. package/dist/{expert-bridge-WP5ZWXFY.js → expert-bridge-OXME7FES.js} +4 -4
  47. package/dist/{factory-RJTRVII5.js → factory-FVZLVIYH.js} +5 -5
  48. package/dist/{factory-2TN2VZTR.js → factory-MDT5CFA5.js} +5 -5
  49. package/dist/index.d.ts +215 -207
  50. package/dist/index.js +26 -27
  51. package/dist/index.js.map +1 -1
  52. package/dist/{init-opencode-AYMNMWU7.js → init-opencode-Y6XKR6WS.js} +5 -5
  53. package/dist/{issue-triage-QIVZN3PJ.js → issue-triage-2XVD4JQ7.js} +5 -5
  54. package/dist/{pr-reviewer-helpers-P24OBKVM.js → pr-reviewer-helpers-JLWEQIN6.js} +4 -4
  55. package/dist/{registry-command-KWWOKJ5C.js → registry-command-FYVOMCBG.js} +2 -2
  56. package/dist/{repo-security-plan-KZNEXDCI.js → repo-security-plan-JRDHWI2R.js} +3 -3
  57. package/dist/{research-helpers-synthesize-DH5PPX7A.js → research-helpers-synthesize-F7L7M7FJ.js} +3 -4
  58. package/dist/{routing-memory-AGHJQTRH.js → routing-memory-JAV2ICXR.js} +2 -2
  59. package/dist/{session-memory-O24IVZAW.js → session-memory-2XAGY3PX.js} +3 -3
  60. package/dist/{setup-command-NBXZ4NGV.js → setup-command-6WVEOE4Q.js} +11 -12
  61. package/dist/{setup-config-Y4JA5QWO.js → setup-config-KUZU2GFI.js} +3 -3
  62. package/dist/{setup-custom-api-UNX4OJEX.js → setup-custom-api-3M7CU3TF.js} +4 -5
  63. package/dist/{setup-custom-api-UNX4OJEX.js.map → setup-custom-api-3M7CU3TF.js.map} +1 -1
  64. package/dist/{tool-memory-UEQNXIGC.js → tool-memory-YWX4FTIQ.js} +5 -5
  65. package/dist/{weather-report-S5YXRY7G.js → weather-report-ZZM5EU7N.js} +2 -2
  66. package/package.json +1 -1
  67. package/dist/chunk-HKISF2E7.js.map +0 -1
  68. package/dist/chunk-IJ2AZZVH.js.map +0 -1
  69. package/dist/chunk-LJMO5P6O.js.map +0 -1
  70. package/dist/chunk-NESW2TTD.js +0 -134
  71. package/dist/chunk-NESW2TTD.js.map +0 -1
  72. package/dist/chunk-SMGH2B3A.js.map +0 -1
  73. package/dist/chunk-XVY3I7JT.js.map +0 -1
  74. /package/dist/{child-mcp-config-WNISXFYD.js.map → child-mcp-config-PPFHJZSO.js.map} +0 -0
  75. /package/dist/{chunk-RTUZSR4R.js.map → chunk-24WC4XO2.js.map} +0 -0
  76. /package/dist/{chunk-BHA6V7GK.js.map → chunk-4QESFYGV.js.map} +0 -0
  77. /package/dist/{chunk-AZP66FIA.js.map → chunk-5B4VLSMP.js.map} +0 -0
  78. /package/dist/{chunk-VSG6RSE6.js.map → chunk-5ZB3MTA7.js.map} +0 -0
  79. /package/dist/{chunk-FTCU55O6.js.map → chunk-63OGXDHS.js.map} +0 -0
  80. /package/dist/{chunk-G5IDRWWI.js.map → chunk-76535ZNP.js.map} +0 -0
  81. /package/dist/{chunk-SHSKW5ML.js.map → chunk-77JUKFTG.js.map} +0 -0
  82. /package/dist/{chunk-ZYHHDPFW.js.map → chunk-ADRTAUJA.js.map} +0 -0
  83. /package/dist/{chunk-DTFMYM3V.js.map → chunk-EB43BGAR.js.map} +0 -0
  84. /package/dist/{chunk-T73G67GT.js.map → chunk-EDPDH5YT.js.map} +0 -0
  85. /package/dist/{chunk-CPH6LKXO.js.map → chunk-EJR6U67L.js.map} +0 -0
  86. /package/dist/{chunk-ULBKFMVO.js.map → chunk-FUGPKYEJ.js.map} +0 -0
  87. /package/dist/{chunk-57OH2O2U.js.map → chunk-KSJPDQSG.js.map} +0 -0
  88. /package/dist/{chunk-JEBWSHSU.js.map → chunk-L7I55FAN.js.map} +0 -0
  89. /package/dist/{chunk-JCETWDU7.js.map → chunk-LCLVSNST.js.map} +0 -0
  90. /package/dist/{chunk-K7VGX37L.js.map → chunk-OKGHHCS5.js.map} +0 -0
  91. /package/dist/{chunk-WU3SUA35.js.map → chunk-OSSGG7KW.js.map} +0 -0
  92. /package/dist/{chunk-BNHBZRU7.js.map → chunk-Q3NUA7CW.js.map} +0 -0
  93. /package/dist/{chunk-E3QWWP67.js.map → chunk-R2NKJPUX.js.map} +0 -0
  94. /package/dist/{chunk-2T4NV6QT.js.map → chunk-ROAANOOB.js.map} +0 -0
  95. /package/dist/{chunk-SORBJPRA.js.map → chunk-XBPFVWA2.js.map} +0 -0
  96. /package/dist/{chunk-2IBJC2EP.js.map → chunk-YDXGYKZJ.js.map} +0 -0
  97. /package/dist/{chunk-5BTRDVWC.js.map → chunk-ZY2EMD72.js.map} +0 -0
  98. /package/dist/{cli-circuit-breaker-6E4E2IU7.js.map → cli-circuit-breaker-BAERQZ3H.js.map} +0 -0
  99. /package/dist/{composite-router-MQOPXLVV.js.map → composite-router-EONKFRDD.js.map} +0 -0
  100. /package/dist/{consensus-vote-ZRADOLXH.js.map → consensus-vote-TO5575P3.js.map} +0 -0
  101. /package/dist/{context-retriever-TZGIETJO.js.map → context-retriever-JM564MOV.js.map} +0 -0
  102. /package/dist/{doctor-deep-OU2WC55V.js.map → doctor-deep-VFBQ7TY4.js.map} +0 -0
  103. /package/dist/{expert-bridge-WP5ZWXFY.js.map → expert-bridge-OXME7FES.js.map} +0 -0
  104. /package/dist/{factory-2TN2VZTR.js.map → factory-FVZLVIYH.js.map} +0 -0
  105. /package/dist/{factory-RJTRVII5.js.map → factory-MDT5CFA5.js.map} +0 -0
  106. /package/dist/{init-opencode-AYMNMWU7.js.map → init-opencode-Y6XKR6WS.js.map} +0 -0
  107. /package/dist/{issue-triage-QIVZN3PJ.js.map → issue-triage-2XVD4JQ7.js.map} +0 -0
  108. /package/dist/{pr-reviewer-helpers-P24OBKVM.js.map → pr-reviewer-helpers-JLWEQIN6.js.map} +0 -0
  109. /package/dist/{registry-command-KWWOKJ5C.js.map → registry-command-FYVOMCBG.js.map} +0 -0
  110. /package/dist/{repo-security-plan-KZNEXDCI.js.map → repo-security-plan-JRDHWI2R.js.map} +0 -0
  111. /package/dist/{research-helpers-synthesize-DH5PPX7A.js.map → research-helpers-synthesize-F7L7M7FJ.js.map} +0 -0
  112. /package/dist/{routing-memory-AGHJQTRH.js.map → routing-memory-JAV2ICXR.js.map} +0 -0
  113. /package/dist/{session-memory-O24IVZAW.js.map → session-memory-2XAGY3PX.js.map} +0 -0
  114. /package/dist/{setup-command-NBXZ4NGV.js.map → setup-command-6WVEOE4Q.js.map} +0 -0
  115. /package/dist/{setup-config-Y4JA5QWO.js.map → setup-config-KUZU2GFI.js.map} +0 -0
  116. /package/dist/{tool-memory-UEQNXIGC.js.map → tool-memory-YWX4FTIQ.js.map} +0 -0
  117. /package/dist/{weather-report-S5YXRY7G.js.map → weather-report-ZZM5EU7N.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getRandomProvider,
3
3
  getTimeProvider
4
- } from "./chunk-HKISF2E7.js";
4
+ } from "./chunk-OT6V5ROA.js";
5
5
 
6
6
  // src/utils/id-utils.ts
7
7
  import { randomUUID } from "crypto";
@@ -24,4 +24,4 @@ export {
24
24
  generateHyphenId,
25
25
  generateUUID
26
26
  };
27
- //# sourceMappingURL=chunk-SORBJPRA.js.map
27
+ //# sourceMappingURL=chunk-XBPFVWA2.js.map
@@ -2,7 +2,7 @@ import {
2
2
  ConfigError,
3
3
  err,
4
4
  ok
5
- } from "./chunk-HKISF2E7.js";
5
+ } from "./chunk-OT6V5ROA.js";
6
6
 
7
7
  // src/adapters/sdk/types.ts
8
8
  var PROVIDER_ENV_KEYS = {
@@ -117,4 +117,4 @@ export {
117
117
  CUSTOM_API_ALLOW_PRIVATE_ENV,
118
118
  validateCustomApiBaseUrl
119
119
  };
120
- //# sourceMappingURL=chunk-2IBJC2EP.js.map
120
+ //# sourceMappingURL=chunk-YDXGYKZJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runConfigInitSync
3
- } from "./chunk-2T4NV6QT.js";
3
+ } from "./chunk-ROAANOOB.js";
4
4
  import {
5
5
  VERSION,
6
6
  checkApiKeys,
@@ -8,10 +8,10 @@ import {
8
8
  checkSqlite,
9
9
  defaultConfig,
10
10
  initDataDirectories
11
- } from "./chunk-SHSKW5ML.js";
11
+ } from "./chunk-77JUKFTG.js";
12
12
  import {
13
13
  probeAllClis
14
- } from "./chunk-BHA6V7GK.js";
14
+ } from "./chunk-4QESFYGV.js";
15
15
  import {
16
16
  BUILT_IN_EXPERTS
17
17
  } from "./chunk-ZM4O442V.js";
@@ -25,7 +25,7 @@ import {
25
25
  getErrorMessage,
26
26
  getTimeProvider,
27
27
  symbols
28
- } from "./chunk-HKISF2E7.js";
28
+ } from "./chunk-OT6V5ROA.js";
29
29
  import {
30
30
  ensureGitignored,
31
31
  findRepoRoot
@@ -1987,4 +1987,4 @@ export {
1987
1987
  setupCommand,
1988
1988
  setupCommandAsync
1989
1989
  };
1990
- //# sourceMappingURL=chunk-5BTRDVWC.js.map
1990
+ //# sourceMappingURL=chunk-ZY2EMD72.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  CliCircuitBreakerIntegration,
3
3
  createCliCircuitBreakerIntegration
4
- } from "./chunk-T73G67GT.js";
5
- import "./chunk-RTUZSR4R.js";
6
- import "./chunk-HKISF2E7.js";
4
+ } from "./chunk-EDPDH5YT.js";
5
+ import "./chunk-24WC4XO2.js";
6
+ import "./chunk-OT6V5ROA.js";
7
7
  import "./chunk-CH7QIDHQ.js";
8
8
  import "./chunk-PR4QN5HX.js";
9
9
  export {
10
10
  CliCircuitBreakerIntegration,
11
11
  createCliCircuitBreakerIntegration
12
12
  };
13
- //# sourceMappingURL=cli-circuit-breaker-6E4E2IU7.js.map
13
+ //# sourceMappingURL=cli-circuit-breaker-BAERQZ3H.js.map
package/dist/cli.js CHANGED
@@ -13,19 +13,19 @@ import {
13
13
  generateSummary,
14
14
  parseFindings,
15
15
  sumFindings
16
- } from "./chunk-VSG6RSE6.js";
17
- import "./chunk-E3QWWP67.js";
16
+ } from "./chunk-5ZB3MTA7.js";
17
+ import "./chunk-R2NKJPUX.js";
18
18
  import {
19
19
  buildOpenAICompatAdapters,
20
20
  loadUsageEvents,
21
21
  readOpenAICompatEnv,
22
22
  rollupByModel
23
- } from "./chunk-AZP66FIA.js";
23
+ } from "./chunk-5B4VLSMP.js";
24
24
  import {
25
25
  setupCommandAsync,
26
26
  verifyCommand
27
- } from "./chunk-5BTRDVWC.js";
28
- import "./chunk-2T4NV6QT.js";
27
+ } from "./chunk-ZY2EMD72.js";
28
+ import "./chunk-ROAANOOB.js";
29
29
  import {
30
30
  AuthHandler,
31
31
  DEFAULT_EXPERTS,
@@ -158,25 +158,29 @@ import {
158
158
  runImprovementReview,
159
159
  saveSourcesRegistry,
160
160
  setGlobalToolRateLimiterFactory,
161
+ shutdownFailoverSignals,
161
162
  shutdownFeedbackSubscriber,
163
+ shutdownSwarmHealthSignals,
164
+ startFailoverSignals,
162
165
  startFeedbackSubscriber,
166
+ startSwarmHealthSignals,
163
167
  validateArgs,
164
168
  validateCommand,
165
169
  validateWorkflow,
166
170
  wrapInMarkdownFence
167
- } from "./chunk-IJ2AZZVH.js";
171
+ } from "./chunk-UC3PVIN4.js";
168
172
  import {
169
173
  resolveToken
170
- } from "./chunk-WU3SUA35.js";
174
+ } from "./chunk-OSSGG7KW.js";
171
175
  import {
172
176
  CATEGORY_DISPLAY_NAMES,
173
177
  DEFAULT_PR_REVIEW_CONFIG
174
178
  } from "./chunk-OK6U5N5Y.js";
175
- import "./chunk-BNHBZRU7.js";
176
- import "./chunk-T73G67GT.js";
179
+ import "./chunk-Q3NUA7CW.js";
180
+ import "./chunk-EDPDH5YT.js";
177
181
  import {
178
182
  shutdownExpertBridge
179
- } from "./chunk-XVY3I7JT.js";
183
+ } from "./chunk-2YMRRZRM.js";
180
184
  import {
181
185
  DEFAULT_VOTE_TIMEOUT_MS,
182
186
  ErrorPolicySchema,
@@ -194,34 +198,34 @@ import {
194
198
  toolSuccessStructured,
195
199
  warnIfSimulatedOutsideTests,
196
200
  wrapToolWithTimeout
197
- } from "./chunk-LJMO5P6O.js";
198
- import "./chunk-JEBWSHSU.js";
199
- import "./chunk-2IBJC2EP.js";
201
+ } from "./chunk-TNBWHOPY.js";
202
+ import "./chunk-L7I55FAN.js";
203
+ import "./chunk-YDXGYKZJ.js";
200
204
  import {
201
205
  loadPapersRegistry,
202
206
  loadTechniquesRegistry,
203
207
  savePapersRegistry,
204
208
  synthesizeResearch
205
- } from "./chunk-ZOAU7RE4.js";
209
+ } from "./chunk-G5EBHQ2L.js";
206
210
  import {
207
211
  classifyTrust,
208
212
  createFullGitHubProvider,
209
213
  evaluatePolicy,
210
214
  parsePRUrl
211
- } from "./chunk-G5IDRWWI.js";
212
- import "./chunk-CPH6LKXO.js";
215
+ } from "./chunk-76535ZNP.js";
216
+ import "./chunk-EJR6U67L.js";
213
217
  import {
214
218
  ReputationCache,
215
219
  sanitizeInput
216
- } from "./chunk-DTFMYM3V.js";
217
- import "./chunk-ULBKFMVO.js";
220
+ } from "./chunk-EB43BGAR.js";
221
+ import "./chunk-FUGPKYEJ.js";
218
222
  import "./chunk-HFOQKCD2.js";
219
223
  import "./chunk-3ACDP4E6.js";
220
- import "./chunk-K7VGX37L.js";
224
+ import "./chunk-OKGHHCS5.js";
221
225
  import {
222
226
  MemoryError,
223
227
  shutdownToolMemory
224
- } from "./chunk-FTCU55O6.js";
228
+ } from "./chunk-63OGXDHS.js";
225
229
  import {
226
230
  CustomExpertDefinitionSchema,
227
231
  DATA_SUBDIRECTORIES,
@@ -240,16 +244,13 @@ import {
240
244
  loadConfig,
241
245
  runDoctor,
242
246
  validateNexusEnv
243
- } from "./chunk-SHSKW5ML.js";
244
- import "./chunk-SMGH2B3A.js";
245
- import "./chunk-57OH2O2U.js";
247
+ } from "./chunk-77JUKFTG.js";
248
+ import "./chunk-GMZDRTVJ.js";
249
+ import "./chunk-KSJPDQSG.js";
246
250
  import {
247
251
  DEFAULTS
248
- } from "./chunk-4A4WPM75.js";
252
+ } from "./chunk-43UDRX3N.js";
249
253
  import "./chunk-NUBSJGQZ.js";
250
- import {
251
- parseBoolEnv
252
- } from "./chunk-NESW2TTD.js";
253
254
  import {
254
255
  capitalize,
255
256
  capitalizeKebab,
@@ -260,12 +261,12 @@ import {
260
261
  getAvailableClis,
261
262
  isRecord,
262
263
  probeAllClis
263
- } from "./chunk-BHA6V7GK.js";
264
- import "./chunk-RTUZSR4R.js";
265
- import "./chunk-SORBJPRA.js";
264
+ } from "./chunk-4QESFYGV.js";
265
+ import "./chunk-24WC4XO2.js";
266
+ import "./chunk-XBPFVWA2.js";
266
267
  import "./chunk-ZM4O442V.js";
267
268
  import "./chunk-PQHVC4BD.js";
268
- import "./chunk-JCETWDU7.js";
269
+ import "./chunk-LCLVSNST.js";
269
270
  import {
270
271
  API_TIMEOUTS,
271
272
  AgentCapability,
@@ -317,9 +318,11 @@ import {
317
318
  getPipelineEventBus,
318
319
  getRandomProvider,
319
320
  getTimeProvider,
321
+ getTuneAdjustmentStore,
320
322
  logger,
321
323
  lookupInTreeCapability,
322
324
  ok,
325
+ parseBoolEnv,
323
326
  parseTierOverrides,
324
327
  resetOutcomeStore,
325
328
  runWarmUp,
@@ -333,7 +336,7 @@ import {
333
336
  validateTimeout,
334
337
  writeEmptyLine,
335
338
  writeLine
336
- } from "./chunk-HKISF2E7.js";
339
+ } from "./chunk-OT6V5ROA.js";
337
340
  import {
338
341
  applyPortableMode,
339
342
  detectSandbox,
@@ -3112,7 +3115,7 @@ ${file.patch}
3112
3115
  violations: policyResult.violations
3113
3116
  });
3114
3117
  }
3115
- const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-P24OBKVM.js");
3118
+ const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-JLWEQIN6.js");
3116
3119
  const body = formatReviewComment2(result);
3117
3120
  const postResult = await provider.createReview(pr.prNumber, body, result.decision);
3118
3121
  if (!postResult.ok) {
@@ -17430,6 +17433,8 @@ function runStpaSafetyAnalysis(logger18, failOnHighSeverity) {
17430
17433
 
17431
17434
  // src/pipeline/tune-stage.ts
17432
17435
  var defaultLogger = createLogger({ component: "TuneStage" });
17436
+ var TUNE_ENFORCE_ENV = "NEXUS_TUNE_ENFORCE";
17437
+ var TUNE_ENFORCE_DEMOTION = 0.15;
17433
17438
  var TUNE_SIGNAL_TYPES = [
17434
17439
  "signal.fitness_declined",
17435
17440
  "signal.swarm_unhealthy",
@@ -17467,9 +17472,25 @@ function createTuneStage(bus, options = {}) {
17467
17472
  const action = intendedActionFor(event);
17468
17473
  if (action === void 0) return;
17469
17474
  if (enabled) {
17470
- log.warn("TuneStage enabled but bounded mutation is not implemented yet; no-op", {
17475
+ if (event.type === "signal.swarm_unhealthy") {
17476
+ const adjustment = getTuneAdjustmentStore().demote(
17477
+ event.agentId,
17478
+ TUNE_ENFORCE_DEMOTION,
17479
+ `swarm_unhealthy: ${event.reason}`
17480
+ );
17481
+ log.info("TuneStage (enforce) \u2014 applied bounded routing demotion", {
17482
+ kind: action.kind,
17483
+ signal: action.signal,
17484
+ agentId: event.agentId,
17485
+ reason: event.reason,
17486
+ multiplier: adjustment?.multiplier
17487
+ });
17488
+ return;
17489
+ }
17490
+ log.info("TuneStage (enforce) \u2014 non-routing action, shadow-only", {
17471
17491
  kind: action.kind,
17472
- signal: action.signal
17492
+ signal: action.signal,
17493
+ detail: action.detail
17473
17494
  });
17474
17495
  return;
17475
17496
  }
@@ -17486,7 +17507,8 @@ function createTuneStage(bus, options = {}) {
17486
17507
  var cachedTuneUnsubscribe = null;
17487
17508
  function startTuneStage(bus, options) {
17488
17509
  if (cachedTuneUnsubscribe !== null) return;
17489
- cachedTuneUnsubscribe = createTuneStage(bus, options);
17510
+ const enabled = options?.enabled ?? parseBoolEnv(TUNE_ENFORCE_ENV, false);
17511
+ cachedTuneUnsubscribe = createTuneStage(bus, { ...options, enabled });
17490
17512
  }
17491
17513
  function shutdownTuneStage() {
17492
17514
  if (cachedTuneUnsubscribe !== null) {
@@ -18021,6 +18043,8 @@ function initV2PipelineSubsystems(logger18) {
18021
18043
  const bridge = createEventBusBridge({ source: pipelineEventBus });
18022
18044
  startFeedbackSubscriber(pipelineEventBus, getOutcomeStore());
18023
18045
  startTuneStage(pipelineEventBus);
18046
+ startSwarmHealthSignals(getSwarmObserver(), pipelineEventBus);
18047
+ startFailoverSignals({ pipelineBus: pipelineEventBus });
18024
18048
  const policyEngine = createDefaultPolicyEngine();
18025
18049
  const v2Config = resolveV2Config();
18026
18050
  logger18.info("V2 Pipeline OS initialized", {
@@ -19346,7 +19370,7 @@ function adaptConfigToLibrary(config) {
19346
19370
  }
19347
19371
  function createBeliefPromoter() {
19348
19372
  return async (event) => {
19349
- const { getToolMemory } = await import("./tool-memory-UEQNXIGC.js");
19373
+ const { getToolMemory } = await import("./tool-memory-YWX4FTIQ.js");
19350
19374
  const tm = getToolMemory();
19351
19375
  await tm.recordBelief(
19352
19376
  `skill:${event.name}`,
@@ -19661,6 +19685,8 @@ function createShutdownCleanup(options) {
19661
19685
  await shutdownExpertBridge();
19662
19686
  shutdownFeedbackSubscriber();
19663
19687
  shutdownTuneStage();
19688
+ shutdownSwarmHealthSignals();
19689
+ shutdownFailoverSignals();
19664
19690
  const closeResult = await closeServer(server, serverLogger);
19665
19691
  if (!closeResult.ok) {
19666
19692
  throw new Error(closeResult.error.message);
@@ -20210,7 +20236,7 @@ async function handleResearchCommand(args) {
20210
20236
  }
20211
20237
  }
20212
20238
  async function handleRegistryCommand(args) {
20213
- const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-KWWOKJ5C.js");
20239
+ const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-FYVOMCBG.js");
20214
20240
  const subcommand = args.subcommand;
20215
20241
  if (!isValidRegistrySubcommand(subcommand)) {
20216
20242
  process.stdout.write(`${formatRegistryUsage()}
@@ -20258,7 +20284,7 @@ async function handleVerifyCommand(args) {
20258
20284
  async function handleDoctorCommand(args) {
20259
20285
  const exitCode = await doctorCommand({ fix: args.options.fix });
20260
20286
  if (args.options.deep) {
20261
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-OU2WC55V.js");
20287
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-VFBQ7TY4.js");
20262
20288
  const diag = runDeepDiagnostics2();
20263
20289
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
20264
20290
  }
@@ -20302,7 +20328,7 @@ async function handleInitCommand(args) {
20302
20328
  process.exit(result.success ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
20303
20329
  }
20304
20330
  async function runInitOpencodeFlow(args) {
20305
- const { runInitOpencode } = await import("./init-opencode-AYMNMWU7.js");
20331
+ const { runInitOpencode } = await import("./init-opencode-Y6XKR6WS.js");
20306
20332
  const opencodePath = args.options.opencode;
20307
20333
  if (opencodePath === void 0 || opencodePath === "") {
20308
20334
  process.stderr.write("Error: --opencode requires a path argument.\n");
@@ -20329,7 +20355,7 @@ async function runInitOpencodeFlow(args) {
20329
20355
  process.exit(EXIT_CODES.SUCCESS);
20330
20356
  }
20331
20357
  async function renderOpencodeValidate(opencodePath) {
20332
- const { runOpencodeValidate } = await import("./init-opencode-AYMNMWU7.js");
20358
+ const { runOpencodeValidate } = await import("./init-opencode-Y6XKR6WS.js");
20333
20359
  const result = await runOpencodeValidate(opencodePath);
20334
20360
  if (!result.ok) {
20335
20361
  process.stderr.write(`init --opencode --validate: ${result.reason ?? "failed"}
@@ -20369,7 +20395,7 @@ async function handleSetupCommandAsync(args) {
20369
20395
  process.exit(exitCode === 0 ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
20370
20396
  }
20371
20397
  async function runCustomApiSetup(args) {
20372
- const { configureCustomApi } = await import("./setup-custom-api-UNX4OJEX.js");
20398
+ const { configureCustomApi } = await import("./setup-custom-api-3M7CU3TF.js");
20373
20399
  const baseUrl = args.options.customApi;
20374
20400
  if (baseUrl === void 0) return EXIT_CODES.SERVER_START_FAILED;
20375
20401
  const input = {