nexus-agents 8.86.2 → 8.87.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 (129) hide show
  1. package/dist/{ast-rule-runner-USLLC3XL.js → ast-rule-runner-57VN347L.js} +3 -3
  2. package/dist/{child-mcp-config-K563PP6S.js → child-mcp-config-74CO7TSI.js} +2 -2
  3. package/dist/{chunk-ZE73MT66.js → chunk-2CNDBMS2.js} +4 -4
  4. package/dist/{chunk-5U4XTYAB.js → chunk-2FUUCJPQ.js} +2 -2
  5. package/dist/{chunk-P6D7S7CY.js → chunk-3464EDLG.js} +2 -2
  6. package/dist/{chunk-XARB7ITD.js → chunk-5XKDJDIP.js} +8 -8
  7. package/dist/{chunk-KXFPJOPL.js → chunk-6ALANRN5.js} +2 -2
  8. package/dist/{chunk-Q75P5CVJ.js → chunk-6RZ2O6T7.js} +2 -2
  9. package/dist/{chunk-6K2JDJ7A.js → chunk-A46LARJL.js} +3 -3
  10. package/dist/{chunk-KX7A23JM.js → chunk-AEUJWSOX.js} +2 -2
  11. package/dist/{chunk-CBZAMHBA.js → chunk-C5VOEBIS.js} +2 -2
  12. package/dist/{chunk-O73BSBJ6.js → chunk-DE4H5SQM.js} +3 -3
  13. package/dist/{chunk-2SQO4FET.js → chunk-DUNJ3BGG.js} +2 -2
  14. package/dist/{chunk-XWPZZEBX.js → chunk-FFXY3GG3.js} +4 -4
  15. package/dist/{chunk-J6GIJFV4.js → chunk-FLFWGNMF.js} +2 -2
  16. package/dist/{chunk-IXKFIO6O.js → chunk-FYQOXSBI.js} +2 -2
  17. package/dist/{chunk-64IJKT4I.js → chunk-HFBKT7BY.js} +58 -5
  18. package/dist/chunk-HFBKT7BY.js.map +1 -0
  19. package/dist/{chunk-O24ENDHN.js → chunk-HZNZKFDU.js} +3 -3
  20. package/dist/{chunk-DSVMQVJZ.js → chunk-IACPPUSB.js} +4 -4
  21. package/dist/{chunk-NQKJYGND.js → chunk-KMVURF2Y.js} +2 -2
  22. package/dist/{chunk-GKLTEUFU.js → chunk-KXHHFB7S.js} +2 -2
  23. package/dist/{chunk-YPJRVA2H.js → chunk-L6H55UP5.js} +4 -4
  24. package/dist/{chunk-YOQVGERU.js → chunk-LFTGWIDB.js} +10 -10
  25. package/dist/{chunk-ZSFRB2S4.js → chunk-O23Z6TEB.js} +3 -3
  26. package/dist/{chunk-NNYVXSQF.js → chunk-OZ6NDOR4.js} +2 -2
  27. package/dist/{chunk-EVYZZL7J.js → chunk-POB4FPKV.js} +2 -2
  28. package/dist/{chunk-FNL4J77P.js → chunk-PVEIRHM2.js} +2 -2
  29. package/dist/chunk-PVEIRHM2.js.map +1 -0
  30. package/dist/{chunk-5FXOJYDV.js → chunk-SFV75KOW.js} +11 -10
  31. package/dist/{chunk-5FXOJYDV.js.map → chunk-SFV75KOW.js.map} +1 -1
  32. package/dist/{chunk-OOIZ3IQD.js → chunk-SQNZXCVN.js} +2 -2
  33. package/dist/{chunk-QCDYJYGB.js → chunk-T2CFH257.js} +7 -7
  34. package/dist/{chunk-V66MMBO4.js → chunk-T2TKT7GM.js} +5 -5
  35. package/dist/{chunk-S6MNVNQB.js → chunk-VT75JAMR.js} +2 -2
  36. package/dist/{chunk-XNNNDQLK.js → chunk-XSN65PSX.js} +2 -2
  37. package/dist/{chunk-QW6J2UV4.js → chunk-ZLIXVFY4.js} +5 -5
  38. package/dist/{chunk-EYBWZHGQ.js → chunk-ZQFV7CRR.js} +45 -37
  39. package/dist/{chunk-EYBWZHGQ.js.map → chunk-ZQFV7CRR.js.map} +1 -1
  40. package/dist/{cli-circuit-breaker-4ASNTBDP.js → cli-circuit-breaker-7FPQIKMC.js} +3 -3
  41. package/dist/cli.d.ts +1 -1
  42. package/dist/cli.js +144 -79
  43. package/dist/cli.js.map +1 -1
  44. package/dist/{composite-router-V45AK6WD.js → composite-router-6CQEKTGG.js} +2 -2
  45. package/dist/{consensus-vote-63FZ6VV5.js → consensus-vote-HS6BHA2N.js} +16 -16
  46. package/dist/{consensus-vote-types-DkRs8FbB.d.ts → consensus-vote-types-B4FyYwSv.d.ts} +1 -1
  47. package/dist/{context-retriever-NZOSGG6S.js → context-retriever-MTWSVUI4.js} +8 -8
  48. package/dist/{doctor-deep-JRY3D7BP.js → doctor-deep-YAF6PO7D.js} +3 -3
  49. package/dist/{doctor-live-NSRHMHMG.js → doctor-live-D4YQ2HSF.js} +10 -10
  50. package/dist/{expert-bridge-Q4SEPVTE.js → expert-bridge-EKZ3XRAT.js} +4 -4
  51. package/dist/{factory-ZV4MR3VM.js → factory-756K7DJU.js} +9 -9
  52. package/dist/{factory-JBK45P7G.js → factory-GTZU7LWH.js} +5 -5
  53. package/dist/{improvement-review-YM564QHQ.js → improvement-review-OBE25BPD.js} +5 -5
  54. package/dist/index.d.ts +2 -2
  55. package/dist/index.js +30 -30
  56. package/dist/{init-opencode-6WGN5J6J.js → init-opencode-5QA27TFA.js} +5 -5
  57. package/dist/issue-triage-EHZPXKCZ.js +16 -0
  58. package/dist/{pr-reviewer-helpers-UMNMOUAO.js → pr-reviewer-helpers-IVLBDJKJ.js} +4 -4
  59. package/dist/{registry-command-QRBAKWRK.js → registry-command-CBEBGBHP.js} +2 -2
  60. package/dist/{repo-security-plan-UM6WX5PN.js → repo-security-plan-2XFHLOMA.js} +3 -3
  61. package/dist/{research-helpers-synthesize-DUOVXI5V.js → research-helpers-synthesize-3IHB3E2T.js} +4 -4
  62. package/dist/{routing-memory-OKYSDPXT.js → routing-memory-HV65CNTK.js} +2 -2
  63. package/dist/{session-memory-ONUSRMYV.js → session-memory-2P3NSEJJ.js} +3 -3
  64. package/dist/{setup-config-BAZRBFN3.js → setup-config-DCCYT64I.js} +3 -3
  65. package/dist/{setup-custom-api-LSMLWGKW.js → setup-custom-api-LAP4S26A.js} +4 -4
  66. package/dist/setup-data-dir-63ZS6HOW.js +32 -0
  67. package/dist/{tool-memory-Q5UWNVN3.js → tool-memory-ZJ5DZEXH.js} +5 -5
  68. package/dist/{unified-registry-Y327PN6R.js → unified-registry-A23BBRFD.js} +10 -10
  69. package/dist/{weather-report-C2VIAC2Q.js → weather-report-IU2MQBCS.js} +2 -2
  70. package/package.json +1 -1
  71. package/dist/chunk-64IJKT4I.js.map +0 -1
  72. package/dist/chunk-FNL4J77P.js.map +0 -1
  73. package/dist/issue-triage-XVDXOZRW.js +0 -16
  74. package/dist/setup-data-dir-IZ3EANJ5.js +0 -32
  75. /package/dist/{ast-rule-runner-USLLC3XL.js.map → ast-rule-runner-57VN347L.js.map} +0 -0
  76. /package/dist/{child-mcp-config-K563PP6S.js.map → child-mcp-config-74CO7TSI.js.map} +0 -0
  77. /package/dist/{chunk-ZE73MT66.js.map → chunk-2CNDBMS2.js.map} +0 -0
  78. /package/dist/{chunk-5U4XTYAB.js.map → chunk-2FUUCJPQ.js.map} +0 -0
  79. /package/dist/{chunk-P6D7S7CY.js.map → chunk-3464EDLG.js.map} +0 -0
  80. /package/dist/{chunk-XARB7ITD.js.map → chunk-5XKDJDIP.js.map} +0 -0
  81. /package/dist/{chunk-KXFPJOPL.js.map → chunk-6ALANRN5.js.map} +0 -0
  82. /package/dist/{chunk-Q75P5CVJ.js.map → chunk-6RZ2O6T7.js.map} +0 -0
  83. /package/dist/{chunk-6K2JDJ7A.js.map → chunk-A46LARJL.js.map} +0 -0
  84. /package/dist/{chunk-KX7A23JM.js.map → chunk-AEUJWSOX.js.map} +0 -0
  85. /package/dist/{chunk-CBZAMHBA.js.map → chunk-C5VOEBIS.js.map} +0 -0
  86. /package/dist/{chunk-O73BSBJ6.js.map → chunk-DE4H5SQM.js.map} +0 -0
  87. /package/dist/{chunk-2SQO4FET.js.map → chunk-DUNJ3BGG.js.map} +0 -0
  88. /package/dist/{chunk-XWPZZEBX.js.map → chunk-FFXY3GG3.js.map} +0 -0
  89. /package/dist/{chunk-J6GIJFV4.js.map → chunk-FLFWGNMF.js.map} +0 -0
  90. /package/dist/{chunk-IXKFIO6O.js.map → chunk-FYQOXSBI.js.map} +0 -0
  91. /package/dist/{chunk-O24ENDHN.js.map → chunk-HZNZKFDU.js.map} +0 -0
  92. /package/dist/{chunk-DSVMQVJZ.js.map → chunk-IACPPUSB.js.map} +0 -0
  93. /package/dist/{chunk-NQKJYGND.js.map → chunk-KMVURF2Y.js.map} +0 -0
  94. /package/dist/{chunk-GKLTEUFU.js.map → chunk-KXHHFB7S.js.map} +0 -0
  95. /package/dist/{chunk-YPJRVA2H.js.map → chunk-L6H55UP5.js.map} +0 -0
  96. /package/dist/{chunk-YOQVGERU.js.map → chunk-LFTGWIDB.js.map} +0 -0
  97. /package/dist/{chunk-ZSFRB2S4.js.map → chunk-O23Z6TEB.js.map} +0 -0
  98. /package/dist/{chunk-NNYVXSQF.js.map → chunk-OZ6NDOR4.js.map} +0 -0
  99. /package/dist/{chunk-EVYZZL7J.js.map → chunk-POB4FPKV.js.map} +0 -0
  100. /package/dist/{chunk-OOIZ3IQD.js.map → chunk-SQNZXCVN.js.map} +0 -0
  101. /package/dist/{chunk-QCDYJYGB.js.map → chunk-T2CFH257.js.map} +0 -0
  102. /package/dist/{chunk-V66MMBO4.js.map → chunk-T2TKT7GM.js.map} +0 -0
  103. /package/dist/{chunk-S6MNVNQB.js.map → chunk-VT75JAMR.js.map} +0 -0
  104. /package/dist/{chunk-XNNNDQLK.js.map → chunk-XSN65PSX.js.map} +0 -0
  105. /package/dist/{chunk-QW6J2UV4.js.map → chunk-ZLIXVFY4.js.map} +0 -0
  106. /package/dist/{cli-circuit-breaker-4ASNTBDP.js.map → cli-circuit-breaker-7FPQIKMC.js.map} +0 -0
  107. /package/dist/{composite-router-V45AK6WD.js.map → composite-router-6CQEKTGG.js.map} +0 -0
  108. /package/dist/{consensus-vote-63FZ6VV5.js.map → consensus-vote-HS6BHA2N.js.map} +0 -0
  109. /package/dist/{context-retriever-NZOSGG6S.js.map → context-retriever-MTWSVUI4.js.map} +0 -0
  110. /package/dist/{doctor-deep-JRY3D7BP.js.map → doctor-deep-YAF6PO7D.js.map} +0 -0
  111. /package/dist/{doctor-live-NSRHMHMG.js.map → doctor-live-D4YQ2HSF.js.map} +0 -0
  112. /package/dist/{expert-bridge-Q4SEPVTE.js.map → expert-bridge-EKZ3XRAT.js.map} +0 -0
  113. /package/dist/{factory-JBK45P7G.js.map → factory-756K7DJU.js.map} +0 -0
  114. /package/dist/{factory-ZV4MR3VM.js.map → factory-GTZU7LWH.js.map} +0 -0
  115. /package/dist/{improvement-review-YM564QHQ.js.map → improvement-review-OBE25BPD.js.map} +0 -0
  116. /package/dist/{init-opencode-6WGN5J6J.js.map → init-opencode-5QA27TFA.js.map} +0 -0
  117. /package/dist/{issue-triage-XVDXOZRW.js.map → issue-triage-EHZPXKCZ.js.map} +0 -0
  118. /package/dist/{pr-reviewer-helpers-UMNMOUAO.js.map → pr-reviewer-helpers-IVLBDJKJ.js.map} +0 -0
  119. /package/dist/{registry-command-QRBAKWRK.js.map → registry-command-CBEBGBHP.js.map} +0 -0
  120. /package/dist/{repo-security-plan-UM6WX5PN.js.map → repo-security-plan-2XFHLOMA.js.map} +0 -0
  121. /package/dist/{research-helpers-synthesize-DUOVXI5V.js.map → research-helpers-synthesize-3IHB3E2T.js.map} +0 -0
  122. /package/dist/{routing-memory-OKYSDPXT.js.map → routing-memory-HV65CNTK.js.map} +0 -0
  123. /package/dist/{session-memory-ONUSRMYV.js.map → session-memory-2P3NSEJJ.js.map} +0 -0
  124. /package/dist/{setup-config-BAZRBFN3.js.map → setup-config-DCCYT64I.js.map} +0 -0
  125. /package/dist/{setup-custom-api-LSMLWGKW.js.map → setup-custom-api-LAP4S26A.js.map} +0 -0
  126. /package/dist/{setup-data-dir-IZ3EANJ5.js.map → setup-data-dir-63ZS6HOW.js.map} +0 -0
  127. /package/dist/{tool-memory-Q5UWNVN3.js.map → tool-memory-ZJ5DZEXH.js.map} +0 -0
  128. /package/dist/{unified-registry-Y327PN6R.js.map → unified-registry-A23BBRFD.js.map} +0 -0
  129. /package/dist/{weather-report-C2VIAC2Q.js.map → weather-report-IU2MQBCS.js.map} +0 -0
