nexus-agents 2.109.4 → 2.110.1

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 (112) hide show
  1. package/dist/{child-mcp-config-VF736CNG.js → child-mcp-config-UMNWY25S.js} +2 -2
  2. package/dist/{chunk-YDPEK6NQ.js → chunk-2JIV7Q6A.js} +3 -3
  3. package/dist/{chunk-TJUGEDQI.js → chunk-2QBR4RVO.js} +2 -2
  4. package/dist/{chunk-LQLFZEOP.js → chunk-3DB4DEFY.js} +2 -2
  5. package/dist/{chunk-4C6M5YOH.js → chunk-3XGPHTO6.js} +2 -2
  6. package/dist/{chunk-K3UILZ5X.js → chunk-5EH7WMME.js} +2 -2
  7. package/dist/{chunk-H6Q3EPQG.js → chunk-5OOFU3EY.js} +2 -2
  8. package/dist/{chunk-4QH4IHCY.js → chunk-5P5KCVTX.js} +2 -2
  9. package/dist/{chunk-DLWY7U6K.js → chunk-AWXWDGG5.js} +2 -2
  10. package/dist/{chunk-DMUUE2S5.js → chunk-F2ULTSZ6.js} +7 -7
  11. package/dist/{chunk-LLM3HY54.js → chunk-FSODHLOV.js} +3 -3
  12. package/dist/{chunk-OLCFAA7D.js → chunk-GJ47JWNS.js} +7 -7
  13. package/dist/{chunk-VO7FEIXD.js → chunk-JRBUSUYD.js} +59 -4
  14. package/dist/chunk-JRBUSUYD.js.map +1 -0
  15. package/dist/{chunk-EAQLDAKX.js → chunk-KWHJL7HX.js} +3 -3
  16. package/dist/{chunk-SXI5ZFBR.js → chunk-LMMMFZ64.js} +2 -2
  17. package/dist/{chunk-IJZGHD7O.js → chunk-LUCPCWIZ.js} +2 -2
  18. package/dist/{chunk-3NON6THG.js → chunk-N2HYXBQ6.js} +2 -2
  19. package/dist/{chunk-5R5SYTLS.js → chunk-NCWD4UOI.js} +7 -7
  20. package/dist/{chunk-5H3YYSMY.js → chunk-P2K5GCLL.js} +4 -4
  21. package/dist/{chunk-C5OTCDF6.js → chunk-RPWYEJ66.js} +4 -4
  22. package/dist/{chunk-H47QJVMR.js → chunk-SXG2NPZP.js} +3 -3
  23. package/dist/{chunk-YKJVX56L.js → chunk-TFVXVZJT.js} +7 -7
  24. package/dist/{chunk-AESMMLSZ.js → chunk-TI2BJ2OB.js} +4 -4
  25. package/dist/{chunk-RMTFEDQV.js → chunk-TIOXPJIO.js} +2 -2
  26. package/dist/{chunk-SL23XVXX.js → chunk-U5OIIEHP.js} +5 -5
  27. package/dist/{chunk-V5UOHHOD.js → chunk-VQVKI4XO.js} +2 -2
  28. package/dist/{chunk-7PW7DTAV.js → chunk-VV47MWHN.js} +3 -3
  29. package/dist/{chunk-PFZNK25E.js → chunk-WDOJESN6.js} +2 -2
  30. package/dist/{chunk-XTJ4FU2W.js → chunk-WK4CUEF4.js} +31 -31
  31. package/dist/{chunk-RROQMZW2.js → chunk-XOKGSQIB.js} +3 -3
  32. package/dist/{chunk-UIFDDBIG.js → chunk-ZSJG7EB2.js} +2 -2
  33. package/dist/{cli-circuit-breaker-X4DTCCLH.js → cli-circuit-breaker-XB5FPZJ5.js} +4 -4
  34. package/dist/cli.js +74 -38
  35. package/dist/cli.js.map +1 -1
  36. package/dist/{composite-router-QJRU2JU5.js → composite-router-VWQ65U6B.js} +2 -2
  37. package/dist/{consensus-vote-U6JAB527.js → consensus-vote-SB2G2W6G.js} +12 -12
  38. package/dist/{context-retriever-3N7NVP57.js → context-retriever-5VFAIPHM.js} +6 -6
  39. package/dist/{doctor-deep-6DKSM74K.js → doctor-deep-RFHTNO2P.js} +3 -3
  40. package/dist/{expert-bridge-GIUSXOTJ.js → expert-bridge-LDWFPVHK.js} +4 -4
  41. package/dist/factory-AIERXI3O.js +21 -0
  42. package/dist/{factory-U23DIWPS.js → factory-IYL24RFV.js} +5 -5
  43. package/dist/{improvement-review-5DRHKSXV.js → improvement-review-GFCDFNYV.js} +4 -4
  44. package/dist/index.js +26 -26
  45. package/dist/{init-opencode-YAYDQ36A.js → init-opencode-26HTJ5QO.js} +5 -5
  46. package/dist/{issue-triage-L3MTN6RS.js → issue-triage-MVLE3SRA.js} +5 -5
  47. package/dist/{pr-reviewer-helpers-H4R57FMV.js → pr-reviewer-helpers-HXEJ437Q.js} +4 -4
  48. package/dist/{registry-command-7TVGPC43.js → registry-command-RQH4YGK5.js} +2 -2
  49. package/dist/{repo-security-plan-543K7VCE.js → repo-security-plan-SIOA64KN.js} +3 -3
  50. package/dist/{research-helpers-synthesize-4BQHGJ3O.js → research-helpers-synthesize-K43DWQVG.js} +3 -3
  51. package/dist/{routing-memory-QN3PS4SS.js → routing-memory-AEYB4NPO.js} +2 -2
  52. package/dist/{session-memory-Q3MMU45M.js → session-memory-GZOSVFDD.js} +3 -3
  53. package/dist/{setup-command-Y5IYAREF.js → setup-command-54J2SNMM.js} +11 -11
  54. package/dist/{setup-config-D6WCNU6M.js → setup-config-R7GWRUW2.js} +3 -3
  55. package/dist/{setup-custom-api-UTROX3FM.js → setup-custom-api-DXS3Y4XW.js} +3 -3
  56. package/dist/{tool-memory-H6W6KNR3.js → tool-memory-CXHXCI6Q.js} +5 -5
  57. package/dist/{weather-report-R3KUDV4W.js → weather-report-PYDBRULK.js} +2 -2
  58. package/package.json +1 -1
  59. package/dist/chunk-VO7FEIXD.js.map +0 -1
  60. package/dist/factory-U2RYH6FT.js +0 -21
  61. /package/dist/{child-mcp-config-VF736CNG.js.map → child-mcp-config-UMNWY25S.js.map} +0 -0
  62. /package/dist/{chunk-YDPEK6NQ.js.map → chunk-2JIV7Q6A.js.map} +0 -0
  63. /package/dist/{chunk-TJUGEDQI.js.map → chunk-2QBR4RVO.js.map} +0 -0
  64. /package/dist/{chunk-LQLFZEOP.js.map → chunk-3DB4DEFY.js.map} +0 -0
  65. /package/dist/{chunk-4C6M5YOH.js.map → chunk-3XGPHTO6.js.map} +0 -0
  66. /package/dist/{chunk-K3UILZ5X.js.map → chunk-5EH7WMME.js.map} +0 -0
  67. /package/dist/{chunk-H6Q3EPQG.js.map → chunk-5OOFU3EY.js.map} +0 -0
  68. /package/dist/{chunk-4QH4IHCY.js.map → chunk-5P5KCVTX.js.map} +0 -0
  69. /package/dist/{chunk-DLWY7U6K.js.map → chunk-AWXWDGG5.js.map} +0 -0
  70. /package/dist/{chunk-DMUUE2S5.js.map → chunk-F2ULTSZ6.js.map} +0 -0
  71. /package/dist/{chunk-LLM3HY54.js.map → chunk-FSODHLOV.js.map} +0 -0
  72. /package/dist/{chunk-OLCFAA7D.js.map → chunk-GJ47JWNS.js.map} +0 -0
  73. /package/dist/{chunk-EAQLDAKX.js.map → chunk-KWHJL7HX.js.map} +0 -0
  74. /package/dist/{chunk-SXI5ZFBR.js.map → chunk-LMMMFZ64.js.map} +0 -0
  75. /package/dist/{chunk-IJZGHD7O.js.map → chunk-LUCPCWIZ.js.map} +0 -0
  76. /package/dist/{chunk-3NON6THG.js.map → chunk-N2HYXBQ6.js.map} +0 -0
  77. /package/dist/{chunk-5R5SYTLS.js.map → chunk-NCWD4UOI.js.map} +0 -0
  78. /package/dist/{chunk-5H3YYSMY.js.map → chunk-P2K5GCLL.js.map} +0 -0
  79. /package/dist/{chunk-C5OTCDF6.js.map → chunk-RPWYEJ66.js.map} +0 -0
  80. /package/dist/{chunk-H47QJVMR.js.map → chunk-SXG2NPZP.js.map} +0 -0
  81. /package/dist/{chunk-YKJVX56L.js.map → chunk-TFVXVZJT.js.map} +0 -0
  82. /package/dist/{chunk-AESMMLSZ.js.map → chunk-TI2BJ2OB.js.map} +0 -0
  83. /package/dist/{chunk-RMTFEDQV.js.map → chunk-TIOXPJIO.js.map} +0 -0
  84. /package/dist/{chunk-SL23XVXX.js.map → chunk-U5OIIEHP.js.map} +0 -0
  85. /package/dist/{chunk-V5UOHHOD.js.map → chunk-VQVKI4XO.js.map} +0 -0
  86. /package/dist/{chunk-7PW7DTAV.js.map → chunk-VV47MWHN.js.map} +0 -0
  87. /package/dist/{chunk-PFZNK25E.js.map → chunk-WDOJESN6.js.map} +0 -0
  88. /package/dist/{chunk-XTJ4FU2W.js.map → chunk-WK4CUEF4.js.map} +0 -0
  89. /package/dist/{chunk-RROQMZW2.js.map → chunk-XOKGSQIB.js.map} +0 -0
  90. /package/dist/{chunk-UIFDDBIG.js.map → chunk-ZSJG7EB2.js.map} +0 -0
  91. /package/dist/{cli-circuit-breaker-X4DTCCLH.js.map → cli-circuit-breaker-XB5FPZJ5.js.map} +0 -0
  92. /package/dist/{composite-router-QJRU2JU5.js.map → composite-router-VWQ65U6B.js.map} +0 -0
  93. /package/dist/{consensus-vote-U6JAB527.js.map → consensus-vote-SB2G2W6G.js.map} +0 -0
  94. /package/dist/{context-retriever-3N7NVP57.js.map → context-retriever-5VFAIPHM.js.map} +0 -0
  95. /package/dist/{doctor-deep-6DKSM74K.js.map → doctor-deep-RFHTNO2P.js.map} +0 -0
  96. /package/dist/{expert-bridge-GIUSXOTJ.js.map → expert-bridge-LDWFPVHK.js.map} +0 -0
  97. /package/dist/{factory-U23DIWPS.js.map → factory-AIERXI3O.js.map} +0 -0
  98. /package/dist/{factory-U2RYH6FT.js.map → factory-IYL24RFV.js.map} +0 -0
  99. /package/dist/{improvement-review-5DRHKSXV.js.map → improvement-review-GFCDFNYV.js.map} +0 -0
  100. /package/dist/{init-opencode-YAYDQ36A.js.map → init-opencode-26HTJ5QO.js.map} +0 -0
  101. /package/dist/{issue-triage-L3MTN6RS.js.map → issue-triage-MVLE3SRA.js.map} +0 -0
  102. /package/dist/{pr-reviewer-helpers-H4R57FMV.js.map → pr-reviewer-helpers-HXEJ437Q.js.map} +0 -0
  103. /package/dist/{registry-command-7TVGPC43.js.map → registry-command-RQH4YGK5.js.map} +0 -0
  104. /package/dist/{repo-security-plan-543K7VCE.js.map → repo-security-plan-SIOA64KN.js.map} +0 -0
  105. /package/dist/{research-helpers-synthesize-4BQHGJ3O.js.map → research-helpers-synthesize-K43DWQVG.js.map} +0 -0
  106. /package/dist/{routing-memory-QN3PS4SS.js.map → routing-memory-AEYB4NPO.js.map} +0 -0
  107. /package/dist/{session-memory-Q3MMU45M.js.map → session-memory-GZOSVFDD.js.map} +0 -0
  108. /package/dist/{setup-command-Y5IYAREF.js.map → setup-command-54J2SNMM.js.map} +0 -0
  109. /package/dist/{setup-config-D6WCNU6M.js.map → setup-config-R7GWRUW2.js.map} +0 -0
  110. /package/dist/{setup-custom-api-UTROX3FM.js.map → setup-custom-api-DXS3Y4XW.js.map} +0 -0
  111. /package/dist/{tool-memory-H6W6KNR3.js.map → tool-memory-CXHXCI6Q.js.map} +0 -0
  112. /package/dist/{weather-report-R3KUDV4W.js.map → weather-report-PYDBRULK.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-VO7FEIXD.js";
3
+ } from "./chunk-JRBUSUYD.js";
4
4
  import "./chunk-CH7QIDHQ.js";
