nexus-agents 8.76.2 → 8.78.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 (133) hide show
  1. package/dist/{ast-rule-runner-BXBBL5G7.js → ast-rule-runner-U5N43D4U.js} +3 -3
  2. package/dist/{child-mcp-config-3IELNFHI.js → child-mcp-config-IRZHH2TU.js} +2 -2
  3. package/dist/{chunk-UF3BNMOV.js → chunk-33HHRRKZ.js} +34 -31
  4. package/dist/chunk-33HHRRKZ.js.map +1 -0
  5. package/dist/{chunk-PE4QQAAY.js → chunk-3K7OHJLM.js} +53 -38
  6. package/dist/chunk-3K7OHJLM.js.map +1 -0
  7. package/dist/{chunk-A6QRKIGL.js → chunk-4FDESAVV.js} +3 -3
  8. package/dist/{chunk-WFHUSSKZ.js → chunk-5CIP4EWI.js} +21 -5
  9. package/dist/chunk-5CIP4EWI.js.map +1 -0
  10. package/dist/{chunk-J527NA52.js → chunk-5EXZHBAQ.js} +3 -3
  11. package/dist/{chunk-T52Y554H.js → chunk-7RCC7WGS.js} +2 -2
  12. package/dist/{chunk-BAGUYKZL.js → chunk-7ZMNE7U2.js} +34 -12
  13. package/dist/chunk-7ZMNE7U2.js.map +1 -0
  14. package/dist/{chunk-CAIJB3CO.js → chunk-ACXBBUW3.js} +72 -5
  15. package/dist/chunk-ACXBBUW3.js.map +1 -0
  16. package/dist/{chunk-NBTG2OQC.js → chunk-AE2U6NUZ.js} +2 -2
  17. package/dist/{chunk-ZVQ2Q7OM.js → chunk-AVEDKF3J.js} +2 -2
  18. package/dist/{chunk-IPI4I2UW.js → chunk-CMZPHXDH.js} +2 -2
  19. package/dist/{chunk-MSPYAOAU.js → chunk-DWQ7TG5L.js} +2 -2
  20. package/dist/{chunk-6E3DFUYA.js → chunk-EMWRUQQS.js} +5 -5
  21. package/dist/{chunk-F76Y5QXV.js → chunk-ER76ZRBU.js} +9 -9
  22. package/dist/{chunk-T6W3N3N3.js → chunk-F7R2E74V.js} +2 -2
  23. package/dist/{chunk-PJZQQYLJ.js → chunk-GHNHZSDW.js} +7 -7
  24. package/dist/{chunk-VFTP7WSH.js → chunk-J76ZM6QF.js} +2 -2
  25. package/dist/{chunk-AONC4VYB.js → chunk-LIVTFARG.js} +2 -2
  26. package/dist/{chunk-EVBLCOEN.js → chunk-MYF73MI3.js} +2 -2
  27. package/dist/{chunk-MRGBENPM.js → chunk-NEIPHVTA.js} +2 -2
  28. package/dist/{chunk-IDPA4X6J.js → chunk-NW5MCYOE.js} +3 -3
  29. package/dist/{chunk-G744HQMZ.js → chunk-OZFXXGGZ.js} +75 -12
  30. package/dist/chunk-OZFXXGGZ.js.map +1 -0
  31. package/dist/{chunk-CMG3P6OI.js → chunk-PSCY6MSD.js} +4 -4
  32. package/dist/{chunk-RC4ZQ4ZE.js → chunk-Q6JZQWQB.js} +28 -31
  33. package/dist/chunk-Q6JZQWQB.js.map +1 -0
  34. package/dist/{chunk-AWCSYKUR.js → chunk-QNRB5U7W.js} +2 -2
  35. package/dist/{chunk-FRHYZJGC.js → chunk-SKAPTWVH.js} +3 -3
  36. package/dist/{chunk-2P4HP2A6.js → chunk-T63EIQYI.js} +2 -2
  37. package/dist/{chunk-FMAJIIXZ.js → chunk-UNPDTD6N.js} +2 -2
  38. package/dist/{chunk-GOXBEH6M.js → chunk-VFFG3HIY.js} +2 -2
  39. package/dist/{chunk-MCRMY7K7.js → chunk-WABZQ477.js} +4 -4
  40. package/dist/{chunk-VKLUJZQV.js → chunk-WUN3IB3T.js} +2 -2
  41. package/dist/{chunk-MSSRXYMZ.js → chunk-XQ34WJOM.js} +2 -2
  42. package/dist/{chunk-NOSQXAW3.js → chunk-YUDJV6JF.js} +4 -4
  43. package/dist/{cli-circuit-breaker-H5CESPLC.js → cli-circuit-breaker-DJU6WTWT.js} +3 -3
  44. package/dist/cli.js +65 -51
  45. package/dist/cli.js.map +1 -1
  46. package/dist/{composite-router-DSYVXQ7C.js → composite-router-F3D2QRHI.js} +2 -2
  47. package/dist/{consensus-vote-OKA2PL74.js → consensus-vote-3ZA6SHMI.js} +16 -16
  48. package/dist/{context-retriever-C5KY23EG.js → context-retriever-J24ZMIZG.js} +8 -8
  49. package/dist/{doctor-deep-LBPZXYN4.js → doctor-deep-WWOPRJJS.js} +3 -3
  50. package/dist/{doctor-live-QAT3FLUJ.js → doctor-live-55CKYQ6V.js} +10 -10
  51. package/dist/{expert-bridge-F7V2AXUD.js → expert-bridge-5MFBN4ZW.js} +4 -4
  52. package/dist/{factory-MZTDIMCP.js → factory-3ZA63QDH.js} +9 -9
  53. package/dist/{factory-ECJNRE2W.js → factory-TXEYHBQV.js} +5 -5
  54. package/dist/{improvement-review-UEVIATKC.js → improvement-review-VC46AY77.js} +5 -5
  55. package/dist/index.d.ts +75 -3
  56. package/dist/index.js +30 -30
  57. package/dist/{init-opencode-WXEXOV6X.js → init-opencode-R5JTQZG5.js} +5 -5
  58. package/dist/issue-triage-M7XEMQZ7.js +16 -0
  59. package/dist/{pr-reviewer-helpers-VRPD3CNI.js → pr-reviewer-helpers-HRM74BLX.js} +4 -4
  60. package/dist/{registry-command-JZLWVBLG.js → registry-command-ZPKPR6WV.js} +2 -2
  61. package/dist/{repo-security-plan-IS65FSZF.js → repo-security-plan-LXKTNEGB.js} +3 -3
  62. package/dist/{research-helpers-synthesize-TLZPEOAU.js → research-helpers-synthesize-FZLLZSJM.js} +4 -4
  63. package/dist/{routing-memory-YHEH7ULH.js → routing-memory-35Z7UVYC.js} +2 -2
  64. package/dist/{session-memory-5MD3ZFJX.js → session-memory-G7VGV2SC.js} +3 -3
  65. package/dist/{setup-config-RFOBGXUH.js → setup-config-KLKXB2LM.js} +3 -3
  66. package/dist/{setup-custom-api-DKXRZY4C.js → setup-custom-api-TJMRUQFK.js} +14 -11
  67. package/dist/setup-custom-api-TJMRUQFK.js.map +1 -0
  68. package/dist/setup-data-dir-NQITBZYA.js +30 -0
  69. package/dist/{tool-memory-HCCMGPVI.js → tool-memory-65MWYDEP.js} +5 -5
  70. package/dist/{unified-registry-3TWHRO5L.js → unified-registry-2HCLBGWM.js} +10 -10
  71. package/dist/{weather-report-MGOA7OOC.js → weather-report-RMRBC6LH.js} +2 -2
  72. package/package.json +1 -1
  73. package/dist/chunk-BAGUYKZL.js.map +0 -1
  74. package/dist/chunk-CAIJB3CO.js.map +0 -1
  75. package/dist/chunk-G744HQMZ.js.map +0 -1
  76. package/dist/chunk-PE4QQAAY.js.map +0 -1
  77. package/dist/chunk-RC4ZQ4ZE.js.map +0 -1
  78. package/dist/chunk-UF3BNMOV.js.map +0 -1
  79. package/dist/chunk-WFHUSSKZ.js.map +0 -1
  80. package/dist/issue-triage-OJZ275JY.js +0 -16
  81. package/dist/setup-custom-api-DKXRZY4C.js.map +0 -1
  82. package/dist/setup-data-dir-JXSO4FDY.js +0 -30
  83. /package/dist/{ast-rule-runner-BXBBL5G7.js.map → ast-rule-runner-U5N43D4U.js.map} +0 -0
  84. /package/dist/{child-mcp-config-3IELNFHI.js.map → child-mcp-config-IRZHH2TU.js.map} +0 -0
  85. /package/dist/{chunk-A6QRKIGL.js.map → chunk-4FDESAVV.js.map} +0 -0
  86. /package/dist/{chunk-J527NA52.js.map → chunk-5EXZHBAQ.js.map} +0 -0
  87. /package/dist/{chunk-T52Y554H.js.map → chunk-7RCC7WGS.js.map} +0 -0
  88. /package/dist/{chunk-NBTG2OQC.js.map → chunk-AE2U6NUZ.js.map} +0 -0
  89. /package/dist/{chunk-ZVQ2Q7OM.js.map → chunk-AVEDKF3J.js.map} +0 -0
  90. /package/dist/{chunk-IPI4I2UW.js.map → chunk-CMZPHXDH.js.map} +0 -0
  91. /package/dist/{chunk-MSPYAOAU.js.map → chunk-DWQ7TG5L.js.map} +0 -0
  92. /package/dist/{chunk-6E3DFUYA.js.map → chunk-EMWRUQQS.js.map} +0 -0
  93. /package/dist/{chunk-F76Y5QXV.js.map → chunk-ER76ZRBU.js.map} +0 -0
  94. /package/dist/{chunk-T6W3N3N3.js.map → chunk-F7R2E74V.js.map} +0 -0
  95. /package/dist/{chunk-PJZQQYLJ.js.map → chunk-GHNHZSDW.js.map} +0 -0
  96. /package/dist/{chunk-VFTP7WSH.js.map → chunk-J76ZM6QF.js.map} +0 -0
  97. /package/dist/{chunk-AONC4VYB.js.map → chunk-LIVTFARG.js.map} +0 -0
  98. /package/dist/{chunk-EVBLCOEN.js.map → chunk-MYF73MI3.js.map} +0 -0
  99. /package/dist/{chunk-MRGBENPM.js.map → chunk-NEIPHVTA.js.map} +0 -0
  100. /package/dist/{chunk-IDPA4X6J.js.map → chunk-NW5MCYOE.js.map} +0 -0
  101. /package/dist/{chunk-CMG3P6OI.js.map → chunk-PSCY6MSD.js.map} +0 -0
  102. /package/dist/{chunk-AWCSYKUR.js.map → chunk-QNRB5U7W.js.map} +0 -0
  103. /package/dist/{chunk-FRHYZJGC.js.map → chunk-SKAPTWVH.js.map} +0 -0
  104. /package/dist/{chunk-2P4HP2A6.js.map → chunk-T63EIQYI.js.map} +0 -0
  105. /package/dist/{chunk-FMAJIIXZ.js.map → chunk-UNPDTD6N.js.map} +0 -0
  106. /package/dist/{chunk-GOXBEH6M.js.map → chunk-VFFG3HIY.js.map} +0 -0
  107. /package/dist/{chunk-MCRMY7K7.js.map → chunk-WABZQ477.js.map} +0 -0
  108. /package/dist/{chunk-VKLUJZQV.js.map → chunk-WUN3IB3T.js.map} +0 -0
  109. /package/dist/{chunk-MSSRXYMZ.js.map → chunk-XQ34WJOM.js.map} +0 -0
  110. /package/dist/{chunk-NOSQXAW3.js.map → chunk-YUDJV6JF.js.map} +0 -0
  111. /package/dist/{cli-circuit-breaker-H5CESPLC.js.map → cli-circuit-breaker-DJU6WTWT.js.map} +0 -0
  112. /package/dist/{composite-router-DSYVXQ7C.js.map → composite-router-F3D2QRHI.js.map} +0 -0
  113. /package/dist/{consensus-vote-OKA2PL74.js.map → consensus-vote-3ZA6SHMI.js.map} +0 -0
  114. /package/dist/{context-retriever-C5KY23EG.js.map → context-retriever-J24ZMIZG.js.map} +0 -0
  115. /package/dist/{doctor-deep-LBPZXYN4.js.map → doctor-deep-WWOPRJJS.js.map} +0 -0
  116. /package/dist/{doctor-live-QAT3FLUJ.js.map → doctor-live-55CKYQ6V.js.map} +0 -0
  117. /package/dist/{expert-bridge-F7V2AXUD.js.map → expert-bridge-5MFBN4ZW.js.map} +0 -0
  118. /package/dist/{factory-ECJNRE2W.js.map → factory-3ZA63QDH.js.map} +0 -0
  119. /package/dist/{factory-MZTDIMCP.js.map → factory-TXEYHBQV.js.map} +0 -0
  120. /package/dist/{improvement-review-UEVIATKC.js.map → improvement-review-VC46AY77.js.map} +0 -0
  121. /package/dist/{init-opencode-WXEXOV6X.js.map → init-opencode-R5JTQZG5.js.map} +0 -0
  122. /package/dist/{issue-triage-OJZ275JY.js.map → issue-triage-M7XEMQZ7.js.map} +0 -0
  123. /package/dist/{pr-reviewer-helpers-VRPD3CNI.js.map → pr-reviewer-helpers-HRM74BLX.js.map} +0 -0
  124. /package/dist/{registry-command-JZLWVBLG.js.map → registry-command-ZPKPR6WV.js.map} +0 -0
  125. /package/dist/{repo-security-plan-IS65FSZF.js.map → repo-security-plan-LXKTNEGB.js.map} +0 -0
  126. /package/dist/{research-helpers-synthesize-TLZPEOAU.js.map → research-helpers-synthesize-FZLLZSJM.js.map} +0 -0
  127. /package/dist/{routing-memory-YHEH7ULH.js.map → routing-memory-35Z7UVYC.js.map} +0 -0
  128. /package/dist/{session-memory-5MD3ZFJX.js.map → session-memory-G7VGV2SC.js.map} +0 -0
  129. /package/dist/{setup-config-RFOBGXUH.js.map → setup-config-KLKXB2LM.js.map} +0 -0
  130. /package/dist/{setup-data-dir-JXSO4FDY.js.map → setup-data-dir-NQITBZYA.js.map} +0 -0
  131. /package/dist/{tool-memory-HCCMGPVI.js.map → tool-memory-65MWYDEP.js.map} +0 -0
  132. /package/dist/{unified-registry-3TWHRO5L.js.map → unified-registry-2HCLBGWM.js.map} +0 -0
  133. /package/dist/{weather-report-MGOA7OOC.js.map → weather-report-RMRBC6LH.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -23,11 +23,11 @@ import {
23
23
  parseExpertReview,
24
24
  reviewPostingBlock,
25
25
  sumFindings
26
- } from "./chunk-FRHYZJGC.js";
27
- import "./chunk-2P4HP2A6.js";
26
+ } from "./chunk-SKAPTWVH.js";
27
+ import "./chunk-T63EIQYI.js";
28
28
  import {
29
29
  runConfigInitSync
30
- } from "./chunk-FMAJIIXZ.js";
30
+ } from "./chunk-UNPDTD6N.js";
31
31
  import {
32
32
  AuthHandler,
33
33
  CustomExpertDefinitionSchema,
@@ -156,11 +156,11 @@ import {
156
156
  validateNexusEnv,
157
157
  validateWorkflow,
158
158
  wrapInMarkdownFence
159
- } from "./chunk-PE4QQAAY.js";
160
- import "./chunk-ZVQ2Q7OM.js";
159
+ } from "./chunk-3K7OHJLM.js";
160
+ import "./chunk-AVEDKF3J.js";
161
161
  import "./chunk-4GDMHCKX.js";
