nexus-agents 2.109.4 → 2.110.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 (112) hide show
  1. package/dist/{child-mcp-config-VF736CNG.js → child-mcp-config-TYLTCZUO.js} +2 -2
  2. package/dist/{chunk-IJZGHD7O.js → chunk-3LWP6ZKK.js} +2 -2
  3. package/dist/{chunk-OLCFAA7D.js → chunk-4FBT6CMN.js} +7 -7
  4. package/dist/{chunk-PFZNK25E.js → chunk-5ATA3LBW.js} +2 -2
  5. package/dist/{chunk-LLM3HY54.js → chunk-5O7Q4CTX.js} +3 -3
  6. package/dist/{chunk-H47QJVMR.js → chunk-5ZPBDKKH.js} +3 -3
  7. package/dist/{chunk-YKJVX56L.js → chunk-63QB7EAZ.js} +7 -7
  8. package/dist/{chunk-7PW7DTAV.js → chunk-72NSKBT4.js} +3 -3
  9. package/dist/{chunk-DMUUE2S5.js → chunk-AVMIPDYA.js} +7 -7
  10. package/dist/{chunk-XTJ4FU2W.js → chunk-CO4KFKUA.js} +31 -31
  11. package/dist/{chunk-LQLFZEOP.js → chunk-CTFJ2KYU.js} +2 -2
  12. package/dist/{chunk-AESMMLSZ.js → chunk-CZWH3IOK.js} +4 -4
  13. package/dist/{chunk-TJUGEDQI.js → chunk-DSAYXGUT.js} +2 -2
  14. package/dist/{chunk-VO7FEIXD.js → chunk-DV2GYXRF.js} +48 -4
  15. package/dist/chunk-DV2GYXRF.js.map +1 -0
  16. package/dist/{chunk-EAQLDAKX.js → chunk-E36RH4FR.js} +3 -3
  17. package/dist/{chunk-3NON6THG.js → chunk-ECSYPQMD.js} +2 -2
  18. package/dist/{chunk-SL23XVXX.js → chunk-G2DITSRS.js} +5 -5
  19. package/dist/{chunk-C5OTCDF6.js → chunk-J6H4H26H.js} +4 -4
  20. package/dist/{chunk-RMTFEDQV.js → chunk-KAIIFMHG.js} +2 -2
  21. package/dist/{chunk-V5UOHHOD.js → chunk-MNP53BP2.js} +2 -2
  22. package/dist/{chunk-5R5SYTLS.js → chunk-NA7Q62YX.js} +7 -7
  23. package/dist/{chunk-UIFDDBIG.js → chunk-OMMSFS7X.js} +2 -2
  24. package/dist/{chunk-DLWY7U6K.js → chunk-OU46N3BY.js} +2 -2
  25. package/dist/{chunk-RROQMZW2.js → chunk-PBL6NYJD.js} +3 -3
  26. package/dist/{chunk-K3UILZ5X.js → chunk-PPF6MTAK.js} +2 -2
  27. package/dist/{chunk-SXI5ZFBR.js → chunk-R6YBNODZ.js} +2 -2
  28. package/dist/{chunk-4C6M5YOH.js → chunk-S25SO7FM.js} +2 -2
  29. package/dist/{chunk-5H3YYSMY.js → chunk-UVDJSMVA.js} +4 -4
  30. package/dist/{chunk-H6Q3EPQG.js → chunk-V5AGCCPT.js} +2 -2
  31. package/dist/{chunk-4QH4IHCY.js → chunk-VQLPWNC7.js} +2 -2
  32. package/dist/{chunk-YDPEK6NQ.js → chunk-Z2SUNSSX.js} +3 -3
  33. package/dist/{cli-circuit-breaker-X4DTCCLH.js → cli-circuit-breaker-47MSDZQU.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-SR2ROJAC.js} +2 -2
  37. package/dist/{consensus-vote-U6JAB527.js → consensus-vote-DF6JEXIV.js} +12 -12
  38. package/dist/{context-retriever-3N7NVP57.js → context-retriever-MMKP2BML.js} +6 -6
  39. package/dist/{doctor-deep-6DKSM74K.js → doctor-deep-VYKG3WRA.js} +3 -3
  40. package/dist/{expert-bridge-GIUSXOTJ.js → expert-bridge-ZQWYGCT7.js} +4 -4
  41. package/dist/factory-CGY75LU5.js +21 -0
  42. package/dist/{factory-U23DIWPS.js → factory-EARWV65K.js} +5 -5
  43. package/dist/{improvement-review-5DRHKSXV.js → improvement-review-6I6R2RGJ.js} +4 -4
  44. package/dist/index.js +26 -26
  45. package/dist/{init-opencode-YAYDQ36A.js → init-opencode-GQMO5HD3.js} +5 -5
  46. package/dist/{issue-triage-L3MTN6RS.js → issue-triage-USCABI45.js} +5 -5
  47. package/dist/{pr-reviewer-helpers-H4R57FMV.js → pr-reviewer-helpers-J2GTXVBF.js} +4 -4
  48. package/dist/{registry-command-7TVGPC43.js → registry-command-TKQ76AVY.js} +2 -2
  49. package/dist/{repo-security-plan-543K7VCE.js → repo-security-plan-7APEOF2W.js} +3 -3
  50. package/dist/{research-helpers-synthesize-4BQHGJ3O.js → research-helpers-synthesize-KJBSOUAA.js} +3 -3
  51. package/dist/{routing-memory-QN3PS4SS.js → routing-memory-TDW4SKE2.js} +2 -2
  52. package/dist/{session-memory-Q3MMU45M.js → session-memory-VYZ5MIUU.js} +3 -3
  53. package/dist/{setup-command-Y5IYAREF.js → setup-command-XDL3EES5.js} +11 -11
  54. package/dist/{setup-config-D6WCNU6M.js → setup-config-475SXCHR.js} +3 -3
  55. package/dist/{setup-custom-api-UTROX3FM.js → setup-custom-api-4UVZTGD4.js} +3 -3
  56. package/dist/{tool-memory-H6W6KNR3.js → tool-memory-HDZTG53V.js} +5 -5
  57. package/dist/{weather-report-R3KUDV4W.js → weather-report-FBGDR6SH.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-TYLTCZUO.js.map} +0 -0
  62. /package/dist/{chunk-IJZGHD7O.js.map → chunk-3LWP6ZKK.js.map} +0 -0
  63. /package/dist/{chunk-OLCFAA7D.js.map → chunk-4FBT6CMN.js.map} +0 -0
  64. /package/dist/{chunk-PFZNK25E.js.map → chunk-5ATA3LBW.js.map} +0 -0
  65. /package/dist/{chunk-LLM3HY54.js.map → chunk-5O7Q4CTX.js.map} +0 -0
  66. /package/dist/{chunk-H47QJVMR.js.map → chunk-5ZPBDKKH.js.map} +0 -0
  67. /package/dist/{chunk-YKJVX56L.js.map → chunk-63QB7EAZ.js.map} +0 -0
  68. /package/dist/{chunk-7PW7DTAV.js.map → chunk-72NSKBT4.js.map} +0 -0
  69. /package/dist/{chunk-DMUUE2S5.js.map → chunk-AVMIPDYA.js.map} +0 -0
  70. /package/dist/{chunk-XTJ4FU2W.js.map → chunk-CO4KFKUA.js.map} +0 -0
  71. /package/dist/{chunk-LQLFZEOP.js.map → chunk-CTFJ2KYU.js.map} +0 -0
  72. /package/dist/{chunk-AESMMLSZ.js.map → chunk-CZWH3IOK.js.map} +0 -0
  73. /package/dist/{chunk-TJUGEDQI.js.map → chunk-DSAYXGUT.js.map} +0 -0
  74. /package/dist/{chunk-EAQLDAKX.js.map → chunk-E36RH4FR.js.map} +0 -0
  75. /package/dist/{chunk-3NON6THG.js.map → chunk-ECSYPQMD.js.map} +0 -0
  76. /package/dist/{chunk-SL23XVXX.js.map → chunk-G2DITSRS.js.map} +0 -0
  77. /package/dist/{chunk-C5OTCDF6.js.map → chunk-J6H4H26H.js.map} +0 -0
  78. /package/dist/{chunk-RMTFEDQV.js.map → chunk-KAIIFMHG.js.map} +0 -0
  79. /package/dist/{chunk-V5UOHHOD.js.map → chunk-MNP53BP2.js.map} +0 -0
  80. /package/dist/{chunk-5R5SYTLS.js.map → chunk-NA7Q62YX.js.map} +0 -0
  81. /package/dist/{chunk-UIFDDBIG.js.map → chunk-OMMSFS7X.js.map} +0 -0
  82. /package/dist/{chunk-DLWY7U6K.js.map → chunk-OU46N3BY.js.map} +0 -0
  83. /package/dist/{chunk-RROQMZW2.js.map → chunk-PBL6NYJD.js.map} +0 -0
  84. /package/dist/{chunk-K3UILZ5X.js.map → chunk-PPF6MTAK.js.map} +0 -0
  85. /package/dist/{chunk-SXI5ZFBR.js.map → chunk-R6YBNODZ.js.map} +0 -0
  86. /package/dist/{chunk-4C6M5YOH.js.map → chunk-S25SO7FM.js.map} +0 -0
  87. /package/dist/{chunk-5H3YYSMY.js.map → chunk-UVDJSMVA.js.map} +0 -0
  88. /package/dist/{chunk-H6Q3EPQG.js.map → chunk-V5AGCCPT.js.map} +0 -0
  89. /package/dist/{chunk-4QH4IHCY.js.map → chunk-VQLPWNC7.js.map} +0 -0
  90. /package/dist/{chunk-YDPEK6NQ.js.map → chunk-Z2SUNSSX.js.map} +0 -0
  91. /package/dist/{cli-circuit-breaker-X4DTCCLH.js.map → cli-circuit-breaker-47MSDZQU.js.map} +0 -0
  92. /package/dist/{composite-router-QJRU2JU5.js.map → composite-router-SR2ROJAC.js.map} +0 -0
  93. /package/dist/{consensus-vote-U6JAB527.js.map → consensus-vote-DF6JEXIV.js.map} +0 -0
  94. /package/dist/{context-retriever-3N7NVP57.js.map → context-retriever-MMKP2BML.js.map} +0 -0
  95. /package/dist/{doctor-deep-6DKSM74K.js.map → doctor-deep-VYKG3WRA.js.map} +0 -0
  96. /package/dist/{expert-bridge-GIUSXOTJ.js.map → expert-bridge-ZQWYGCT7.js.map} +0 -0
  97. /package/dist/{factory-U23DIWPS.js.map → factory-CGY75LU5.js.map} +0 -0
  98. /package/dist/{factory-U2RYH6FT.js.map → factory-EARWV65K.js.map} +0 -0
  99. /package/dist/{improvement-review-5DRHKSXV.js.map → improvement-review-6I6R2RGJ.js.map} +0 -0
  100. /package/dist/{init-opencode-YAYDQ36A.js.map → init-opencode-GQMO5HD3.js.map} +0 -0
  101. /package/dist/{issue-triage-L3MTN6RS.js.map → issue-triage-USCABI45.js.map} +0 -0
  102. /package/dist/{pr-reviewer-helpers-H4R57FMV.js.map → pr-reviewer-helpers-J2GTXVBF.js.map} +0 -0
  103. /package/dist/{registry-command-7TVGPC43.js.map → registry-command-TKQ76AVY.js.map} +0 -0
  104. /package/dist/{repo-security-plan-543K7VCE.js.map → repo-security-plan-7APEOF2W.js.map} +0 -0
  105. /package/dist/{research-helpers-synthesize-4BQHGJ3O.js.map → research-helpers-synthesize-KJBSOUAA.js.map} +0 -0
  106. /package/dist/{routing-memory-QN3PS4SS.js.map → routing-memory-TDW4SKE2.js.map} +0 -0
  107. /package/dist/{session-memory-Q3MMU45M.js.map → session-memory-VYZ5MIUU.js.map} +0 -0
  108. /package/dist/{setup-command-Y5IYAREF.js.map → setup-command-XDL3EES5.js.map} +0 -0
  109. /package/dist/{setup-config-D6WCNU6M.js.map → setup-config-475SXCHR.js.map} +0 -0
  110. /package/dist/{setup-custom-api-UTROX3FM.js.map → setup-custom-api-4UVZTGD4.js.map} +0 -0
  111. /package/dist/{tool-memory-H6W6KNR3.js.map → tool-memory-HDZTG53V.js.map} +0 -0
  112. /package/dist/{weather-report-R3KUDV4W.js.map → weather-report-FBGDR6SH.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-VO7FEIXD.js";
3
+ } from "./chunk-DV2GYXRF.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-TYLTCZUO.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getRandomProvider,
3
3
  getTimeProvider
