nexus-agents 4.29.3 → 4.29.5

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 (124) hide show
  1. package/dist/{child-mcp-config-4CY57QIH.js → child-mcp-config-QOBQRH24.js} +2 -2
  2. package/dist/{chunk-DETBD53N.js → chunk-2DBVUHFA.js} +2 -2
  3. package/dist/{chunk-UBWHBW7S.js → chunk-3IM3OPZH.js} +2 -2
  4. package/dist/{chunk-B5LCD3AL.js → chunk-3RZJU5JS.js} +5 -5
  5. package/dist/{chunk-Q245FDK6.js → chunk-4ZDNZAGJ.js} +2 -2
  6. package/dist/{chunk-F3E6ZZO3.js → chunk-5RIAPSAF.js} +116 -38
  7. package/dist/chunk-5RIAPSAF.js.map +1 -0
  8. package/dist/{chunk-QUVWKVKU.js → chunk-CQHUNYJN.js} +2 -2
  9. package/dist/{chunk-45XIFAM3.js → chunk-ESNNN75Z.js} +3 -3
  10. package/dist/{chunk-NHABZOSO.js → chunk-FQUGR66Z.js} +2 -2
  11. package/dist/{chunk-LLJ65HUO.js → chunk-FWRLD7W7.js} +6 -6
  12. package/dist/{chunk-2BTGJXVN.js → chunk-GXZDUDSD.js} +2 -2
  13. package/dist/{chunk-QFO77VBC.js → chunk-GZUHLCRE.js} +2 -2
  14. package/dist/{chunk-NAL4EHFM.js → chunk-HTDLKLLP.js} +2 -2
  15. package/dist/{chunk-DDE4TLD6.js → chunk-I4M3ICTG.js} +7 -7
  16. package/dist/{chunk-OBMDRABJ.js → chunk-ISA73Z6I.js} +2 -2
  17. package/dist/{chunk-I6JRNQ6S.js → chunk-JPTB4M6V.js} +3 -3
  18. package/dist/{chunk-PSZVTY77.js → chunk-K77KZHXP.js} +2 -2
  19. package/dist/{chunk-V353Q4L7.js → chunk-KXNT76HR.js} +2 -2
  20. package/dist/{chunk-N3SKF4YT.js → chunk-KYTV2JFH.js} +4 -4
  21. package/dist/{chunk-VCM2NHH7.js → chunk-MLPECOSS.js} +5 -5
  22. package/dist/chunk-PMTH6YFL.js +7 -0
  23. package/dist/{chunk-JKLMPBSL.js → chunk-Q7GOBLAY.js} +4 -4
  24. package/dist/{chunk-N3NC2XCW.js → chunk-S4TJBGI2.js} +2 -2
  25. package/dist/{chunk-MEU6YH4G.js → chunk-S6AUSZVL.js} +9 -9
  26. package/dist/{chunk-TB3QGUDW.js → chunk-SFZ67DTA.js} +2 -2
  27. package/dist/{chunk-X4DJYX63.js → chunk-SX2K66SG.js} +2 -2
  28. package/dist/{chunk-RV57MIQU.js → chunk-ULZFVZFW.js} +2 -2
  29. package/dist/{chunk-XEGZYUPX.js → chunk-UPKYWLPL.js} +7 -7
  30. package/dist/{chunk-IED5SFCF.js → chunk-VOXVWYD4.js} +8 -8
  31. package/dist/{chunk-6Q4XUAE5.js → chunk-WJ5TFKDF.js} +10 -3
  32. package/dist/chunk-WJ5TFKDF.js.map +1 -0
  33. package/dist/{chunk-PU2NTY6U.js → chunk-WYKMINTU.js} +4 -4
  34. package/dist/{chunk-ZE7QW5Z5.js → chunk-XM7LFDFE.js} +4 -4
  35. package/dist/{chunk-2YI27D27.js → chunk-Z22LKOBY.js} +2 -2
  36. package/dist/{chunk-IFL7MZQT.js → chunk-ZRBUE6WG.js} +32 -6
  37. package/dist/{chunk-IFL7MZQT.js.map → chunk-ZRBUE6WG.js.map} +1 -1
  38. package/dist/{cli-circuit-breaker-MROWSOJ4.js → cli-circuit-breaker-PQ2FHTJA.js} +3 -3
  39. package/dist/cli.js +41 -41
  40. package/dist/{composite-router-EHXVYGO5.js → composite-router-SN7T6PM4.js} +2 -2
  41. package/dist/{consensus-vote-X7GYVWC7.js → consensus-vote-ITFU2C77.js} +17 -17
  42. package/dist/{context-retriever-3FKBPUAP.js → context-retriever-O7ULA6GX.js} +8 -8
  43. package/dist/{doctor-deep-HZR7I2MR.js → doctor-deep-FC5IBSTN.js} +3 -3
  44. package/dist/{doctor-live-MFE4Z5FD.js → doctor-live-EBBM5XGU.js} +9 -9
  45. package/dist/{expert-bridge-V2O6X3DO.js → expert-bridge-IARKL3BV.js} +4 -4
  46. package/dist/{factory-RUAHWBQX.js → factory-4EUZKQ3C.js} +5 -5
  47. package/dist/{factory-RBAYQAL2.js → factory-P2G2A5RD.js} +9 -9
  48. package/dist/{improvement-review-V3XULZA6.js → improvement-review-QJONDUXH.js} +6 -6
  49. package/dist/index.js +31 -31
  50. package/dist/{init-opencode-TCWUATHV.js → init-opencode-Y2L2ZW3Q.js} +6 -6
  51. package/dist/issue-triage-SDH7RVQ6.js +17 -0
  52. package/dist/{pr-reviewer-helpers-2ZWQ7PHT.js → pr-reviewer-helpers-RGCQ35FL.js} +4 -4
  53. package/dist/{registry-command-3EM2YUYM.js → registry-command-EMN2WD4V.js} +2 -2
  54. package/dist/{repo-security-plan-566UGL3B.js → repo-security-plan-WQCQRNPZ.js} +3 -3
  55. package/dist/{research-helpers-synthesize-33AC5GSK.js → research-helpers-synthesize-UPDIAIQH.js} +4 -4
  56. package/dist/{routing-memory-3TBYM4JY.js → routing-memory-2XTCURFY.js} +2 -2
  57. package/dist/{session-memory-KWYEIP5P.js → session-memory-6VZAC4FV.js} +3 -3
  58. package/dist/{setup-config-WC566QZ2.js → setup-config-SMI2G6UE.js} +3 -3
  59. package/dist/{setup-custom-api-HPJTWKC5.js → setup-custom-api-2AEMLGGD.js} +4 -4
  60. package/dist/setup-data-dir-IO5SZULH.js +29 -0
  61. package/dist/{tool-memory-RG6SNNZP.js → tool-memory-7BKRQ64B.js} +5 -5
  62. package/dist/{unified-registry-ZJWVR6JE.js → unified-registry-6DVJR722.js} +10 -10
  63. package/dist/{weather-report-53POQURI.js → weather-report-UUPXHSXM.js} +2 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-6Q4XUAE5.js.map +0 -1
  66. package/dist/chunk-F3E6ZZO3.js.map +0 -1
  67. package/dist/chunk-FXUZW7IY.js +0 -7
  68. package/dist/issue-triage-BOGQS5GP.js +0 -17
  69. package/dist/setup-data-dir-R26GPW7G.js +0 -29
  70. /package/dist/{child-mcp-config-4CY57QIH.js.map → child-mcp-config-QOBQRH24.js.map} +0 -0
  71. /package/dist/{chunk-DETBD53N.js.map → chunk-2DBVUHFA.js.map} +0 -0
  72. /package/dist/{chunk-UBWHBW7S.js.map → chunk-3IM3OPZH.js.map} +0 -0
  73. /package/dist/{chunk-B5LCD3AL.js.map → chunk-3RZJU5JS.js.map} +0 -0
  74. /package/dist/{chunk-Q245FDK6.js.map → chunk-4ZDNZAGJ.js.map} +0 -0
  75. /package/dist/{chunk-QUVWKVKU.js.map → chunk-CQHUNYJN.js.map} +0 -0
  76. /package/dist/{chunk-45XIFAM3.js.map → chunk-ESNNN75Z.js.map} +0 -0
  77. /package/dist/{chunk-NHABZOSO.js.map → chunk-FQUGR66Z.js.map} +0 -0
  78. /package/dist/{chunk-LLJ65HUO.js.map → chunk-FWRLD7W7.js.map} +0 -0
  79. /package/dist/{chunk-2BTGJXVN.js.map → chunk-GXZDUDSD.js.map} +0 -0
  80. /package/dist/{chunk-QFO77VBC.js.map → chunk-GZUHLCRE.js.map} +0 -0
  81. /package/dist/{chunk-NAL4EHFM.js.map → chunk-HTDLKLLP.js.map} +0 -0
  82. /package/dist/{chunk-DDE4TLD6.js.map → chunk-I4M3ICTG.js.map} +0 -0
  83. /package/dist/{chunk-OBMDRABJ.js.map → chunk-ISA73Z6I.js.map} +0 -0
  84. /package/dist/{chunk-I6JRNQ6S.js.map → chunk-JPTB4M6V.js.map} +0 -0
  85. /package/dist/{chunk-PSZVTY77.js.map → chunk-K77KZHXP.js.map} +0 -0
  86. /package/dist/{chunk-V353Q4L7.js.map → chunk-KXNT76HR.js.map} +0 -0
  87. /package/dist/{chunk-N3SKF4YT.js.map → chunk-KYTV2JFH.js.map} +0 -0
  88. /package/dist/{chunk-VCM2NHH7.js.map → chunk-MLPECOSS.js.map} +0 -0
  89. /package/dist/{chunk-FXUZW7IY.js.map → chunk-PMTH6YFL.js.map} +0 -0
  90. /package/dist/{chunk-JKLMPBSL.js.map → chunk-Q7GOBLAY.js.map} +0 -0
  91. /package/dist/{chunk-N3NC2XCW.js.map → chunk-S4TJBGI2.js.map} +0 -0
  92. /package/dist/{chunk-MEU6YH4G.js.map → chunk-S6AUSZVL.js.map} +0 -0
  93. /package/dist/{chunk-TB3QGUDW.js.map → chunk-SFZ67DTA.js.map} +0 -0
  94. /package/dist/{chunk-X4DJYX63.js.map → chunk-SX2K66SG.js.map} +0 -0
  95. /package/dist/{chunk-RV57MIQU.js.map → chunk-ULZFVZFW.js.map} +0 -0
  96. /package/dist/{chunk-XEGZYUPX.js.map → chunk-UPKYWLPL.js.map} +0 -0
  97. /package/dist/{chunk-IED5SFCF.js.map → chunk-VOXVWYD4.js.map} +0 -0
  98. /package/dist/{chunk-PU2NTY6U.js.map → chunk-WYKMINTU.js.map} +0 -0
  99. /package/dist/{chunk-ZE7QW5Z5.js.map → chunk-XM7LFDFE.js.map} +0 -0
  100. /package/dist/{chunk-2YI27D27.js.map → chunk-Z22LKOBY.js.map} +0 -0
  101. /package/dist/{cli-circuit-breaker-MROWSOJ4.js.map → cli-circuit-breaker-PQ2FHTJA.js.map} +0 -0
  102. /package/dist/{composite-router-EHXVYGO5.js.map → composite-router-SN7T6PM4.js.map} +0 -0
  103. /package/dist/{consensus-vote-X7GYVWC7.js.map → consensus-vote-ITFU2C77.js.map} +0 -0
  104. /package/dist/{context-retriever-3FKBPUAP.js.map → context-retriever-O7ULA6GX.js.map} +0 -0
  105. /package/dist/{doctor-deep-HZR7I2MR.js.map → doctor-deep-FC5IBSTN.js.map} +0 -0
  106. /package/dist/{doctor-live-MFE4Z5FD.js.map → doctor-live-EBBM5XGU.js.map} +0 -0
  107. /package/dist/{expert-bridge-V2O6X3DO.js.map → expert-bridge-IARKL3BV.js.map} +0 -0
  108. /package/dist/{factory-RBAYQAL2.js.map → factory-4EUZKQ3C.js.map} +0 -0
  109. /package/dist/{factory-RUAHWBQX.js.map → factory-P2G2A5RD.js.map} +0 -0
  110. /package/dist/{improvement-review-V3XULZA6.js.map → improvement-review-QJONDUXH.js.map} +0 -0
  111. /package/dist/{init-opencode-TCWUATHV.js.map → init-opencode-Y2L2ZW3Q.js.map} +0 -0
  112. /package/dist/{issue-triage-BOGQS5GP.js.map → issue-triage-SDH7RVQ6.js.map} +0 -0
  113. /package/dist/{pr-reviewer-helpers-2ZWQ7PHT.js.map → pr-reviewer-helpers-RGCQ35FL.js.map} +0 -0
  114. /package/dist/{registry-command-3EM2YUYM.js.map → registry-command-EMN2WD4V.js.map} +0 -0
  115. /package/dist/{repo-security-plan-566UGL3B.js.map → repo-security-plan-WQCQRNPZ.js.map} +0 -0
  116. /package/dist/{research-helpers-synthesize-33AC5GSK.js.map → research-helpers-synthesize-UPDIAIQH.js.map} +0 -0
  117. /package/dist/{routing-memory-3TBYM4JY.js.map → routing-memory-2XTCURFY.js.map} +0 -0
  118. /package/dist/{session-memory-KWYEIP5P.js.map → session-memory-6VZAC4FV.js.map} +0 -0
  119. /package/dist/{setup-config-WC566QZ2.js.map → setup-config-SMI2G6UE.js.map} +0 -0
  120. /package/dist/{setup-custom-api-HPJTWKC5.js.map → setup-custom-api-2AEMLGGD.js.map} +0 -0
  121. /package/dist/{setup-data-dir-R26GPW7G.js.map → setup-data-dir-IO5SZULH.js.map} +0 -0
  122. /package/dist/{tool-memory-RG6SNNZP.js.map → tool-memory-7BKRQ64B.js.map} +0 -0
  123. /package/dist/{unified-registry-ZJWVR6JE.js.map → unified-registry-6DVJR722.js.map} +0 -0
  124. /package/dist/{weather-report-53POQURI.js.map → weather-report-UUPXHSXM.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4OW67KT2.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-6Q4XUAE5.js";
6
+ } from "./chunk-WJ5TFKDF.js";
7
7
  import "./chunk-GBHJ37V3.js";