5
5
  import "./chunk-PR4QN5HX.js";
6
6
 
@@ -59,4 +59,4 @@ export {
59
59
  generateMcpConfig,
60
60
  getDefaultAllowedTools
61
61
  };
62
- //# sourceMappingURL=child-mcp-config-VF736CNG.js.map
62
+ //# sourceMappingURL=child-mcp-config-UMNWY25S.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenAIAdapter
3
- } from "./chunk-LLM3HY54.js";
3
+ } from "./chunk-FSODHLOV.js";
4
4
  import {
5
5
  ConfigError,
6
6
  createLogger,
@@ -9,7 +9,7 @@ import {
9
9
  getTimeProvider,
10
10
  lookupInTreeCapability,
11
11
  ok
12
- } from "./chunk-VO7FEIXD.js";
12
+ } from "./chunk-JRBUSUYD.js";
13
13
  import {
14
14
  getNexusDataDir
15
15
  } from "./chunk-CH7QIDHQ.js";
@@ -307,4 +307,4 @@ export {
307
307
  discoverModels,
308
308
  buildOpenAICompatAdapters
309
309
  };
310
- //# sourceMappingURL=chunk-YDPEK6NQ.js.map
310
+ //# sourceMappingURL=chunk-2JIV7Q6A.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  err,
4
4
  ok