@@ -3,8 +3,8 @@ import {
3
3
  createCliCircuitBreakerIntegration,
4
4
  getCliCircuitBreakerSnapshot,
5
5
  getDefaultCliCircuitBreakerRegistry
6
- } from "./chunk-IXKFIO6O.js";
7
- import "./chunk-64IJKT4I.js";
6
+ } from "./chunk-FYQOXSBI.js";
7
+ import "./chunk-HFBKT7BY.js";
8
8
  import "./chunk-RQLIPUQK.js";
9
9
  import "./chunk-RNDHNRSX.js";
10
10
  import "./chunk-PX6F3LHL.js";
@@ -14,4 +14,4 @@ export {
14
14
  getCliCircuitBreakerSnapshot,
15
15
  getDefaultCliCircuitBreakerRegistry
16
16
  };
17
- //# sourceMappingURL=cli-circuit-breaker-4ASNTBDP.js.map
17
+ //# sourceMappingURL=cli-circuit-breaker-7FPQIKMC.js.map
package/dist/cli.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { C as CliNameLiteral, a6 as VoteThreshold, B as VotingStrategy, F as ErrorPolicy, a7 as NoQuorumPolicy } from './consensus-vote-types-DkRs8FbB.js';
2
+ import { C as CliNameLiteral, a6 as VoteThreshold, B as VotingStrategy, F as ErrorPolicy, a7 as NoQuorumPolicy } from './consensus-vote-types-B4FyYwSv.js';
3
3
  import { z } from 'zod';