8
8
  import "./chunk-OGHEKPLD.js";
9
9
  import "./chunk-ZPWHCABL.js";
@@ -62,4 +62,4 @@ export {
62
62
  generateMcpConfig,
63
63
  getDefaultAllowedTools
64
64
  };
65
- //# sourceMappingURL=child-mcp-config-4CY57QIH.js.map
65
+ //# sourceMappingURL=child-mcp-config-QOBQRH24.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-6Q4XUAE5.js";
5
+ } from "./chunk-WJ5TFKDF.js";
6
6
 
7
7
  // src/cli/doctor-deep.ts
8
8
  var CLI_NAMES = ["claude", "gemini", "codex", "opencode"];
@@ -106,4 +106,4 @@ export {
106
106
  runDeepDiagnostics,
107
107
  formatDeepDiagnostics
108
108
  };
109
- //# sourceMappingURL=chunk-DETBD53N.js.map
109
+ //# sourceMappingURL=chunk-2DBVUHFA.js.map
@@ -2,7 +2,7 @@ import {
2
2
  CACHE_TIMEOUTS,
3
3
  createLogger,
4
4
  getTimeProvider
5
- } from "./chunk-6Q4XUAE5.js";
5
+ } from "./chunk-WJ5TFKDF.js";
6
6
 