5
- } from "./chunk-VO7FEIXD.js";
5
+ } from "./chunk-JRBUSUYD.js";
6
6
 
7
7
  // src/scm/token-resolver.ts
8
8
  import { execFile } from "child_process";
@@ -87,4 +87,4 @@ export {
87
87
  hasToken,
88
88
  getTokenEnvVars
89
89
  };
90
- //# sourceMappingURL=chunk-TJUGEDQI.js.map
90
+ //# sourceMappingURL=chunk-2QBR4RVO.js.map
@@ -3,7 +3,7 @@ import {
3
3
  err,
4
4
  getErrorMessage,
5
5
  ok
6
- } from "./chunk-VO7FEIXD.js";
6
+ } from "./chunk-JRBUSUYD.js";
7
7
 
8
8
  // src/scm/types.ts
9
9
  var ScmError = class extends Error {
@@ -258,4 +258,4 @@ export {
258
258
  ScmError,
259
259
  GitHubProvider
260
260
  };
261
- //# sourceMappingURL=chunk-LQLFZEOP.js.map
261
+ //# sourceMappingURL=chunk-3DB4DEFY.js.map
@@ -15,7 +15,7 @@ import {
15
15
  createLogger,
16
16
  err,
17
17
  ok
18
- } from "./chunk-VO7FEIXD.js";
18
+ } from "./chunk-JRBUSUYD.js";
19
19
 