4
4
 
5
5
  /**
package/dist/cli.js CHANGED
@@ -23,11 +23,11 @@ import {
23
23
  parseExpertReview,
24
24
  reviewPostingBlock,
25
25
  sumFindings
26
- } from "./chunk-O24ENDHN.js";
27
- import "./chunk-EVYZZL7J.js";
26
+ } from "./chunk-HZNZKFDU.js";
27
+ import "./chunk-POB4FPKV.js";
28
28
  import {
29
29
  runConfigInitSync
30
- } from "./chunk-KX7A23JM.js";
30
+ } from "./chunk-AEUJWSOX.js";
31
31
  import {
32
32
  AuthHandler,
33
33
  CustomExpertDefinitionSchema,
@@ -155,11 +155,11 @@ import {
155
155
  validateNexusEnv,
156
156
  validateWorkflow,
157
157
  wrapInMarkdownFence
158
- } from "./chunk-EYBWZHGQ.js";
159
- import "./chunk-S6MNVNQB.js";
158
+ } from "./chunk-ZQFV7CRR.js";
159
+ import "./chunk-VT75JAMR.js";
160
160
  import "./chunk-4GDMHCKX.js";
161
161
  import "./chunk-7ETWTSTB.js";
162
- import "./chunk-J6GIJFV4.js";
162
+ import "./chunk-FLFWGNMF.js";
163
163
  import {
164
164
  CATEGORY_DISPLAY_NAMES,
165
165
  DEFAULT_PR_REVIEW_CONFIG
@@ -175,11 +175,11 @@ import {
175
175
  doctorCommand,
176
176
  initDataDirectories,
177
177
  runDoctor
178
- } from "./chunk-YOQVGERU.js";
179
- import "./chunk-GKLTEUFU.js";
178
+ } from "./chunk-LFTGWIDB.js";
179
+ import "./chunk-KXHHFB7S.js";
180
180
  import {
181
181
  shutdownExpertBridge
182
- } from "./chunk-QCDYJYGB.js";
182
+ } from "./chunk-T2CFH257.js";
183
183
  import {
184
184
  ConsensusVoteInputSchema,
185
185
  DEFAULT_VOTE_TIMEOUT_MS,
@@ -197,19 +197,19 @@ import {
197
197
  registerConsensusVoteTool,
198
198
  seatFallbacks,
199
199
  toRecordDecision
200
- } from "./chunk-5FXOJYDV.js";
200
+ } from "./chunk-SFV75KOW.js";
201
201
  import {
202
202
  buildOpenAICompatAdapters,
203
203
  readOpenAICompatEndpoint,
204
204
  readOpenAICompatEnv
205
- } from "./chunk-ZE73MT66.js";
205
+ } from "./chunk-2CNDBMS2.js";
206
206
  import {
207
207
  allOf,
208
208
  anyOf
209
209
  } from "./chunk-OQB3XC5O.js";
210
210
  import {
211
211
  synthesizeResearch
212
- } from "./chunk-ZSFRB2S4.js";
212
+ } from "./chunk-O23Z6TEB.js";
213
213
  import {
214
214
  DRAFT_REPLY_BODY_MAX_LENGTH,
215
215
  configureUntrustedInputFirewall,
@@ -220,12 +220,12 @@ import {
220
220
  runUntrustedInputFirewall,
221
221
  validateActionCorroboration,
222
222
  validateAgentAction
223
- } from "./chunk-V66MMBO4.js";
224
- import "./chunk-OOIZ3IQD.js";
223
+ } from "./chunk-T2TKT7GM.js";
224
+ import "./chunk-SQNZXCVN.js";
225
225
  import {
226
226
  ReputationCache,
227
227
  sanitizeInput
228
- } from "./chunk-KXFPJOPL.js";
228
+ } from "./chunk-6ALANRN5.js";
229
229
  import {
230
230
  ImprovementReviewInputSchema,
231
231
  calculateFitnessScore,
@@ -239,7 +239,7 @@ import {
239
239
  registerImprovementReviewTool,
240
240
  runImprovementReview,
241
241
  scanForSecrets
242
- } from "./chunk-O73BSBJ6.js";
242
+ } from "./chunk-DE4H5SQM.js";
243
243
  import {
244
244
  createDefaultPolicyFirewall,
245
245
  formatPolicyRolloutMode,
@@ -249,17 +249,17 @@ import {
249
249
  setGlobalPolicyFirewall,
250
250
  setSecureHandlerAuditLogger,
251
251
  stagePolicyFirewallForRollout
252
- } from "./chunk-6K2JDJ7A.js";
252
+ } from "./chunk-A46LARJL.js";
253
253
  import {
254
254
  NODE_ENGINE_RANGE,
255
255
  VERSION,
256
256
  isNodeVersionSupported
257
- } from "./chunk-NQKJYGND.js";
257
+ } from "./chunk-KMVURF2Y.js";
258
258
  import {
259
259
  claimGlobalRegistry,
260
260
  createUnifiedRegistry,
261
261
  getGlobalRegistry
262
- } from "./chunk-DSVMQVJZ.js";
262
+ } from "./chunk-IACPPUSB.js";
263
263
  import {
264
264
  CodebaseIndexSchema,
265
265
  PaperStatusSchema,
@@ -285,7 +285,7 @@ import {
285
285
  loadSourcesRegistry,
286
286
  rankDiscoveredItems,
287
287
  saveSourcesRegistry
288
- } from "./chunk-QW6J2UV4.js";
288
+ } from "./chunk-ZLIXVFY4.js";
289
289
  import {
290
290
  getTsMorph
291
291
  } from "./chunk-W654ME6B.js";
@@ -293,21 +293,21 @@ import {
293
293
  loadPapersRegistry,
294
294
  loadTechniquesRegistry,
295
295
  savePapersRegistry
296
- } from "./chunk-P6D7S7CY.js";
296
+ } from "./chunk-3464EDLG.js";
297
297
  import {
298
298
  resolveToken
299
- } from "./chunk-5U4XTYAB.js";
299
+ } from "./chunk-2FUUCJPQ.js";
300
300
  import {
301
301
  MemoryError,
302
302
  configureToolMemory,
303
303
  shutdownToolMemory
304
- } from "./chunk-XWPZZEBX.js";
304
+ } from "./chunk-FFXY3GG3.js";
305
305
  import {
306
306
  capitalize,
307
307
  capitalizeKebab,
308
308
  truncateText
309
309
  } from "./chunk-7LP6VJRP.js";
310
- import "./chunk-2SQO4FET.js";
310
+ import "./chunk-DUNJ3BGG.js";
311
311
  import {
312
312
  BUILT_IN_EXPERTS
313
313
  } from "./chunk-AHI43IQB.js";
@@ -321,30 +321,30 @@ import {
321
321
  probeAllClis,
322
322
  readSubprocessDepth,
323
323
  safeJsonParse
324
- } from "./chunk-XARB7ITD.js";
325
- import "./chunk-FNL4J77P.js";
324
+ } from "./chunk-5XKDJDIP.js";
325
+ import "./chunk-PVEIRHM2.js";
326
326
  import {
327
327
  DEFAULTS
328
- } from "./chunk-NNYVXSQF.js";
328
+ } from "./chunk-OZ6NDOR4.js";
329
329
  import {
330
330
  hostnameOf,
331
331
  warnDeprecatedGatewayEnvOnce
332
- } from "./chunk-Q75P5CVJ.js";
332
+ } from "./chunk-6RZ2O6T7.js";
333
333
  import {
334
334
  getNexusTmpDir,
335
335
  nexusMkdtempSync
336
336
  } from "./chunk-HERI7LXN.js";
337
- import "./chunk-XNNNDQLK.js";
337
+ import "./chunk-XSN65PSX.js";
338
338
  import "./chunk-2NDA4DHW.js";
339
339
  import {
340
340
  DEFAULT_EXECUTION_MODE
341
341
  } from "./chunk-ECJ52NSK.js";
342
342
  import "./chunk-QZUG667L.js";
343
- import "./chunk-CBZAMHBA.js";
343
+ import "./chunk-C5VOEBIS.js";
344
344
  import {
345
345
  getDefaultCliCircuitBreakerRegistry,
346
346
  mapModelErrorToCategory
347
- } from "./chunk-IXKFIO6O.js";
347
+ } from "./chunk-FYQOXSBI.js";
348
348
  import {
349
349
  API_TIMEOUTS,
350
350
  AgentCapability,
@@ -437,7 +437,7 @@ import {
437
437
  validateTimeout,
438
438
  writeEmptyLine,
439
439
  writeLine
440
- } from "./chunk-64IJKT4I.js";
440
+ } from "./chunk-HFBKT7BY.js";
441
441
  import "./chunk-RQLIPUQK.js";
442
442
  import {
443
443
  applyPortableMode,
@@ -4534,7 +4534,7 @@ Provide a structured review with:
4534
4534
  * (Source: Issue #828 — Wire policy gate into production pipeline)
4535
4535
  */