7
7
  // src/security/trust-types.ts
8
8
  import { z } from "zod";
@@ -560,4 +560,4 @@ export {
560
560
  resolveReputationGatingMode,
561
561
  gateWithReputation
562
562
  };
563
- //# sourceMappingURL=chunk-UBWHBW7S.js.map
563
+ //# sourceMappingURL=chunk-3IM3OPZH.js.map
@@ -5,13 +5,13 @@ import {
5
5
  loadTechniquesRegistry,
6
6
  resolveInsideRoot,
7
7
  savePapersRegistry
8
- } from "./chunk-TB3QGUDW.js";
8
+ } from "./chunk-SFZ67DTA.js";
9
9
  import {
10
10
  resolveToken
11
- } from "./chunk-V353Q4L7.js";
11
+ } from "./chunk-KXNT76HR.js";
12
12
  import {
13
13
  getToolMemory
14
- } from "./chunk-PU2NTY6U.js";
14
+ } from "./chunk-WYKMINTU.js";
15
15
  import {
16
16
  capitalizeWords,
17
17
  tokenizeFiltered,
@@ -37,7 +37,7 @@ import {
37
37
  getTimeProvider,
38
38
  ok,
39
39
  registerPersistentDistillerFactory
40
- } from "./chunk-6Q4XUAE5.js";
40
+ } from "./chunk-WJ5TFKDF.js";
41
41
  import {
42
42
  ensureLearningDir,
43
43
  getRulesFile
@@ -4132,4 +4132,4 @@ export {
4132
4132
  DEFAULT_CONTEXT_BUDGET_TOKENS,
4133
4133
  getContextPromptPrefix
4134
4134
  };
4135
- //# sourceMappingURL=chunk-B5LCD3AL.js.map
4135
+ //# sourceMappingURL=chunk-3RZJU5JS.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getTimeProvider,
9
9
  isRateLimitText,
10
10
  ok
11
- } from "./chunk-6Q4XUAE5.js";
11
+ } from "./chunk-WJ5TFKDF.js";
12
12
 