4
- } from "./chunk-VO7FEIXD.js";
4
+ } from "./chunk-DV2GYXRF.js";
5
5
 
6
6
  // src/utils/id-utils.ts
7
7
  import { randomUUID } from "crypto";
@@ -24,4 +24,4 @@ export {
24
24
  generateHyphenId,
25
25
  generateUUID
26
26
  };
27
- //# sourceMappingURL=chunk-IJZGHD7O.js.map
27
+ //# sourceMappingURL=chunk-3LWP6ZKK.js.map
@@ -9,20 +9,20 @@ import {
9
9
  toolSuccess,
10
10
  withProgressHeartbeat,
11
11
  wrapToolWithTimeout
12
- } from "./chunk-4QH4IHCY.js";
12
+ } from "./chunk-VQLPWNC7.js";
13
13
  import {
14
14
  getToolMemory
15
- } from "./chunk-5H3YYSMY.js";
15
+ } from "./chunk-UVDJSMVA.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-AVMIPDYA.js";
23
23
  import {
24
24
  mapModelErrorToCategory
25
- } from "./chunk-K3UILZ5X.js";
25
+ } from "./chunk-PPF6MTAK.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-DV2GYXRF.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-ZQWYGCT7.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-4FBT6CMN.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-VO7FEIXD.js";
5
+ } from "./chunk-DV2GYXRF.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-PFZNK25E.js.map
109
+ //# sourceMappingURL=chunk-5ATA3LBW.js.map
@@ -3,14 +3,14 @@ import {
3
3
  createStream,
4
4
  requireApiKey,
5
5
  validateApiKeyPresence
6
- } from "./chunk-H6Q3EPQG.js";
6
+ } from "./chunk-V5AGCCPT.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-DV2GYXRF.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-5O7Q4CTX.js.map
@@ -2,14 +2,14 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-K3UILZ5X.js";
5
+ } from "./chunk-PPF6MTAK.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getFallbackChainForCategory,
10
10
  getTimeProvider,