162
162
  import "./chunk-7ETWTSTB.js";
163
- import "./chunk-AONC4VYB.js";
163
+ import "./chunk-LIVTFARG.js";
164
164
  import {
165
165
  CATEGORY_DISPLAY_NAMES,
166
166
  DEFAULT_PR_REVIEW_CONFIG
@@ -176,11 +176,11 @@ import {
176
176
  doctorCommand,
177
177
  initDataDirectories,
178
178
  runDoctor
179
- } from "./chunk-BAGUYKZL.js";
180
- import "./chunk-MSPYAOAU.js";
179
+ } from "./chunk-7ZMNE7U2.js";
180
+ import "./chunk-DWQ7TG5L.js";
181
181
  import {
182
182
  shutdownExpertBridge
183
- } from "./chunk-PJZQQYLJ.js";
183
+ } from "./chunk-GHNHZSDW.js";
184
184
  import {
185
185
  ConsensusVoteInputSchema,
186
186
  DEFAULT_VOTE_TIMEOUT_MS,
@@ -198,19 +198,19 @@ import {
198
198
  registerConsensusVoteTool,
199
199
  seatFallbacks,
200
200
  toRecordDecision
201
- } from "./chunk-F76Y5QXV.js";
201
+ } from "./chunk-ER76ZRBU.js";
202
202
  import {
203
203
  buildOpenAICompatAdapters,
204
204
  readOpenAICompatEndpoint,
205
205
  readOpenAICompatEnv
206
- } from "./chunk-RC4ZQ4ZE.js";
206
+ } from "./chunk-Q6JZQWQB.js";
207
207
  import {
208
208
  allOf,
209
209
  anyOf
210
210
  } from "./chunk-OQB3XC5O.js";