13
13
  // src/cli-adapters/circuit-breaker-types.ts
14
14
  var CircuitErrorCode = {
@@ -541,4 +541,4 @@ export {
541
541
  CliCircuitBreakerIntegration,
542
542
  createCliCircuitBreakerIntegration
543
543
  };
544
- //# sourceMappingURL=chunk-Q245FDK6.js.map
544
+ //# sourceMappingURL=chunk-4ZDNZAGJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-QFO77VBC.js";
3
+ } from "./chunk-GZUHLCRE.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-HFOQKCD2.js";
@@ -21,12 +21,13 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-DDE4TLD6.js";
24
+ } from "./chunk-I4M3ICTG.js";
25
25
  import {
26
26
  executeExpert
27
- } from "./chunk-XEGZYUPX.js";
27
+ } from "./chunk-UPKYWLPL.js";
28
28
  import {
29
29
  JobStatusSchema,
30
+ VOTER_ROLES,
30
31
  abortJob,
31
32
  checkSimulationAllowed,
32
33
  collectRealVotes,
@@ -46,24 +47,24 @@ import {
46
47
  simulationDeniedResult,
47
48
  toJobSummary,
48
49
  writeJobCancelled
49
- } from "./chunk-MEU6YH4G.js";
50
+ } from "./chunk-S6AUSZVL.js";
50
51
  import {
51
52
  allOf
52
53
  } from "./chunk-OQB3XC5O.js";