4536
4536
  async postReviewToGitHub(provider, pr, result, context) {
4537
- const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-UMNMOUAO.js");
4537
+ const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-IVLBDJKJ.js");
4538
4538
  const formattedBody = formatReviewComment2(result);
4539
4539
  const body = truncateText(formattedBody, DRAFT_REPLY_BODY_MAX_LENGTH, "\u2026[review truncated]");
4540
4540
  const sources = buildReviewCitations(pr.files);
@@ -12220,7 +12220,7 @@ function probeGrammars(register, parse6, probes = GRAMMAR_PROBES) {
12220
12220
  }
12221
12221
  async function loadGrammarModules() {
12222
12222
  const [{ ensurePolyglotLangs }, napi] = await Promise.all([
12223
- import("./ast-rule-runner-USLLC3XL.js"),
12223
+ import("./ast-rule-runner-57VN347L.js"),
12224
12224
  import("@ast-grep/napi")
12225
12225
  ]);
12226
12226
  return { register: ensurePolyglotLangs, parse: napi.parse };
@@ -12243,6 +12243,8 @@ async function checkNativeGrammars(load = loadGrammarModules) {
12243
12243
  import { readFileSync as readFileSync9 } from "node:fs";
12244
12244
  import { homedir as homedir3 } from "node:os";
12245
12245
  import { join as join12 } from "node:path";
12246
+ var RETIREMENT_WARN_DAYS = 30;
12247
+ var MS_PER_DAY2 = 864e5;
12246
12248
  function resolveCodexModelsCachePath(env2 = process.env) {
12247
12249
  const home = env2["CODEX_HOME"];
12248
12250
  const codexDir = home !== void 0 && home !== "" ? home : join12(homedir3(), ".codex");
@@ -12251,6 +12253,28 @@ function resolveCodexModelsCachePath(env2 = process.env) {
12251
12253
  function isRecord2(value) {
12252
12254
  return typeof value === "object" && value !== null;
12253
12255
  }
12256
+ function parseRetirements(models) {
12257
+ return models.flatMap((row) => {
12258
+ if (!isRecord2(row)) return [];
12259
+ const slug = row["slug"];
12260
+ if (typeof slug !== "string" || slug === "") return [];
12261
+ const retirement = parseRetirement(slug, row["upgrade"]);
12262
+ return retirement === null ? [] : [retirement];
12263
+ });
12264
+ }
12265
+ function parseRetirement(slug, upgrade) {
12266
+ if (!isRecord2(upgrade)) return null;
12267
+ const at = upgrade["retirement_at"];
12268
+ if (typeof at !== "string") return null;
12269
+ const time = Date.parse(at);
12270
+ if (Number.isNaN(time)) return null;
12271
+ const model = upgrade["model"];
12272
+ return {
12273
+ slug,
12274
+ retirementAt: new Date(time).toISOString(),
12275
+ upgradeModel: typeof model === "string" && model !== "" ? model : null
12276
+ };
12277
+ }
12254
12278
  function parseServedCodexSlugs(raw) {
12255
12279
  let parsed;
12256
12280
  try {
@@ -12270,7 +12294,8 @@ function parseServedCodexSlugs(raw) {
12270
12294
  if (row["visibility"] === void 0) withoutVisibility += 1;
12271
12295
  if (row["visibility"] === "list") listed.push(slug);
12272
12296
  }
12273
- return { listed, rows, withoutVisibility };
12297
+ const retirements = parseRetirements(parsed["models"]);
12298
+ return { listed, rows, withoutVisibility, retirements };
12274
12299
  }
12275
12300
  function codexRegistryRows() {
12276
12301
  return findInTreeByCli("codex").flatMap(
@@ -12303,9 +12328,9 @@ function readServedSlugs(cachePath) {
12303
12328
  unmeasured: `${cachePath} lists ${String(parsed.rows)} model(s), none with visibility=list`
12304
12329
  };
12305
12330
  }
12306
- return { slugs: parsed.listed };
12331
+ return { slugs: parsed.listed, retirements: parsed.retirements };
12307
12332
  }
12308
- function checkCodexModels(cachePath = resolveCodexModelsCachePath(), rows = codexRegistryRows()) {
12333
+ function checkCodexModels(cachePath = resolveCodexModelsCachePath(), rows = codexRegistryRows(), now = /* @__PURE__ */ new Date()) {
12309
12334
  if (rows.length === 0) {
12310
12335
  return unmeasured("no codex entries in the registry to check");
12311
12336
  }
@@ -12316,19 +12341,82 @@ function checkCodexModels(cachePath = resolveCodexModelsCachePath(), rows = code
12316
12341
  const servedSet = new Set(read.slugs);
12317
12342
  const served = rows.filter((r) => servedSet.has(r.cliModelName));
12318
12343
  const missing = rows.filter((r) => !servedSet.has(r.cliModelName));
12344
+ const retiring = findRetiring(rows, read.retirements, now);
12345
+ const reasons = [];
12319
12346
  if (missing.length > 0) {
12320
12347
  const named = missing.map((m) => `${m.id} \u2192 ${m.cliModelName}`).join(", ");
12321
- return {
12322
- status: "warn",
12323
- served,
12324
- missing,
12325
- reason: `not served by the installed codex: ${named}`
12326
- };
12348
+ reasons.push(`not served by the installed codex: ${named}`);
12327
12349
  }
12328
- return { status: "pass", served, missing, reason: null };
12350
+ if (retiring.length > 0) {
12351
+ reasons.push(
12352
+ `retiring per the codex cache (within ${String(RETIREMENT_WARN_DAYS)} days): ${retiring.map(describeRetirement).join(", ")}`
12353
+ );
12354
+ }
12355
+ if (reasons.length > 0) {
12356
+ return { status: "warn", served, missing, retiring, reason: reasons.join("; ") };
12357
+ }
12358
+ return { status: "pass", served, missing, retiring, reason: null };
12359
+ }
12360
+ function findRetiring(rows, retirements, now) {
12361
+ const bySlug = new Map(retirements.map((r) => [r.slug, r]));
12362
+ return rows.flatMap((row) => {
12363
+ const retirement = bySlug.get(row.cliModelName);
12364
+ if (retirement === void 0) return [];
12365
+ const msLeft = Date.parse(retirement.retirementAt) - now.getTime();
12366
+ if (msLeft > RETIREMENT_WARN_DAYS * MS_PER_DAY2) return [];
12367
+ return [
12368
+ {
12369
+ ...row,
12370
+ retirementAt: retirement.retirementAt,
12371
+ upgradeModel: retirement.upgradeModel,
12372
+ // floor, not trunc: a few hours past the date is "retired", never "in 0 days".
12373
+ daysLeft: Math.floor(msLeft / MS_PER_DAY2)
12374
+ }
12375
+ ];
12376
+ });
12377
+ }
12378
+ function describeRetirement(r) {
12379
+ const date = r.retirementAt.slice(0, 10);
12380
+ const when = r.daysLeft < 0 ? `retired ${date} (${String(-r.daysLeft)} day(s) ago)` : `retires ${date} (in ${String(r.daysLeft)} day(s))`;
12381
+ const upgrade = r.upgradeModel === null ? "no upgrade model named" : `upgrade: ${r.upgradeModel}`;
12382
+ return `${r.id} \u2192 ${r.cliModelName} ${when}, ${upgrade}`;
12329
12383
  }
12330
12384
  function unmeasured(reason) {
12331
- return { status: "unmeasured", served: [], missing: [], reason };
12385
+ return { status: "unmeasured", served: [], missing: [], retiring: [], reason };
12386
+ }
12387
+ var CHECK_NAME = "Codex Models";
12388
+ function codexModelsVerifyCheck(result) {
12389
+ const servedList = `${String(result.served.length)} codex registry slug(s) served: ${result.served.map((r) => r.cliModelName).join(", ")}`;
12390
+ if (result.status === "pass") {
12391
+ return { name: CHECK_NAME, passed: true, message: servedList };
12392
+ }
12393
+ if (result.status === "warn") {
12394
+ const fixes = [];
12395
+ if (result.missing.length > 0) {
12396
+ fixes.push(
12397
+ "Refresh the codex entries in config/in-tree-data.ts against ~/.codex/models_cache.json (visibility=list)"
12398
+ );
12399
+ }
12400
+ if (result.retiring.length > 0) {
12401
+ fixes.push(
12402
+ "Move the retiring slug's registry entry (and DEFAULT_MODEL_PER_CLI.codex, if it names it) to the cache's upgrade model before the date"
12403
+ );
12404
+ }
12405
+ return {
12406
+ name: CHECK_NAME,
12407
+ passed: false,
12408
+ severity: "warn",
12409
+ message: `${result.reason ?? "codex registry slug(s) not served"}; ${servedList}`,
12410
+ fix: fixes.join("; ")
12411
+ };
12412
+ }
12413
+ return {
12414
+ name: CHECK_NAME,
12415
+ passed: false,
12416
+ severity: "warn",
12417
+ message: `unmeasured: ${result.reason ?? "codex model list unavailable"}`,
12418
+ fix: "Install codex and run it once so ~/.codex/models_cache.json exists, then re-run verify"
12419
+ };
12332
12420
  }
12333
12421
 
12334
12422
  // src/cli/verify-command.ts
@@ -12453,30 +12541,7 @@ async function checkGrammarAvailability() {
12453
12541
  };
12454
12542
  }
12455
12543
  function checkCodexModelSlugs() {
12456
- const result = checkCodexModels();
12457
- if (result.status === "pass") {
12458
- return {
12459
- name: "Codex Models",
12460
- passed: true,
12461
- message: `${String(result.served.length)} codex registry slug(s) served: ${result.served.map((r) => r.cliModelName).join(", ")}`
12462
- };
12463
- }
12464
- if (result.status === "warn") {
12465
- return {
12466
- name: "Codex Models",
12467
- passed: false,
12468
- severity: "warn",
12469
- message: result.reason ?? "codex registry slug(s) not served",
12470
- fix: "Refresh the codex entries in config/in-tree-data.ts against ~/.codex/models_cache.json (visibility=list)"
12471
- };
12472
- }
12473
- return {
12474
- name: "Codex Models",
12475
- passed: false,
12476
- severity: "warn",
12477
- message: `unmeasured: ${result.reason ?? "codex model list unavailable"}`,
12478
- fix: "Install codex and run it once so ~/.codex/models_cache.json exists, then re-run verify"
12479
- };
12544
+ return codexModelsVerifyCheck(checkCodexModels());
12480
12545
  }
12481
12546
  function checkDataDirs() {
12482
12547
  const result = checkDataDirectory();
@@ -19691,7 +19756,7 @@ function startImprovementReviewScheduler(options) {
19691
19756
  let running = false;
19692
19757
  const runOnce = async () => {
19693
19758
  try {
19694
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-YM564QHQ.js");
19759
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-OBE25BPD.js");
19695
19760
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
19696
19761
  const result = await runImprovementReview2(input, { logger: logger22 });
19697
19762
  logger22.info("Scheduled improvement_review complete", {
@@ -21985,7 +22050,7 @@ function adaptConfigToLibrary(config) {
21985
22050
  }
21986
22051
  function createBeliefPromoter() {
21987
22052
  return async (event) => {
21988
- const { getToolMemory } = await import("./tool-memory-Q5UWNVN3.js");
22053
+ const { getToolMemory } = await import("./tool-memory-ZJ5DZEXH.js");
21989
22054
  const tm = getToolMemory();
21990
22055
  await tm.recordBelief(
21991
22056
  `skill:${event.name}`,
@@ -23216,7 +23281,7 @@ async function handleResearchCommand(args) {
23216
23281
  }
23217
23282
  }
23218
23283
  async function handleRegistryCommand(args) {
23219
- const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-QRBAKWRK.js");
23284
+ const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-CBEBGBHP.js");
23220
23285
  const subcommand = args.subcommand;
23221
23286
  if (!isValidRegistrySubcommand(subcommand)) {
23222
23287
  process.stdout.write(`${formatRegistryUsage()}
@@ -23264,12 +23329,12 @@ async function handleVerifyCommand(args) {
23264
23329
  async function handleDoctorCommand(args) {
23265
23330
  const exitCode = await doctorCommand({ fix: args.options.fix });
23266
23331
  if (args.options.deep) {
23267
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-JRY3D7BP.js");
23332
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-YAF6PO7D.js");
23268
23333
  const diag = runDeepDiagnostics2();
23269
23334
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
23270
23335
  }
23271
23336
  if (args.options.live) {
23272
- const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-NSRHMHMG.js");
23337
+ const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-D4YQ2HSF.js");
23273
23338
  const report = await runLiveReadiness();
23274
23339
  process.stdout.write(formatLiveReadiness(report) + "\n");
23275
23340
  if (report.some((r) => r.levels.serves.status === "failed")) {
@@ -24002,7 +24067,7 @@ async function runInitPortableFlow(args) {
24002
24067
  return cliExit(result.success ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
24003
24068
  }
24004
24069
  async function runInitOpencodeFlow(args) {
24005
- const { runInitOpencode } = await import("./init-opencode-6WGN5J6J.js");
24070
+ const { runInitOpencode } = await import("./init-opencode-5QA27TFA.js");
24006
24071
  const opencodePath = args.options.opencode;
24007
24072
  if (opencodePath === void 0 || opencodePath === "") {
24008
24073
  process.stderr.write("Error: --opencode requires a path argument.\n");
@@ -24028,7 +24093,7 @@ async function runInitOpencodeFlow(args) {
24028
24093
  return cliExit(EXIT_CODES.SUCCESS);
24029
24094
  }
24030
24095
  async function renderOpencodeValidate(opencodePath) {
24031
- const { runOpencodeValidate } = await import("./init-opencode-6WGN5J6J.js");
24096
+ const { runOpencodeValidate } = await import("./init-opencode-5QA27TFA.js");
24032
24097
  const result = await runOpencodeValidate(opencodePath);
24033
24098
  if (!result.ok) {
24034
24099
  process.stderr.write(`init --opencode --validate: ${result.reason ?? "failed"}
@@ -24067,7 +24132,7 @@ async function handleSetupCommandAsync(args) {
24067
24132
  return cliExitFromStatus(exitCode);
24068
24133
  }
24069
24134
  async function runCustomApiSetup(args) {
24070
- const { configureCustomApi } = await import("./setup-custom-api-LSMLWGKW.js");
24135
+ const { configureCustomApi } = await import("./setup-custom-api-LAP4S26A.js");
24071
24136
  const baseUrl = args.options.customApi;
24072
24137
  if (baseUrl === void 0) return EXIT_CODES.SERVER_START_FAILED;
24073
24138
  const input = {
@@ -26850,7 +26915,7 @@ function buildEnforceReadinessEvidence(soak, reviews) {
26850
26915
  };
26851
26916
  }
26852
26917
  var SOAK_STALENESS_ALARM_DAYS = 14;
26853
- var MS_PER_DAY2 = 864e5;
26918
+ var MS_PER_DAY3 = 864e5;
26854
26919
  function assessSoakStaleness(soak, nowMs) {
26855
26920
  const base = { recordCount: soak.total, alarmAfterDays: SOAK_STALENESS_ALARM_DAYS };
26856
26921
  if (soak.total === 0) {
@@ -26859,7 +26924,7 @@ function assessSoakStaleness(soak, nowMs) {
26859
26924
  const reasons = [];
26860
26925
  if (soak.total === 1) reasons.push("flatlined at 1 record");
26861
26926
  const lastMs = soak.lastTimestamp === void 0 ? Number.NaN : Date.parse(soak.lastTimestamp);
26862
- const idleDays = Number.isNaN(lastMs) ? void 0 : Math.max(0, Math.floor((nowMs - lastMs) / MS_PER_DAY2));
26927
+ const idleDays = Number.isNaN(lastMs) ? void 0 : Math.max(0, Math.floor((nowMs - lastMs) / MS_PER_DAY3));
26863
26928
  if (idleDays === void 0) {
26864
26929
  reasons.push("last record timestamp is unreadable \u2014 idle time cannot be measured");
26865
26930
  } else if (idleDays >= SOAK_STALENESS_ALARM_DAYS) {