11
11
  ok
12
- } from "./chunk-VO7FEIXD.js";
12
+ } from "./chunk-DV2GYXRF.js";
13
13
 
14
14
  // src/cli-adapters/cli-circuit-breaker.ts
15
15
  var CATEGORY_TO_FALLBACK = {
@@ -152,4 +152,4 @@ export {
152
152
  CliCircuitBreakerIntegration,
153
153
  createCliCircuitBreakerIntegration
154
154
  };
155
- //# sourceMappingURL=chunk-H47QJVMR.js.map
155
+ //# sourceMappingURL=chunk-5ZPBDKKH.js.map
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  createAllAdapters,
9
9
  probeCli
10
- } from "./chunk-DMUUE2S5.js";
10
+ } from "./chunk-AVMIPDYA.js";
11
11
  import {
12
12
  DEFAULTS
13
- } from "./chunk-4C6M5YOH.js";
13
+ } from "./chunk-S25SO7FM.js";
14
14
  import {
15
15
  CliNameSchema,
16
16
  DEFAULT_CAPABILITIES,
@@ -26,7 +26,7 @@ import {
26
26
  ok,
27
27
  symbols,
28
28
  writeLine
29
- } from "./chunk-VO7FEIXD.js";
29
+ } from "./chunk-DV2GYXRF.js";
30
30
  import {
31
31
  detectSandbox,
32
32
  getLearningDir,
@@ -40,7 +40,7 @@ import {
40
40
  } from "./chunk-CH7QIDHQ.js";
41
41
 
42
42
  // src/version.ts
43
- var VERSION = true ? "2.109.4" : "dev";
43
+ var VERSION = true ? "2.110.0" : "dev";
44
44
 
45
45
  // src/config/schemas-core.ts
46
46
  import { z } from "zod";
@@ -2096,7 +2096,7 @@ async function runDoctorFix(result) {
2096
2096
  writeLine2("\u2500".repeat(40));
2097
2097
  let fixCount = 0;
2098
2098
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
2099
- const { runSetup } = await import("./setup-command-Y5IYAREF.js");
2099
+ const { runSetup } = await import("./setup-command-XDL3EES5.js");
2100
2100
  const setupResult = runSetup({
2101
2101
  skipMcp: true,
2102
2102
  skipRules: true,
@@ -2110,7 +2110,7 @@ async function runDoctorFix(result) {
2110
2110
  }
2111
2111
  }
2112
2112
  if (!result.configFile.found) {
2113
- const { runConfigInitSync } = await import("./setup-config-D6WCNU6M.js");
2113
+ const { runConfigInitSync } = await import("./setup-config-475SXCHR.js");
2114
2114
  const configResult = runConfigInitSync(process.cwd(), false, false);
2115
2115
  if (configResult.success && configResult.created) {
2116
2116
  writeLine2(`\u2713 Generated config: ${configResult.path}`);
@@ -2208,4 +2208,4 @@ export {
2208
2208
  startStdioServer,
2209
2209
  closeServer
2210
2210
  };
2211
- //# sourceMappingURL=chunk-YKJVX56L.js.map
2211
+ //# sourceMappingURL=chunk-63QB7EAZ.js.map
@@ -9,11 +9,11 @@ import {
9
9
  gateWithReputation,
10
10
  resolveReputationGatingMode,
11
11
  sanitizeInput
12
- } from "./chunk-DLWY7U6K.js";
12
+ } from "./chunk-OU46N3BY.js";
13
13
  import {
14
14
  createLogger,
15
15
  getTimeProvider
16
- } from "./chunk-VO7FEIXD.js";
16
+ } from "./chunk-DV2GYXRF.js";
17
17
 
18
18
  // src/dogfooding/pr-reviewer-helpers.ts
19
19
  import { randomUUID } from "crypto";
@@ -288,4 +288,4 @@ export {
288
288
  formatReviewComment,
289
289
  createFailedReview
290
290
  };
291
- //# sourceMappingURL=chunk-7PW7DTAV.js.map
291
+ //# sourceMappingURL=chunk-72NSKBT4.js.map
@@ -4,24 +4,24 @@ import {
4
4
  createStream,
5
5
  requireApiKey,
6
6
  validateApiKeyPresence
7
- } from "./chunk-H6Q3EPQG.js";
7
+ } from "./chunk-V5AGCCPT.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-S25SO7FM.js";
15
15
  import {
16
16
  CliCircuitBreaker,
17
17
  DEFAULT_CIRCUIT_BREAKER_CONFIG
18
- } from "./chunk-K3UILZ5X.js";
18
+ } from "./chunk-PPF6MTAK.js";
19
19
  import {
20
20
  getAvailabilityCache
21
- } from "./chunk-RMTFEDQV.js";
21
+ } from "./chunk-KAIIFMHG.js";
22
22
  import {
23
23
  generateHyphenId
24
- } from "./chunk-IJZGHD7O.js";
24
+ } from "./chunk-3LWP6ZKK.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-DV2GYXRF.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-AVMIPDYA.js.map
@@ -6,10 +6,10 @@ import {
6
6
  import {
7
7
  getTokenEnvVars,
8
8
  resolveToken
9
- } from "./chunk-TJUGEDQI.js";
9
+ } from "./chunk-DSAYXGUT.js";
10
10
  import {
11
11
  executeExpert
12
- } from "./chunk-5R5SYTLS.js";
12
+ } from "./chunk-NA7Q62YX.js";
13
13
  import {
14
14
  EventTopics,
15
15
  JobStatusSchema,
@@ -30,7 +30,7 @@ import {
30
30
  writeJobComplete,
31
31
  writeJobFailed,
32
32
  writeJobPending
33
- } from "./chunk-OLCFAA7D.js";
33
+ } from "./chunk-4FBT6CMN.js";
34
34
  import {
35
35
  REGISTRY_PATH,
36
36
  getProjectRoot,
@@ -39,19 +39,19 @@ import {
39
39
  normalizeTopicToCanonical,
40
40
  savePapersRegistry,
41
41
  synthesizeResearch
42
- } from "./chunk-UIFDDBIG.js";
42
+ } from "./chunk-OMMSFS7X.js";
43
43
  import {
44
44
  IssueTriage,
45
45
  createAuditTrail,
46
46
  createGraphAuditBridge
47
- } from "./chunk-C5OTCDF6.js";
47
+ } from "./chunk-J6H4H26H.js";
48
48
  import {
49
49
  resolveEnvMode,
50
50
  sanitizeInput
51
- } from "./chunk-DLWY7U6K.js";
51
+ } from "./chunk-OU46N3BY.js";
52
52
  import {
53
53
  withPrerequisite
54
- } from "./chunk-RROQMZW2.js";
54
+ } from "./chunk-PBL6NYJD.js";
55
55
  import {
56
56
  NOOP_NOTIFIER,
57
57
  RateLimiter,
@@ -71,10 +71,10 @@ import {
71
71
  withAccessPolicy,
72
72
  withProgressHeartbeat,
73
73
  wrapToolWithTimeout
74
- } from "./chunk-4QH4IHCY.js";
74
+ } from "./chunk-VQLPWNC7.js";
75
75
  import {
76
76
  generateSecurityPlan
77
- } from "./chunk-SXI5ZFBR.js";
77
+ } from "./chunk-R6YBNODZ.js";
78
78
  import {
79
79
  analyzeGitHubRepo
80
80
  } from "./chunk-HFOQKCD2.js";