53
54
  import {
54
55
  normalizeTopicToCanonical,
55
56
  synthesizeResearch
56
- } from "./chunk-I6JRNQ6S.js";
57
+ } from "./chunk-JPTB4M6V.js";
57
58
  import {
58
59
  IssueTriage
59
- } from "./chunk-LLJ65HUO.js";
60
+ } from "./chunk-FWRLD7W7.js";
60
61
  import {
61
62
  resolveEnvMode,
62
63
  sanitizeInput
63
- } from "./chunk-UBWHBW7S.js";
64
+ } from "./chunk-3IM3OPZH.js";
64
65
  import {
65
66
  withPrerequisite
66
- } from "./chunk-IFL7MZQT.js";
67
+ } from "./chunk-ZRBUE6WG.js";
67
68
  import {
68
69
  NOOP_NOTIFIER,
69
70
  RateLimiter,
@@ -87,18 +88,18 @@ import {
87
88
  withAuditTrail,
88
89
  withProgressHeartbeat,
89
90
  wrapToolWithTimeout
90
- } from "./chunk-JKLMPBSL.js";
91
+ } from "./chunk-Q7GOBLAY.js";
91
92
  import {
92
93
  createAuditTrail,
93
94
  createGraphAuditBridge,
94
95
  emitPipelinePolicyEvent
95
- } from "./chunk-RV57MIQU.js";
96
+ } from "./chunk-ULZFVZFW.js";
96
97
  import {
97
98
  EventTopics,
98
99
  createEvent,
99
100
  getGlobalEventBus,
100
101
  getGlobalRegistry
101
- } from "./chunk-N3SKF4YT.js";
102
+ } from "./chunk-KYTV2JFH.js";
102
103
  import {
103
104
  IDENTIFIER_RE,
104
105
  LANG_VALUES,
@@ -131,29 +132,29 @@ import {
131
132
  parseRegistry,
132
133
  sourceExistsInRegistry,
133
134
  summarizeContextForPrompt
134
- } from "./chunk-B5LCD3AL.js";
135
+ } from "./chunk-3RZJU5JS.js";
135
136
  import {
136
137
  loadPapersRegistry,
137
138
  loadTechniquesRegistry,
138
139
  resolveInsideRoot
139
- } from "./chunk-TB3QGUDW.js";
140
+ } from "./chunk-SFZ67DTA.js";
140
141
  import {
141
142
  getTokenEnvVars,
142
143
  resolveToken
143
- } from "./chunk-V353Q4L7.js";
144
+ } from "./chunk-KXNT76HR.js";
144
145
  import {
145
146
  DEFAULT_RELEVANCE_CONFIG,
146
147
  MemoryImportance,
147
148
  calculateTextJaccardSimilarity,
148
149
  getToolMemory
149
- } from "./chunk-PU2NTY6U.js";
150
+ } from "./chunk-WYKMINTU.js";
150
151
  import {
151
152
  STOPWORDS,
152
153
  truncateWithInfo
153
154
  } from "./chunk-6T3EPABN.js";