20
20
  // src/config/defaults.ts
21
21
  var CUSTOM_API_DEFAULT_MODEL = "gpt-4o";
@@ -396,4 +396,4 @@ export {
396
396
  validateCustomApiBaseUrl,
397
397
  assertCustomApiHostResolvesPublic
398
398
  };
399
- //# sourceMappingURL=chunk-4C6M5YOH.js.map
399
+ //# sourceMappingURL=chunk-3XGPHTO6.js.map
@@ -5,7 +5,7 @@ import {
5
5
  getErrorMessage,
6
6
  getTimeProvider,
7
7
  ok
8
- } from "./chunk-VO7FEIXD.js";
8
+ } from "./chunk-JRBUSUYD.js";
9
9
 
10
10
  // src/cli-adapters/circuit-breaker-types.ts
11
11
  var CircuitErrorCode = {
@@ -372,4 +372,4 @@ export {
372
372
  mapCliErrorToCategory,
373
373
  mapModelErrorToCategory
374
374
  };
375
- //# sourceMappingURL=chunk-K3UILZ5X.js.map
375
+ //# sourceMappingURL=chunk-5EH7WMME.js.map
@@ -10,7 +10,7 @@ import {
10
10
  getTokenEstimator,
11
11
  isRateLimitLikeError,
12
12
  ok
13
- } from "./chunk-VO7FEIXD.js";
13
+ } from "./chunk-JRBUSUYD.js";
14
14
 