211
211
  import {
212
212
  synthesizeResearch
213
- } from "./chunk-A6QRKIGL.js";
213
+ } from "./chunk-4FDESAVV.js";
214
214
  import {
215
215
  DRAFT_REPLY_BODY_MAX_LENGTH,
216
216
  configureUntrustedInputFirewall,
@@ -219,14 +219,14 @@ import {
219
219
  firewallInputFor,
220
220
  parsePRUrl,
221
221
  runUntrustedInputFirewall,
222
- validateAgentAction,
223
- validateCorroboration
224
- } from "./chunk-G744HQMZ.js";
225
- import "./chunk-GOXBEH6M.js";
222
+ validateActionCorroboration,
223
+ validateAgentAction
224
+ } from "./chunk-OZFXXGGZ.js";
225
+ import "./chunk-VFFG3HIY.js";
226
226
  import {
227
227
  ReputationCache,
228
228
  sanitizeInput
229
- } from "./chunk-T6W3N3N3.js";
229
+ } from "./chunk-F7R2E74V.js";
230
230
  import {
231
231
  ImprovementReviewInputSchema,
232
232
  calculateFitnessScore,
@@ -240,23 +240,23 @@ import {
240
240
  registerImprovementReviewTool,
241
241
  runImprovementReview,
242
242
  scanForSecrets
243
- } from "./chunk-IDPA4X6J.js";
243
+ } from "./chunk-NW5MCYOE.js";
244
244
  import {
245
245
  createDefaultPolicyFirewall,
246
246
  setGlobalPolicyFirewall,
247
247
  setSecureHandlerAuditLogger,
248
248
  stagePolicyFirewallForRollout
249
- } from "./chunk-J527NA52.js";
249
+ } from "./chunk-5EXZHBAQ.js";
250
250
  import {
251
251
  NODE_ENGINE_RANGE,
252
252
  VERSION,
253
253
  isNodeVersionSupported
254
- } from "./chunk-EVBLCOEN.js";
254
+ } from "./chunk-MYF73MI3.js";
255
255
  import {
256
256
  claimGlobalRegistry,
257
257
  createUnifiedRegistry,
258
258
  getGlobalRegistry
259
- } from "./chunk-CMG3P6OI.js";
259
+ } from "./chunk-PSCY6MSD.js";
260
260
  import {
261
261
  CodebaseIndexSchema,
262
262
  PaperStatusSchema,
@@ -282,7 +282,7 @@ import {
282
282
  loadSourcesRegistry,
283
283
  rankDiscoveredItems,
284
284
  saveSourcesRegistry
285
- } from "./chunk-6E3DFUYA.js";
285
+ } from "./chunk-EMWRUQQS.js";
286
286
  import {
287
287
  getTsMorph
288
288
  } from "./chunk-W654ME6B.js";