@@ -82,18 +82,18 @@ import {
82
82
  getContextForTask,
83
83
  inferTaskCategory,
84
84
  summarizeContextForPrompt
85
- } from "./chunk-EAQLDAKX.js";
85
+ } from "./chunk-E36RH4FR.js";
86
86
  import {
87
87
  DEFAULT_RELEVANCE_CONFIG,
88
88
  MemoryImportance,
89
89
  calculateTextJaccardSimilarity,
90
90
  getToolMemory
91
- } from "./chunk-5H3YYSMY.js";
91
+ } from "./chunk-UVDJSMVA.js";
92
92
  import {
93
93
  DEFAULT_TASK_TTL_MS,
94
94
  DEFAULT_TOOL_RATE_LIMITS,
95
95
  clampTaskTtl
96
- } from "./chunk-YKJVX56L.js";
96
+ } from "./chunk-63QB7EAZ.js";
97
97
  import {
98
98
  resolveInsideRoot
99
99
  } from "./chunk-NUBSJGQZ.js";
@@ -109,19 +109,19 @@ import {
109
109
  getAvailableClis,
110
110
  sleep,
111
111
  withTimeout
112
- } from "./chunk-DMUUE2S5.js";
112
+ } from "./chunk-AVMIPDYA.js";
113
113
  import {
114
114
  DEFAULTS
115
- } from "./chunk-4C6M5YOH.js";
115
+ } from "./chunk-S25SO7FM.js";
116
116
  import {
117
117
  getAvailabilityCache,
118
118
  getCliForModelId,
119
119
  resolveFallback
120
- } from "./chunk-RMTFEDQV.js";
120
+ } from "./chunk-KAIIFMHG.js";
121
121
  import {
122
122
  generateHyphenId,
123
123
  generateUUID
124
- } from "./chunk-IJZGHD7O.js";
124
+ } from "./chunk-3LWP6ZKK.js";
125
125
  import {
126
126
  BUILT_IN_EXPERTS,
127
127
  BuiltInExpertTypeSchema,
@@ -133,7 +133,7 @@ import {
133
133
  } from "./chunk-PQHVC4BD.js";
134
134
  import {
135
135
  createSessionMemory
136
- } from "./chunk-3NON6THG.js";
136
+ } from "./chunk-ECSYPQMD.js";
137
137
  import {
138
138
  AGENT_ROUTER_TIMEOUTS,
139
139
  API_TIMEOUTS,
@@ -208,7 +208,7 @@ import {
208
208
  routingArmDisplaySlot,
209
209
  toExpertTaskAnalysisResult,
210
210
  withStep
211
- } from "./chunk-VO7FEIXD.js";
211
+ } from "./chunk-DV2GYXRF.js";
212
212
  import {
213
213
  nexusDataPath,
214
214
  nexusDataPathEnsure
@@ -27066,7 +27066,7 @@ async function populateUnifiedContextOnState(state) {
27066
27066
  try {
27067
27067
  const taskCandidate = state["task"];
27068
27068
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
27069
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-3N7NVP57.js");
27069
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-MMKP2BML.js");
27070
27070
  const ctx = await getContextForTask2({
27071
27071
  task: taskCandidate,
27072
27072
  category: inferTaskCategory2(taskCandidate),
@@ -42831,7 +42831,7 @@ async function tryIssueTriage(task) {
42831
42831
  try {
42832
42832
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
42833
42833
  if (issueMatch === null) return null;
42834
- const { createIssueTriage } = await import("./issue-triage-L3MTN6RS.js");
42834
+ const { createIssueTriage } = await import("./issue-triage-USCABI45.js");
42835
42835
  const triage = createIssueTriage();
42836
42836
  const owner = issueMatch[1] ?? "";
42837
42837
  const num = issueMatch[2] ?? "";
@@ -42859,7 +42859,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
42859
42859
  ]);
42860
42860
  async function classifyWithLLM(task) {
42861
42861
  try {
42862
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-GIUSXOTJ.js");
42862
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-ZQWYGCT7.js");
42863
42863
  const prompt = [
42864
42864
  "Classify this task into exactly one pipeline template.",
42865
42865
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -43779,7 +43779,7 @@ var memoryInitPromise = null;
43779
43779
  async function initPipelineMemory() {
43780
43780
  if (cachedMemory !== null) return cachedMemory;
43781
43781
  try {
43782
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-Q3MMU45M.js");
43782
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-VYZ5MIUU.js");
43783
43783
  const { getLearningDir } = await import("./learning-persistence-UKPO7RYK.js");
43784
43784
  const mem = createSessionMemory2(getLearningDir());
43785
43785
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -43836,7 +43836,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0)
43836
43836
  callRecord(routingMemoryCache);
43837
43837
  return;
43838
43838
  }
43839
- routingMemoryInitPromise ??= import("./routing-memory-QN3PS4SS.js").then(({ createRoutingMemory }) => {
43839
+ routingMemoryInitPromise ??= import("./routing-memory-TDW4SKE2.js").then(({ createRoutingMemory }) => {
43840
43840
  routingMemoryCache ??= createRoutingMemory();
43841
43841
  return routingMemoryCache;
43842
43842
  }).catch((error) => {
@@ -43870,7 +43870,7 @@ ${text}` : "";
43870
43870
  }
43871
43871
  async function getWeatherContext() {
43872
43872
  try {
43873
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-R3KUDV4W.js");
43873
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-FBGDR6SH.js");
43874
43874
  const report = generateWeatherReport2({ includeAdaptive: true });
43875
43875
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
43876
43876
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -43888,7 +43888,7 @@ ${lines}
43888
43888
  }
43889
43889
  async function getMemoryContext(task) {
43890
43890
  try {
43891
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-Q3MMU45M.js");
43891
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-VYZ5MIUU.js");
43892
43892
  const { getLearningDir } = await import("./learning-persistence-UKPO7RYK.js");
43893
43893
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
43894
43894
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -43999,7 +43999,7 @@ ${contextBlock}`;
43999
43999
  const strategy = config.votingStrategy ?? "higher_order";
44000
44000
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
44001
44001
  try {
44002
- const { executeVoting } = await import("./consensus-vote-U6JAB527.js");
44002
+ const { executeVoting } = await import("./consensus-vote-DF6JEXIV.js");
44003
44003
  const votingResult = await executeVoting(
44004
44004
  {
44005
44005
  proposal: buildVoteProposal(plan, research),
@@ -44997,7 +44997,7 @@ async function searchCodebaseForTask(task) {
44997
44997
  }
44998
44998
  async function queryResearchRegistry(task) {
44999
44999
  try {
45000
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-4BQHGJ3O.js");
45000
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-KJBSOUAA.js");
45001
45001
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
45002
45002
  if (topic === void 0) return null;
45003
45003
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -45068,7 +45068,7 @@ function createScanStageWrapper() {
45068
45068
  try {
45069
45069
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
45070
45070
  if (slug !== void 0) {
45071
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-543K7VCE.js");
45071
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-7APEOF2W.js");
45072
45072
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
45073
45073
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
45074
45074
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -46594,7 +46594,7 @@ async function probeSource(source, includeModelIds) {
46594
46594
  }
46595
46595
  }
46596
46596
  async function defaultSources(includeOpenRouter) {
46597
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-U2RYH6FT.js");
46597
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-CGY75LU5.js");
46598
46598
  const adapters = createAllAdapters2();
46599
46599
  return buildDefaultModelSources(adapters, { includeOpenRouter });
46600
46600
  }
@@ -50209,7 +50209,7 @@ var GitHubTaskTracker = class {
50209
50209
  cachedProvider = null;
50210
50210
  async getProvider() {
50211
50211
  if (this.cachedProvider !== null) return this.cachedProvider;
50212
- const { createScmProvider } = await import("./factory-U23DIWPS.js");
50212
+ const { createScmProvider } = await import("./factory-EARWV65K.js");
50213
50213
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
50214
50214
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
50215
50215
  this.cachedProvider = result.value;
@@ -50920,4 +50920,4 @@ export {
50920
50920
  detectBackend,
50921
50921
  createTaskTracker
50922
50922
  };
50923
- //# sourceMappingURL=chunk-XTJ4FU2W.js.map
50923
+ //# sourceMappingURL=chunk-CO4KFKUA.js.map
@@ -3,7 +3,7 @@ import {
3
3
  err,
4
4
  getErrorMessage,
5
5
  ok
6
- } from "./chunk-VO7FEIXD.js";
6
+ } from "./chunk-DV2GYXRF.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-CTFJ2KYU.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  resolveToken
3
- } from "./chunk-TJUGEDQI.js";
3
+ } from "./chunk-DSAYXGUT.js";
4
4
  import {
5
5
  GitHubProvider,
6
6
  ScmError
7
- } from "./chunk-LQLFZEOP.js";
7
+ } from "./chunk-CTFJ2KYU.js";
8
8
  import {
9
9
  err,
10
10
  ok
11
- } from "./chunk-VO7FEIXD.js";
11
+ } from "./chunk-DV2GYXRF.js";
12
12
 
13
13
  // src/scm/factory.ts
14
14
  async function createScmProvider(config) {
@@ -41,4 +41,4 @@ export {
41
41
  createScmProvider,
42
42
  createGitHubProvider
43
43
  };
44
- //# sourceMappingURL=chunk-AESMMLSZ.js.map
44
+ //# sourceMappingURL=chunk-CZWH3IOK.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  err,
4
4
  ok
5
- } from "./chunk-VO7FEIXD.js";
5
+ } from "./chunk-DV2GYXRF.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-DSAYXGUT.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;
@@ -11841,7 +11885,7 @@ var CompositeRouter = class _CompositeRouter {
11841
11885
  */
11842
11886
  async consultUnifiedContext(task) {
11843
11887
  try {
11844
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-3N7NVP57.js");
11888
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-MMKP2BML.js");
11845
11889
  const ctx = await getContextForTask({
11846
11890
  task: task.content,
11847
11891
  category: inferTaskCategory(task.content),
@@ -13198,4 +13242,4 @@ export {
13198
13242
  ParseError,
13199
13243
  OrchestratorError
13200
13244
  };
13201
- //# sourceMappingURL=chunk-VO7FEIXD.js.map
13245
+ //# sourceMappingURL=chunk-DV2GYXRF.js.map