15
15
  // src/adapters/base-adapter.ts
16
16
  var AdapterModelError = class extends ModelError {
@@ -707,4 +707,4 @@ export {
707
707
  DEFAULT_COLLECT_STREAM_MAX_CHUNKS,
708
708
  collectStream
709
709
  };
710
- //# sourceMappingURL=chunk-H6Q3EPQG.js.map
710
+ //# sourceMappingURL=chunk-5OOFU3EY.js.map
@@ -11,7 +11,7 @@ import {
11
11
  getErrorMessage,
12
12
  getTimeProvider,
13
13
  ok
14
- } from "./chunk-VO7FEIXD.js";
14
+ } from "./chunk-JRBUSUYD.js";
15
15
  import {
16
16
  getNexusDataDir
17
17
  } from "./chunk-CH7QIDHQ.js";
@@ -2428,4 +2428,4 @@ export {
2428
2428
  getMcpAnnotations,
2429
2429
  getToolAnnotations
2430
2430
  };
2431
- //# sourceMappingURL=chunk-4QH4IHCY.js.map
2431
+ //# sourceMappingURL=chunk-5P5KCVTX.js.map
@@ -2,7 +2,7 @@ import {
2
2
  CACHE_TIMEOUTS,
3
3
  createLogger,
4
4
  getTimeProvider
5
- } from "./chunk-VO7FEIXD.js";
5
+ } from "./chunk-JRBUSUYD.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-DLWY7U6K.js.map
563
+ //# sourceMappingURL=chunk-AWXWDGG5.js.map
@@ -4,24 +4,24 @@ import {
4
4
  createStream,
5
5
  requireApiKey,
6
6
  validateApiKeyPresence
7
- } from "./chunk-H6Q3EPQG.js";
7
+ } from "./chunk-5OOFU3EY.js";
8
8
  import {
9
9
  CUSTOM_API_BASE_URL_ENV,
10
10
  CUSTOM_API_DEFAULT_MODEL,
11
11
  PROVIDER_ENV_KEYS,
12
12
  assertCustomApiHostResolvesPublic,
13
13
  validateCustomApiBaseUrl
14
- } from "./chunk-4C6M5YOH.js";
14
+ } from "./chunk-3XGPHTO6.js";
15
15
  import {
16
16
  CliCircuitBreaker,
17
17
  DEFAULT_CIRCUIT_BREAKER_CONFIG
18
- } from "./chunk-K3UILZ5X.js";
18
+ } from "./chunk-5EH7WMME.js";
19
19
  import {
20
20
  getAvailabilityCache
21
- } from "./chunk-RMTFEDQV.js";
21
+ } from "./chunk-TIOXPJIO.js";
22
22
  import {
23
23
  generateHyphenId
24
- } from "./chunk-IJZGHD7O.js";
24
+ } from "./chunk-LUCPCWIZ.js";
25
25
  import {
26
26
  CLI_SUBPROCESS_TIMEOUTS,
27
27
  CLI_TIMEOUTS,
@@ -55,7 +55,7 @@ import {
55
55
  loadModelsDevSnapshot,
56
56
  ok,
57
57
  resolveCliAlias
58
- } from "./chunk-VO7FEIXD.js";
58
+ } from "./chunk-JRBUSUYD.js";
59
59
 
60
60
  // src/cli-adapters/cli-to-model-adapter.ts