@@ -290,21 +290,21 @@ import {
290
290
  loadPapersRegistry,
291
291
  loadTechniquesRegistry,
292
292
  savePapersRegistry
293
- } from "./chunk-MRGBENPM.js";
293
+ } from "./chunk-NEIPHVTA.js";
294
294
  import {
295
295
  resolveToken
296
- } from "./chunk-IPI4I2UW.js";
296
+ } from "./chunk-CMZPHXDH.js";
297
297
  import {
298
298
  MemoryError,
299
299
  configureToolMemory,
300
300
  shutdownToolMemory
301
- } from "./chunk-NOSQXAW3.js";
301
+ } from "./chunk-YUDJV6JF.js";
302
302
  import {
303
303
  capitalize,
304
304
  capitalizeKebab,
305
305
  truncateText
306
306
  } from "./chunk-7LP6VJRP.js";
307
- import "./chunk-NBTG2OQC.js";
307
+ import "./chunk-AE2U6NUZ.js";
308
308
  import {
309
309
  BUILT_IN_EXPERTS
310
310
  } from "./chunk-AHI43IQB.js";
@@ -318,23 +318,26 @@ import {
318
318
  probeAllClis,
319
319
  readSubprocessDepth,
320
320
  safeJsonParse
321
- } from "./chunk-UF3BNMOV.js";
322
- import "./chunk-MSSRXYMZ.js";
321
+ } from "./chunk-33HHRRKZ.js";
322
+ import "./chunk-XQ34WJOM.js";
323
323
  import {
324
324
  DEFAULTS
325
- } from "./chunk-VKLUJZQV.js";
326
- import "./chunk-CAIJB3CO.js";
325
+ } from "./chunk-WUN3IB3T.js";
326
+ import {
327
+ hostnameOf,
328
+ warnDeprecatedGatewayEnvOnce
329
+ } from "./chunk-ACXBBUW3.js";
327
330
  import {
328
331
  getNexusTmpDir,
329
332
  nexusMkdtempSync
330
333
  } from "./chunk-HERI7LXN.js";