154
155
  import {
155
156
  createSessionMemory
156
- } from "./chunk-N3NC2XCW.js";
157
+ } from "./chunk-S4TJBGI2.js";
157
158
  import {
158
159
  BUILT_IN_EXPERTS,
159
160
  BuiltInExpertTypeSchema,
@@ -171,25 +172,25 @@ import {
171
172
  getAvailableClis,
172
173
  sleep,
173
174
  withTimeout
174
- } from "./chunk-IED5SFCF.js";
175
+ } from "./chunk-VOXVWYD4.js";
175
176
  import {
176
177
  BaseAdapter,
177
178
  createStream,
178
179
  requireApiKey,
179
180
  validateApiKeyPresence
180
- } from "./chunk-QUVWKVKU.js";
181
+ } from "./chunk-CQHUNYJN.js";
181
182
  import {
182
183
  DEFAULTS
183
- } from "./chunk-2YI27D27.js";
184
+ } from "./chunk-Z22LKOBY.js";
184
185
  import {
185
186
  getAvailabilityCache,
186
187
  getCliForModelId,
187
188
  resolveFallback
188
- } from "./chunk-X4DJYX63.js";
189
+ } from "./chunk-SX2K66SG.js";
189
190
  import {
190
191
  generateHyphenId,
191
192
  generateUUID
192
- } from "./chunk-OBMDRABJ.js";
193
+ } from "./chunk-ISA73Z6I.js";
193
194
  import {
194
195
  AGENT_ROUTER_TIMEOUTS,
195
196
  API_TIMEOUTS,
@@ -293,7 +294,7 @@ import {
293
294
  selectStrategyByManifest,
294
295
  toExpertTaskAnalysisResult,
295
296
  withStep
296
- } from "./chunk-6Q4XUAE5.js";
297
+ } from "./chunk-WJ5TFKDF.js";
297
298
  import {
298
299
  ensureLearningDir,
299
300
  getMetaOutcomesFile,
@@ -871,6 +872,9 @@ function levenshtein(a, b) {
871
872
  var positiveIntStr = z10.string().regex(/^\d+$/, "Must be a positive integer string");
872
873
  var boolStr = z10.enum(["true", "false"]);
873
874
  var floatStr = z10.string().regex(/^\d+(\.\d+)?$/, "Must be a non-negative number string");
875
+ var boolLooseStr = z10.string().refine((v) => ["true", "1", "false", "0"].includes(v.toLowerCase()), {
876
+ message: "Must be one of: true, false, 1, 0"
877
+ });
874
878
  var NexusEnvSchema = z10.object({
875
879
  // --- Timeouts ---
876
880
  NEXUS_TIMEOUT_CLI: positiveIntStr.optional(),
@@ -996,9 +1000,77 @@ var NexusEnvSchema = z10.object({
996
1000
  NEXUS_HOOK_VERBOSE: boolStr.optional(),
997
1001
  NEXUS_SESSIONS_DB: z10.string().optional(),
998
1002
  NEXUS_DISABLE_SESSIONS: boolStr.optional(),
999
- NEXUS_DISABLE_METRICS: boolStr.optional()
1003
+ NEXUS_DISABLE_METRICS: boolStr.optional(),
1004
+ // --- Read by production code but previously unregistered (#5142) ---
1005
+ // Each type below was verified against the consuming call site, not inferred
1006
+ // from the name. Registering with a wrong type would replace "unknown
1007
+ // variable" with "invalid value" on a value that actually works — trading one
1008
+ // misreport for a worse one. Variables whose accepted set needed a judgement
1009
+ // call are tracked in docs/ops/env-schema-coverage-baseline.json instead.
1010
+ // Paths, URLs, tokens and term lists: any non-empty string is legal, so
1011
+ // z.string() is the accurate type rather than a permissive stand-in.
1012
+ NEXUS_CODEPR_TOKEN: z10.string().optional(),
1013
+ NEXUS_CUSTOM_API_BASE_URL: z10.string().optional(),
1014
+ NEXUS_CUSTOM_API_KEY: z10.string().optional(),
1015
+ NEXUS_CUSTOM_MODEL: z10.string().optional(),
1016
+ NEXUS_MODEL_REGISTRY_OVERLAY: z10.string().optional(),
1017
+ NEXUS_OPENAI_COMPAT_KEY: z10.string().optional(),
1018
+ NEXUS_OPENAI_COMPAT_URL: z10.string().optional(),
1019
+ NEXUS_OPENCODE_CONFIG: z10.string().optional(),
1020
+ NEXUS_PR_REVIEW_RECORDS_PATH: z10.string().optional(),
1021
+ NEXUS_SENSITIVE_REFS: z10.string().optional(),
1022
+ NEXUS_SUBPROCESS_EXTRA_ENV: z10.string().optional(),
1023
+ NEXUS_VOTE_RECORDS_PATH: z10.string().optional(),
1024
+ // parseIntEnv / parseInt consumers: a non-integer is discarded in favour of
1025
+ // the default, so reporting it as invalid tells the user their setting was
1026
+ // ignored rather than letting it fail silently.
1027
+ NEXUS_CI_HEALTH_MAX_BYTES: positiveIntStr.optional(),
1028
+ NEXUS_IMPROVEMENT_REVIEW_INTERVAL_MS: positiveIntStr.optional(),
1029
+ NEXUS_MCP_DEPTH: positiveIntStr.optional(),
1030
+ NEXUS_SUBPROCESS_DEPTH: positiveIntStr.optional(),
1031
+ // `0` is meaningful here — it disables async job dispatch entirely — so this
1032
+ // is non-negative, not positive (job-concurrency.ts:106 accepts `>= 0`).
1033
+ NEXUS_JOB_MAX_CONCURRENT_TOTAL: z10.string().regex(/^\d+$/, "Must be a non-negative integer string").optional(),
1034
+ // parseBoolEnv consumers (config/defaults-env.ts:50). The helper accepts
1035
+ // exactly true|1|false|0, case-insensitively — NOT yes/no/on/off, which fall
1036
+ // through to the default. Accepting a wider set here would tell the user
1037
+ // `yes` works when the code silently ignores it.
1038
+ NEXUS_IMPROVEMENT_REVIEW_FILE_ISSUES: boolLooseStr.optional(),
1039
+ NEXUS_NO_SCAFFOLD: boolLooseStr.optional(),
1040
+ NEXUS_TUNE_ENFORCE: boolLooseStr.optional(),
1041
+ NEXUS_VERSION_CHECK: boolLooseStr.optional(),
1042
+ // Lowercased before parsing, so mixed case is genuinely accepted.
1043
+ NEXUS_REPUTATION_GATING: z10.string().refine((v) => ["off", "audit", "enforce"].includes(v.toLowerCase()), {
1044
+ message: "Must be one of: off, audit, enforce"
1045
+ }).optional()
1000
1046
  });
1001
1047
  var KNOWN_NAMES = Object.keys(NexusEnvSchema.shape);
1048
+ var DYNAMIC_FAMILIES = [
1049
+ {
1050
+ // cli/voter-model-overrides.ts:24 — `NEXUS_VOTER_MODEL_${role.toUpperCase()}`
1051
+ prefix: "NEXUS_VOTER_MODEL_",
1052
+ suffixes: Object.keys(VOTER_ROLES).map((r) => r.toUpperCase())
1053
+ },
1054
+ {
1055
+ // mcp/jobs/job-concurrency.ts:85 — `NEXUS_JOB_MAX_CONCURRENT_${tool.toUpperCase()}`
1056
+ // The suffix is an arbitrary MCP tool name. Importing the tool registry here
1057
+ // would couple config to MCP and risk an import cycle, so the suffix is
1058
+ // matched structurally. The cost is honest and bounded: a misspelt TOOL name
1059
+ // in this one family is not flagged. The alternative — leaving the whole
1060
+ // family unregistered — misreports every CORRECT use, which is worse.
1061
+ prefix: "NEXUS_JOB_MAX_CONCURRENT_",
1062
+ suffixes: "any-identifier"
1063
+ }
1064
+ ];
1065
+ function isDynamicFamilyMember(name) {
1066
+ return DYNAMIC_FAMILIES.some((family) => {
1067
+ if (!name.startsWith(family.prefix)) return false;
1068
+ const suffix = name.slice(family.prefix.length);
1069
+ if (suffix === "") return false;
1070
+ if (family.suffixes === "any-identifier") return /^[A-Z][A-Z0-9_]*$/.test(suffix);
1071
+ return family.suffixes.includes(suffix);
1072
+ });
1073
+ }
1002
1074
  function suggestSimilar(name, known) {
1003
1075
  let best = null;
1004
1076
  let bestDist = 4;
@@ -1015,6 +1087,9 @@ function classifyEnvKeys(nexusKeys, env) {
1015
1087
  const knownRecord = {};
1016
1088
  const unknownVars = [];
1017
1089
  for (const key of nexusKeys) {
1090
+ if (isDynamicFamilyMember(key)) {
1091
+ continue;
1092
+ }
1018
1093
  if (KNOWN_NAMES.includes(key)) {
1019
1094
  const value = env[key];
1020
1095
  if (value !== void 0) {
@@ -29609,7 +29684,7 @@ function execIdFields(executionId) {
29609
29684
  async function populateUnifiedContextOnState(state, options) {
29610
29685
  const taskCandidate = state["task"];
29611
29686
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
29612
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-3FKBPUAP.js");
29687
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-O7ULA6GX.js");
29613
29688
  const category = inferTaskCategory2(taskCandidate);
29614
29689
  const executionId = options?.executionId;
29615
29690
  const execFields = execIdFields(executionId);
@@ -45406,7 +45481,7 @@ async function tryIssueTriage(task) {
45406
45481
  try {
45407
45482
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
45408
45483
  if (issueMatch === null) return null;
45409
- const { createIssueTriage } = await import("./issue-triage-BOGQS5GP.js");
45484
+ const { createIssueTriage } = await import("./issue-triage-SDH7RVQ6.js");
45410
45485
  const triage = createIssueTriage();
45411
45486
  const owner = issueMatch[1] ?? "";
45412
45487
  const num = issueMatch[2] ?? "";
@@ -45434,7 +45509,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
45434
45509
  ]);
45435
45510
  async function classifyWithLLM(task) {
45436
45511
  try {
45437
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-V2O6X3DO.js");
45512
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-IARKL3BV.js");
45438
45513
  const prompt = [
45439
45514
  "Classify this task into exactly one pipeline template.",
45440
45515
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -47215,7 +47290,7 @@ var memoryInitPromise = null;
47215
47290
  async function initPipelineMemory() {
47216
47291
  if (cachedMemory !== null) return cachedMemory;
47217
47292
  try {
47218
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-KWYEIP5P.js");
47293
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-6VZAC4FV.js");
47219
47294
  const { getLearningDir } = await import("./learning-persistence-7O5QYDM7.js");
47220
47295
  const mem = createSessionMemory2(getLearningDir());
47221
47296
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -47277,7 +47352,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
47277
47352
  callRecord(routingMemoryCache);
47278
47353
  return;
47279
47354
  }
47280
- routingMemoryInitPromise ??= import("./routing-memory-3TBYM4JY.js").then(({ createRoutingMemory }) => {
47355
+ routingMemoryInitPromise ??= import("./routing-memory-2XTCURFY.js").then(({ createRoutingMemory }) => {
47281
47356
  routingMemoryCache ??= createRoutingMemory();
47282
47357
  return routingMemoryCache;
47283
47358
  }).catch((error) => {
@@ -47311,7 +47386,7 @@ ${text}` : "";
47311
47386
  }
47312
47387
  async function getWeatherContext() {
47313
47388
  try {
47314
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-53POQURI.js");
47389
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-UUPXHSXM.js");
47315
47390
  const report = generateWeatherReport2({ includeAdaptive: true });
47316
47391
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
47317
47392
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -47329,7 +47404,7 @@ ${lines}
47329
47404
  }
47330
47405
  async function getMemoryContext(task) {
47331
47406
  try {
47332
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-KWYEIP5P.js");
47407
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-6VZAC4FV.js");
47333
47408
  const { getLearningDir } = await import("./learning-persistence-7O5QYDM7.js");
47334
47409
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
47335
47410
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -47448,7 +47523,7 @@ ${contextBlock}`;
47448
47523
  const strategy = config.votingStrategy ?? "higher_order";
47449
47524
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47450
47525
  try {
47451
- const { executeVoting } = await import("./consensus-vote-X7GYVWC7.js");
47526
+ const { executeVoting } = await import("./consensus-vote-ITFU2C77.js");
47452
47527
  const votingResult = await executeVoting(
47453
47528
  {
47454
47529
  proposal: buildVoteProposal(plan, research),
@@ -47887,7 +47962,7 @@ async function searchCodebaseForTask(task) {
47887
47962
  }
47888
47963
  async function queryResearchRegistry(task) {
47889
47964
  try {
47890
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-33AC5GSK.js");
47965
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-UPDIAIQH.js");
47891
47966
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
47892
47967
  if (topic === void 0) return null;
47893
47968
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -47958,7 +48033,7 @@ function createScanStageWrapper() {
47958
48033
  try {
47959
48034
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
47960
48035
  if (slug !== void 0) {
47961
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-566UGL3B.js");
48036
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-WQCQRNPZ.js");
47962
48037
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
47963
48038
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
47964
48039
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -51089,7 +51164,7 @@ var GitHubTaskTracker = class {
51089
51164
  cachedProvider = null;
51090
51165
  async getProvider() {
51091
51166
  if (this.cachedProvider !== null) return this.cachedProvider;
51092
- const { createScmProvider } = await import("./factory-RUAHWBQX.js");
51167
+ const { createScmProvider } = await import("./factory-4EUZKQ3C.js");
51093
51168
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
51094
51169
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
51095
51170
  this.cachedProvider = result.value;
@@ -51985,6 +52060,7 @@ async function probeSource(source, includeModelIds) {
51985
52060
  return {
51986
52061
  transport: source.name,
51987
52062
  ok: true,
52063
+ servesModels: ids.length > 0,
51988
52064
  modelCount: ids.length,
51989
52065
  sampleModelIds: ids.slice(0, 5),
51990
52066
  ...includeModelIds ? { modelIds: ids } : {}
@@ -51993,6 +52069,7 @@ async function probeSource(source, includeModelIds) {
51993
52069
  return {
51994
52070
  transport: source.name,
51995
52071
  ok: false,
52072
+ servesModels: false,
51996
52073
  modelCount: 0,
51997
52074
  sampleModelIds: [],
51998
52075
  error: error instanceof Error ? error.message : String(error)
@@ -52002,7 +52079,7 @@ async function probeSource(source, includeModelIds) {
52002
52079
  }
52003
52080
  }
52004
52081
  async function defaultSources(includeOpenRouter) {
52005
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-RBAYQAL2.js");
52082
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-P2G2A5RD.js");
52006
52083
  const adapters = createAllAdapters2();
52007
52084
  return buildDefaultModelSources(adapters, { includeOpenRouter });
52008
52085
  }
@@ -52020,10 +52097,11 @@ async function listAvailableModelsHandler(args, deps, logger59) {
52020
52097
  const transports = await Promise.all(sources.map((s) => probeSource(s, includeModelIds)));
52021
52098
  const response = {
52022
52099
  transports,
52023
- healthyTransports: transports.filter((t) => t.ok).length,
52100
+ healthyTransports: transports.filter((t) => t.servesModels).length,
52101
+ reachableTransports: transports.filter((t) => t.ok).length,
52024
52102
  totalTransports: transports.length,
52025
52103
  totalModels: transports.reduce((sum, t) => sum + t.modelCount, 0),
52026
- note: "Probe results \u2014 existence only; the in-tree registry remains authoritative for pricing/capability."
52104
+ note: "Probe results \u2014 existence only; the in-tree registry remains authoritative for pricing/capability. healthyTransports counts transports that can serve a model; reachableTransports counts probes that merely succeeded."
52027
52105
  };
52028
52106
  logger59.debug("list_available_models probed transports", {
52029
52107
  healthy: response.healthyTransports,
@@ -56073,4 +56151,4 @@ export {
56073
56151
  shutdownFeedbackSubscriber,
56074
56152
  createEventBusBridge
56075
56153
  };
56076
- //# sourceMappingURL=chunk-F3E6ZZO3.js.map
56154
+ //# sourceMappingURL=chunk-5RIAPSAF.js.map