61
61
  var CliToModelAdapter = class {
@@ -4793,4 +4793,4 @@ export {
4793
4793
  SdkAdapter,
4794
4794
  createAutoAdapter
4795
4795
  };
4796
- //# sourceMappingURL=chunk-DMUUE2S5.js.map
4796
+ //# sourceMappingURL=chunk-F2ULTSZ6.js.map
@@ -3,14 +3,14 @@ import {
3
3
  createStream,
4
4
  requireApiKey,
5
5
  validateApiKeyPresence
6
- } from "./chunk-H6Q3EPQG.js";
6
+ } from "./chunk-5OOFU3EY.js";
7
7
  import {
8
8
  ModelCapability,
9
9
  err,
10
10
  getCliModelName,
11
11
  getTokenEstimator,
12
12
  ok
13
- } from "./chunk-VO7FEIXD.js";
13
+ } from "./chunk-JRBUSUYD.js";
14
14
 
15
15
  // src/adapters/openai-types.ts
16
16
  var OPENAI_MODELS = {
@@ -553,4 +553,4 @@ export {
553
553
  OpenAIAdapter,
554
554
  createOpenAIAdapter
555
555
  };
556
- //# sourceMappingURL=chunk-LLM3HY54.js.map
556
+ //# sourceMappingURL=chunk-FSODHLOV.js.map
@@ -9,20 +9,20 @@ import {
9
9
  toolSuccess,
10
10
  withProgressHeartbeat,
11
11
  wrapToolWithTimeout
12
- } from "./chunk-4QH4IHCY.js";
12
+ } from "./chunk-5P5KCVTX.js";
13
13
  import {
14
14
  getToolMemory
15
- } from "./chunk-5H3YYSMY.js";
15
+ } from "./chunk-P2K5GCLL.js";
16
16
  import {
17
17
  authRemediation,
18
18
  createAutoAdapter,
19
19
  delay,
20
20
  getAvailableClis,
21
21
  withTimeout
22
- } from "./chunk-DMUUE2S5.js";
22
+ } from "./chunk-F2ULTSZ6.js";
23
23
  import {
24
24
  mapModelErrorToCategory
25
- } from "./chunk-K3UILZ5X.js";
25
+ } from "./chunk-5EH7WMME.js";
26
26
  import {
27
27
  AgentError,
28
28
  CLI_NAMES,
@@ -57,7 +57,7 @@ import {
57
57
  registerPersistentOutcomeStoreFactory,
58
58
  resolveVoteTimeout,
59
59
  toRateLimitError
60
- } from "./chunk-VO7FEIXD.js";
60
+ } from "./chunk-JRBUSUYD.js";
61
61
  import {
62
62
  ensureLearningDir,
63
63
  getOutcomesFile,
@@ -6127,7 +6127,7 @@ async function processVotesWithCascade(engineVotes, opts) {
6127
6127
  var CONTRARIAN_ESCALATION_THRESHOLD = 0.8;
6128
6128
  async function runContrarianCheck(proposal, log) {
6129
6129
  try {
6130
- const { executeExpert } = await import("./expert-bridge-GIUSXOTJ.js");
6130
+ const { executeExpert } = await import("./expert-bridge-LDWFPVHK.js");
6131
6131
  const prompt = [
6132
6132
  "You are a contrarian analyst. Your job is to find reasons this proposal should be REJECTED.",
6133
6133
  "Look for: YAGNI (not needed), MISALIGNED (wrong tech/architecture), SECURITY_RISK, SCOPE_CREEP.",
@@ -6611,4 +6611,4 @@ export {
6611
6611
  CONSENSUS_VOTE_OUTPUT_SCHEMA,
6612
6612
  registerConsensusVoteTool
6613
6613
  };
6614
- //# sourceMappingURL=chunk-OLCFAA7D.js.map
6614
+ //# sourceMappingURL=chunk-GJ47JWNS.js.map
@@ -518,6 +518,29 @@ var TuneAdjustmentStore = class {
518
518
  adjustments = /* @__PURE__ */ new Map();
519
519
  /** Cumulative telemetry — never evicted (bounded by CLI cardinality). */
520
520
  stats = /* @__PURE__ */ new Map();
521
+ /**
522
+ * Optional reversal listener (#3323). The store stays state-only — it does
523
+ * NOT know about the audit chain. The caller (TuneStage) registers a listener
524
+ * that appends a `tune.reversal` record to the immutable log, so a routing
525
+ * restore is durably audited just like the demotion that preceded it. A
526
+ * throwing listener never corrupts store state (errors are swallowed).
527
+ */
528
+ reversalListener;
529
+ /**
530
+ * Register (or clear, with `undefined`) the reversal listener. Replaces any
531
+ * prior listener — a single sink, mirroring the singleton-store pattern.
532
+ */
533
+ onReversal(listener) {
534
+ this.reversalListener = listener;
535
+ }
536
+ /** Best-effort fire of the reversal listener — a throwing sink is swallowed. */
537
+ emitReversal(reversal) {
538
+ if (this.reversalListener === void 0) return;
539
+ try {
540
+ this.reversalListener(reversal);
541
+ } catch {
542
+ }
543
+ }
521
544
  /** Increment a CLI's cumulative demotion counter. Pure telemetry. */
522
545
  bumpStat(cli, kind, reason) {
523
546
  let stat = this.stats.get(cli);
@@ -539,15 +562,27 @@ var TuneAdjustmentStore = class {
539
562
  if (magnitude <= 0) return void 0;
540
563
  const step = Math.min(TUNE_MAX_STEP, magnitude);
541
564
  const current = this.effectiveMultiplier(cli);
565
+ const prior = this.adjustments.get(cli);
542
566
  const next = Math.max(TUNE_DEMOTION_FLOOR, current - step);
567
+ const now = getTimeProvider().now();
543
568
  const adjustment = {
544
569
  cli,
545
570
  multiplier: next,
546
- appliedAt: getTimeProvider().now(),
571
+ appliedAt: now,
547
572
  reason
548
573
  };
549
574
  this.adjustments.set(cli, adjustment);
550
575
  this.bumpStat(cli, "applied", reason);
576
+ if (prior !== void 0) {
577
+ this.emitReversal({
578
+ cli,
579
+ cause: "superseded",
580
+ previousMultiplier: current,
581
+ restoredMultiplier: next,
582
+ reason: prior.reason,
583
+ reversedAt: now
584
+ });
585
+ }
551
586
  return adjustment;
552
587
  }
553
588
  /**
@@ -570,9 +605,18 @@ var TuneAdjustmentStore = class {
570
605
  effectiveMultiplier(cli) {
571
606
  const adjustment = this.adjustments.get(cli);
572
607
  if (adjustment === void 0) return 1;
573
- const elapsed = getTimeProvider().now() - adjustment.appliedAt;
608
+ const now = getTimeProvider().now();
609
+ const elapsed = now - adjustment.appliedAt;
574
610
  if (elapsed >= TUNE_DECAY_WINDOW_MS || elapsed < 0) {
575
611
  this.adjustments.delete(cli);
612
+ this.emitReversal({
613
+ cli,
614
+ cause: "decay_expiry",
615
+ previousMultiplier: adjustment.multiplier,
616
+ restoredMultiplier: 1,
617
+ reason: adjustment.reason,
618
+ reversedAt: now
619
+ });
576
620
  return 1;
577
621
  }
578
622
  const decayFraction = elapsed / TUNE_DECAY_WINDOW_MS;
@@ -591,6 +635,17 @@ var TuneAdjustmentStore = class {
591
635
  }
592
636
  /** Remove all adjustments and telemetry. */
593
637
  clear() {
638
+ const now = getTimeProvider().now();
639
+ for (const adjustment of this.adjustments.values()) {
640
+ this.emitReversal({
641
+ cli: adjustment.cli,
642
+ cause: "cleared",
643
+ previousMultiplier: adjustment.multiplier,
644
+ restoredMultiplier: 1,
645
+ reason: adjustment.reason,
646
+ reversedAt: now
647
+ });
648
+ }
594
649
  this.adjustments.clear();
595
650
  this.stats.clear();
596
651
  }
@@ -11841,7 +11896,7 @@ var CompositeRouter = class _CompositeRouter {
11841
11896
  */
11842
11897
  async consultUnifiedContext(task) {
11843
11898
  try {
11844
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-3N7NVP57.js");
11899
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-5VFAIPHM.js");
11845
11900
  const ctx = await getContextForTask({
11846
11901
  task: task.content,
11847
11902
  category: inferTaskCategory(task.content),
@@ -13198,4 +13253,4 @@ export {
13198
13253
  ParseError,
13199
13254
  OrchestratorError
13200
13255
  };
13201
- //# sourceMappingURL=chunk-VO7FEIXD.js.map
13256
+ //# sourceMappingURL=chunk-JRBUSUYD.js.map