331
- import "./chunk-VFTP7WSH.js";
334
+ import "./chunk-J76ZM6QF.js";
332
335
  import "./chunk-QZUG667L.js";
333
- import "./chunk-AWCSYKUR.js";
336
+ import "./chunk-QNRB5U7W.js";
334
337
  import {
335
338
  getDefaultCliCircuitBreakerRegistry,
336
339
  mapModelErrorToCategory
337
- } from "./chunk-T52Y554H.js";
340
+ } from "./chunk-7RCC7WGS.js";
338
341
  import {
339
342
  API_TIMEOUTS,
340
343
  AgentCapability,
@@ -422,7 +425,7 @@ import {
422
425
  validateTimeout,
423
426
  writeEmptyLine,
424
427
  writeLine
425
- } from "./chunk-WFHUSSKZ.js";
428
+ } from "./chunk-5CIP4EWI.js";
426
429
  import "./chunk-4UHDDCRB.js";
427
430
  import {
428
431
  applyPortableMode,
@@ -4283,6 +4286,16 @@ function reportUnverifiedCorroboration(corroboration, log) {
4283
4286
  function notEvaluated(rule, message) {
4284
4287
  return { allowed: false, hasRuleOfTwoViolation: false, violations: [{ rule, message }] };
4285
4288
  }
4289
+ function corroborationViolation(decision) {
4290
+ if (decision.satisfied) return [];
4291
+ const missing = decision.missing.join("; ");
4292
+ return [
4293
+ {
4294
+ rule: "INSUFFICIENT_CORROBORATION",
4295
+ message: decision.refused ? `refused at stage ${decision.stage} under enforce: ${missing}` : missing
4296
+ }
4297
+ ];
4298
+ }
4286
4299
  function auditReviewAction(draft, input, gate, log) {
4287
4300
  const validated2 = validateAgentAction({
4288
4301
  type: "DraftReply",
@@ -4293,13 +4306,13 @@ function auditReviewAction(draft, input, gate, log) {
4293
4306
  if (!validated2.ok) return notEvaluated("INVALID_ACTION", validated2.error);
4294
4307
  const decision = evaluateActionThroughFirewall(input, { ...gate, action: validated2.value });
4295
4308
  if (!decision.ok) return notEvaluated("FIREWALL_ERROR", decision.error.message);
4296
- const corroboration = validateCorroboration(validated2.value);
4297
- reportUnverifiedCorroboration(corroboration, log);
4298
- const corroborationViolation = corroboration.satisfied ? [] : [{ rule: "INSUFFICIENT_CORROBORATION", message: corroboration.missing.join("; ") }];
4309
+ const corroboration = validateActionCorroboration(validated2.value);
4310
+ if (!corroboration.ok) return notEvaluated("FIREWALL_ERROR", corroboration.error.message);
4311
+ if (!corroboration.value.refused) reportUnverifiedCorroboration(corroboration.value, log);
4299
4312
  return {
4300
- allowed: decision.value.allowed && corroboration.satisfied,
4313
+ allowed: decision.value.allowed && corroboration.value.satisfied,
4301
4314
  hasRuleOfTwoViolation: decision.value.violations.some((v) => v.rule === "RULE_OF_TWO"),
4302
- violations: [...decision.value.violations, ...corroborationViolation]
4315
+ violations: [...decision.value.violations, ...corroborationViolation(corroboration.value)]
4303
4316
  };
4304
4317
  }
4305
4318
 
@@ -4572,7 +4585,7 @@ Provide a structured review with:
4572
4585
  * (Source: Issue #828 — Wire policy gate into production pipeline)
4573
4586
  */
4574
4587
  async postReviewToGitHub(provider, pr, result, gateDecision, reputation) {
4575
- const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-VRPD3CNI.js");
4588
+ const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-HRM74BLX.js");
4576
4589
  const formattedBody = formatReviewComment2(result);
4577
4590
  const body = truncateText(formattedBody, DRAFT_REPLY_BODY_MAX_LENGTH, "\u2026[review truncated]");
4578
4591
  const sources = buildReviewCitations(pr.files);
@@ -12244,7 +12257,7 @@ function probeGrammars(register, parse6, probes = GRAMMAR_PROBES) {
12244
12257
  }
12245
12258
  async function loadGrammarModules() {
12246
12259
  const [{ ensurePolyglotLangs }, napi] = await Promise.all([
12247
- import("./ast-rule-runner-BXBBL5G7.js"),
12260
+ import("./ast-rule-runner-U5N43D4U.js"),
12248
12261
  import("@ast-grep/napi")
12249
12262
  ]);
12250
12263
  return { register: ensurePolyglotLangs, parse: napi.parse };
@@ -19710,7 +19723,7 @@ function startImprovementReviewScheduler(options) {
19710
19723
  let running = false;
19711
19724
  const runOnce = async () => {
19712
19725
  try {
19713
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-UEVIATKC.js");
19726
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-VC46AY77.js");
19714
19727
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
19715
19728
  const result = await runImprovementReview2(input, { logger: logger22 });
19716
19729
  logger22.info("Scheduled improvement_review complete", {
@@ -20994,6 +21007,7 @@ var GatewayArmAdapter = class {
20994
21007
 
20995
21008
  // src/cli-server-gateway.ts
20996
21009
  async function tryWireGatewayAdapters(logger22) {
21010
+ warnDeprecatedGatewayEnvOnce(process.env, logger22);
20997
21011
  const sandboxActive = detectSandbox().active;
20998
21012
  const env2 = readOpenAICompatEnv();
20999
21013
  if (env2 === null) {
@@ -21017,7 +21031,7 @@ async function tryWireGatewayAdapters(logger22) {
21017
21031
  return void 0;
21018
21032
  }
21019
21033
  logger22.info("OpenAI-compatible gateway wired", {
21020
- baseUrl: env2.baseUrl,
21034
+ host: hostnameOf(env2.baseUrl),
21021
21035
  modelCount: result.value.length,
21022
21036
  models: result.value.map((a) => a.modelId)
21023
21037
  });
@@ -21996,7 +22010,7 @@ function adaptConfigToLibrary(config) {
21996
22010
  }
21997
22011
  function createBeliefPromoter() {
21998
22012
  return async (event) => {
21999
- const { getToolMemory } = await import("./tool-memory-HCCMGPVI.js");
22013
+ const { getToolMemory } = await import("./tool-memory-65MWYDEP.js");
22000
22014
  const tm = getToolMemory();
22001
22015
  await tm.recordBelief(
22002
22016
  `skill:${event.name}`,
@@ -23270,7 +23284,7 @@ async function handleResearchCommand(args) {
23270
23284
  }
23271
23285
  }
23272
23286
  async function handleRegistryCommand(args) {
23273
- const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-JZLWVBLG.js");
23287
+ const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-ZPKPR6WV.js");
23274
23288
  const subcommand = args.subcommand;
23275
23289
  if (!isValidRegistrySubcommand(subcommand)) {
23276
23290
  process.stdout.write(`${formatRegistryUsage()}
@@ -23318,12 +23332,12 @@ async function handleVerifyCommand(args) {
23318
23332
  async function handleDoctorCommand(args) {
23319
23333
  const exitCode = await doctorCommand({ fix: args.options.fix });
23320
23334
  if (args.options.deep) {
23321
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-LBPZXYN4.js");
23335
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-WWOPRJJS.js");
23322
23336
  const diag = runDeepDiagnostics2();
23323
23337
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
23324
23338
  }
23325
23339
  if (args.options.live) {
23326
- const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-QAT3FLUJ.js");
23340
+ const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-55CKYQ6V.js");
23327
23341
  const report = await runLiveReadiness();
23328
23342
  process.stdout.write(formatLiveReadiness(report) + "\n");
23329
23343
  if (report.some((r) => r.levels.serves.status === "failed")) {
@@ -24056,7 +24070,7 @@ async function runInitPortableFlow(args) {
24056
24070
  return cliExit(result.success ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
24057
24071
  }
24058
24072
  async function runInitOpencodeFlow(args) {
24059
- const { runInitOpencode } = await import("./init-opencode-WXEXOV6X.js");
24073
+ const { runInitOpencode } = await import("./init-opencode-R5JTQZG5.js");
24060
24074
  const opencodePath = args.options.opencode;
24061
24075
  if (opencodePath === void 0 || opencodePath === "") {
24062
24076
  process.stderr.write("Error: --opencode requires a path argument.\n");
@@ -24082,7 +24096,7 @@ async function runInitOpencodeFlow(args) {
24082
24096
  return cliExit(EXIT_CODES.SUCCESS);
24083
24097
  }
24084
24098
  async function renderOpencodeValidate(opencodePath) {
24085
- const { runOpencodeValidate } = await import("./init-opencode-WXEXOV6X.js");
24099
+ const { runOpencodeValidate } = await import("./init-opencode-R5JTQZG5.js");
24086
24100
  const result = await runOpencodeValidate(opencodePath);
24087
24101
  if (!result.ok) {
24088
24102
  process.stderr.write(`init --opencode --validate: ${result.reason ?? "failed"}
@@ -24121,7 +24135,7 @@ async function handleSetupCommandAsync(args) {
24121
24135
  return cliExitFromStatus(exitCode);
24122
24136
  }
24123
24137
  async function runCustomApiSetup(args) {
24124
- const { configureCustomApi } = await import("./setup-custom-api-DKXRZY4C.js");
24138
+ const { configureCustomApi } = await import("./setup-custom-api-TJMRUQFK.js");
24125
24139
  const baseUrl = args.options.customApi;
24126
24140
  if (baseUrl === void 0) return EXIT_CODES.SERVER_START_FAILED;
24127
24141
  const input = {
@@ -24137,7 +24151,7 @@ async function runCustomApiSetup(args) {
24137
24151
  return EXIT_CODES.SERVER_START_FAILED;
24138
24152
  }
24139
24153
  const { baseUrl: canonical, model, probeSucceeded, shellFragment } = result.value;
24140
- process.stdout.write(`\u2713 Gateway validated: ${canonical}
24154
+ process.stdout.write(`\u2713 Gateway validated: ${hostnameOf(canonical)}
24141
24155
  `);
24142
24156
  process.stdout.write(`\u2713 Model: ${model}
24143
24157
  `);