nexus-agents 8.7.1 → 8.8.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 (149) hide show
  1. package/dist/{ast-rule-runner-EX3ZL4BZ.js → ast-rule-runner-WANOR3MX.js} +5 -5
  2. package/dist/{child-mcp-config-25OKN6ZQ.js → child-mcp-config-N4HLLCEH.js} +5 -5
  3. package/dist/{chunk-CDZ7OWH6.js → chunk-276GRITW.js} +4 -4
  4. package/dist/{chunk-CVXYAPJB.js → chunk-3CLKYFE3.js} +74 -7
  5. package/dist/chunk-3CLKYFE3.js.map +1 -0
  6. package/dist/{chunk-JWWNTXSI.js → chunk-3XQK4MEF.js} +2 -2
  7. package/dist/{chunk-JWDVKO3Q.js → chunk-3YKFLM2B.js} +2 -2
  8. package/dist/{chunk-4WB3SB7K.js → chunk-64VMTY3M.js} +2 -2
  9. package/dist/{chunk-LRXMR353.js → chunk-6HETGJSB.js} +3 -3
  10. package/dist/{chunk-ODBLHHTP.js → chunk-6URMW3DB.js} +2 -2
  11. package/dist/{chunk-NJ66YYG5.js → chunk-7AU5WLAJ.js} +2 -2
  12. package/dist/{chunk-5I47G22O.js → chunk-7J7UYJXC.js} +7 -7
  13. package/dist/{chunk-YOEB6RVH.js → chunk-7QQ5F7T5.js} +9 -9
  14. package/dist/{chunk-ITCKXMOH.js → chunk-7WJGV5DN.js} +2 -2
  15. package/dist/{chunk-PFMNPQI7.js → chunk-AOS7F4QR.js} +2 -2
  16. package/dist/{chunk-4HXPNLZS.js → chunk-DKHBIJO4.js} +2 -2
  17. package/dist/chunk-DROYVWGE.js +7 -0
  18. package/dist/{chunk-IBGMNZWT.js → chunk-EALWAQAQ.js} +49 -16
  19. package/dist/chunk-EALWAQAQ.js.map +1 -0
  20. package/dist/{chunk-HCN3FRNG.js → chunk-ERL3XHQO.js} +54 -7
  21. package/dist/chunk-ERL3XHQO.js.map +1 -0
  22. package/dist/{chunk-YAQ6OYOI.js → chunk-F2GERNMF.js} +2 -2
  23. package/dist/{chunk-FLHLOQ5H.js → chunk-FBWOWMEB.js} +3 -3
  24. package/dist/{chunk-7NW6RNJK.js → chunk-FKKVZRSY.js} +2 -2
  25. package/dist/{chunk-O6GVBBGY.js → chunk-FUMZUCP2.js} +10 -10
  26. package/dist/{chunk-BM2QAXLR.js → chunk-GXLI2E4U.js} +4 -4
  27. package/dist/{chunk-SNNEXDCG.js → chunk-II5NJRKH.js} +2 -2
  28. package/dist/{chunk-MM223CVS.js → chunk-J7QCZRVK.js} +6 -1
  29. package/dist/{chunk-MM223CVS.js.map → chunk-J7QCZRVK.js.map} +1 -1
  30. package/dist/{chunk-JG2W7NC5.js → chunk-K2PVLCHR.js} +2 -2
  31. package/dist/{chunk-H32Z7H3Y.js → chunk-MXQG3A5W.js} +6 -6
  32. package/dist/{chunk-YAZ4CCF6.js → chunk-N347WXTT.js} +2 -2
  33. package/dist/{chunk-MBKTQ5U6.js → chunk-NEJF4F6R.js} +4 -4
  34. package/dist/{chunk-ZIRGSFK3.js → chunk-NR62IQDC.js} +6 -6
  35. package/dist/{chunk-WUC3YSW6.js → chunk-OCAMHBJ6.js} +10 -10
  36. package/dist/{chunk-6OY47Y5W.js → chunk-Q5V3KTUL.js} +2 -2
  37. package/dist/{chunk-JKNVGOQH.js → chunk-QCSXKQTK.js} +2 -2
  38. package/dist/{chunk-GK3NWFSX.js → chunk-SNSPYZQT.js} +5 -5
  39. package/dist/{chunk-THKP4RUM.js → chunk-TZWJ7QLW.js} +2 -2
  40. package/dist/{chunk-AQZSXWPJ.js → chunk-VADACTVB.js} +2 -2
  41. package/dist/{chunk-KUVHSVZT.js → chunk-VBC4JBRH.js} +5 -5
  42. package/dist/{chunk-UVUZMLEJ.js → chunk-WXU4Y5T3.js} +2 -2
  43. package/dist/{chunk-EYYICIRG.js → chunk-Z55IEIBU.js} +113 -105
  44. package/dist/{chunk-EYYICIRG.js.map → chunk-Z55IEIBU.js.map} +1 -1
  45. package/dist/{chunk-R7Z535GF.js → chunk-ZGHJMFQ6.js} +3 -3
  46. package/dist/{cli-circuit-breaker-55QP7IJF.js → cli-circuit-breaker-AAHYLFXZ.js} +5 -5
  47. package/dist/cli.js +47 -47
  48. package/dist/{composite-router-7TJ2CPZ3.js → composite-router-VAVDLJGT.js} +4 -4
  49. package/dist/{consensus-vote-73JHBSPS.js → consensus-vote-YYAWXULO.js} +21 -21
  50. package/dist/{context-retriever-TODKVXFP.js → context-retriever-MYKBBDAN.js} +11 -11
  51. package/dist/doctor-deep-AKOPPCXB.js +13 -0
  52. package/dist/{doctor-live-EZ54XOSM.js → doctor-live-3PVIYQST.js} +12 -12
  53. package/dist/{expert-bridge-H7OXGW4O.js → expert-bridge-G3KN7QWL.js} +6 -6
  54. package/dist/factory-KVMLFEWJ.js +15 -0
  55. package/dist/factory-ROTP63IZ.js +25 -0
  56. package/dist/{improvement-review-UBAMECJM.js → improvement-review-LEITEY7D.js} +8 -8
  57. package/dist/index.d.ts +61 -5
  58. package/dist/index.js +38 -36
  59. package/dist/index.js.map +1 -1
  60. package/dist/{init-opencode-G2THTE4E.js → init-opencode-C63LASGX.js} +8 -8
  61. package/dist/issue-triage-PIE3YVCV.js +17 -0
  62. package/dist/{learning-persistence-7N5SZHNX.js → learning-persistence-JK2FELZL.js} +3 -3
  63. package/dist/{pr-reviewer-helpers-TMIOHSRZ.js → pr-reviewer-helpers-4VDGMGV5.js} +6 -6
  64. package/dist/{registry-command-IPCVJL7U.js → registry-command-IRDP2L2R.js} +4 -4
  65. package/dist/{repo-security-plan-KSD46QDB.js → repo-security-plan-NS47HQEF.js} +5 -5
  66. package/dist/research-helpers-synthesize-5NBL637T.js +14 -0
  67. package/dist/{routing-memory-4BHIRI57.js → routing-memory-2IELT5GT.js} +4 -4
  68. package/dist/{session-memory-YAES7LJ3.js → session-memory-CH3CVLIT.js} +5 -5
  69. package/dist/setup-config-MKZZDUJP.js +11 -0
  70. package/dist/{setup-custom-api-JNFW5LFD.js → setup-custom-api-2I52S7XU.js} +6 -6
  71. package/dist/setup-data-dir-I6LJVAPB.js +29 -0
  72. package/dist/{tool-memory-4FCZAUV6.js → tool-memory-STS3DWOK.js} +8 -8
  73. package/dist/{tool-memory-registry-adapters-PCOYMYRF.js → tool-memory-registry-adapters-MZ5CSCYW.js} +3 -3
  74. package/dist/unified-registry-NJS4ZWC3.js +26 -0
  75. package/dist/{weather-report-XGPJTPHN.js → weather-report-YG4T4Q23.js} +4 -4
  76. package/package.json +1 -1
  77. package/dist/chunk-CVXYAPJB.js.map +0 -1
  78. package/dist/chunk-HCN3FRNG.js.map +0 -1
  79. package/dist/chunk-IBGMNZWT.js.map +0 -1
  80. package/dist/chunk-Q55BOZUM.js +0 -7
  81. package/dist/doctor-deep-EZLG3E2Q.js +0 -13
  82. package/dist/factory-B3SHAF4G.js +0 -15
  83. package/dist/factory-IOQC3B5Y.js +0 -25
  84. package/dist/issue-triage-2MSODPKO.js +0 -17
  85. package/dist/research-helpers-synthesize-I34CSJDD.js +0 -14
  86. package/dist/setup-config-SZ2NM2SE.js +0 -11
  87. package/dist/setup-data-dir-UMVVYGNX.js +0 -29
  88. package/dist/unified-registry-7GGDIT6Q.js +0 -26
  89. /package/dist/{ast-rule-runner-EX3ZL4BZ.js.map → ast-rule-runner-WANOR3MX.js.map} +0 -0
  90. /package/dist/{child-mcp-config-25OKN6ZQ.js.map → child-mcp-config-N4HLLCEH.js.map} +0 -0
  91. /package/dist/{chunk-CDZ7OWH6.js.map → chunk-276GRITW.js.map} +0 -0
  92. /package/dist/{chunk-JWWNTXSI.js.map → chunk-3XQK4MEF.js.map} +0 -0
  93. /package/dist/{chunk-JWDVKO3Q.js.map → chunk-3YKFLM2B.js.map} +0 -0
  94. /package/dist/{chunk-4WB3SB7K.js.map → chunk-64VMTY3M.js.map} +0 -0
  95. /package/dist/{chunk-LRXMR353.js.map → chunk-6HETGJSB.js.map} +0 -0
  96. /package/dist/{chunk-ODBLHHTP.js.map → chunk-6URMW3DB.js.map} +0 -0
  97. /package/dist/{chunk-NJ66YYG5.js.map → chunk-7AU5WLAJ.js.map} +0 -0
  98. /package/dist/{chunk-5I47G22O.js.map → chunk-7J7UYJXC.js.map} +0 -0
  99. /package/dist/{chunk-YOEB6RVH.js.map → chunk-7QQ5F7T5.js.map} +0 -0
  100. /package/dist/{chunk-ITCKXMOH.js.map → chunk-7WJGV5DN.js.map} +0 -0
  101. /package/dist/{chunk-PFMNPQI7.js.map → chunk-AOS7F4QR.js.map} +0 -0
  102. /package/dist/{chunk-4HXPNLZS.js.map → chunk-DKHBIJO4.js.map} +0 -0
  103. /package/dist/{chunk-Q55BOZUM.js.map → chunk-DROYVWGE.js.map} +0 -0
  104. /package/dist/{chunk-YAQ6OYOI.js.map → chunk-F2GERNMF.js.map} +0 -0
  105. /package/dist/{chunk-FLHLOQ5H.js.map → chunk-FBWOWMEB.js.map} +0 -0
  106. /package/dist/{chunk-7NW6RNJK.js.map → chunk-FKKVZRSY.js.map} +0 -0
  107. /package/dist/{chunk-O6GVBBGY.js.map → chunk-FUMZUCP2.js.map} +0 -0
  108. /package/dist/{chunk-BM2QAXLR.js.map → chunk-GXLI2E4U.js.map} +0 -0
  109. /package/dist/{chunk-SNNEXDCG.js.map → chunk-II5NJRKH.js.map} +0 -0
  110. /package/dist/{chunk-JG2W7NC5.js.map → chunk-K2PVLCHR.js.map} +0 -0
  111. /package/dist/{chunk-H32Z7H3Y.js.map → chunk-MXQG3A5W.js.map} +0 -0
  112. /package/dist/{chunk-YAZ4CCF6.js.map → chunk-N347WXTT.js.map} +0 -0
  113. /package/dist/{chunk-MBKTQ5U6.js.map → chunk-NEJF4F6R.js.map} +0 -0
  114. /package/dist/{chunk-ZIRGSFK3.js.map → chunk-NR62IQDC.js.map} +0 -0
  115. /package/dist/{chunk-WUC3YSW6.js.map → chunk-OCAMHBJ6.js.map} +0 -0
  116. /package/dist/{chunk-6OY47Y5W.js.map → chunk-Q5V3KTUL.js.map} +0 -0
  117. /package/dist/{chunk-JKNVGOQH.js.map → chunk-QCSXKQTK.js.map} +0 -0
  118. /package/dist/{chunk-GK3NWFSX.js.map → chunk-SNSPYZQT.js.map} +0 -0
  119. /package/dist/{chunk-THKP4RUM.js.map → chunk-TZWJ7QLW.js.map} +0 -0
  120. /package/dist/{chunk-AQZSXWPJ.js.map → chunk-VADACTVB.js.map} +0 -0
  121. /package/dist/{chunk-KUVHSVZT.js.map → chunk-VBC4JBRH.js.map} +0 -0
  122. /package/dist/{chunk-UVUZMLEJ.js.map → chunk-WXU4Y5T3.js.map} +0 -0
  123. /package/dist/{chunk-R7Z535GF.js.map → chunk-ZGHJMFQ6.js.map} +0 -0
  124. /package/dist/{cli-circuit-breaker-55QP7IJF.js.map → cli-circuit-breaker-AAHYLFXZ.js.map} +0 -0
  125. /package/dist/{composite-router-7TJ2CPZ3.js.map → composite-router-VAVDLJGT.js.map} +0 -0
  126. /package/dist/{consensus-vote-73JHBSPS.js.map → consensus-vote-YYAWXULO.js.map} +0 -0
  127. /package/dist/{context-retriever-TODKVXFP.js.map → context-retriever-MYKBBDAN.js.map} +0 -0
  128. /package/dist/{doctor-deep-EZLG3E2Q.js.map → doctor-deep-AKOPPCXB.js.map} +0 -0
  129. /package/dist/{doctor-live-EZ54XOSM.js.map → doctor-live-3PVIYQST.js.map} +0 -0
  130. /package/dist/{expert-bridge-H7OXGW4O.js.map → expert-bridge-G3KN7QWL.js.map} +0 -0
  131. /package/dist/{factory-B3SHAF4G.js.map → factory-KVMLFEWJ.js.map} +0 -0
  132. /package/dist/{factory-IOQC3B5Y.js.map → factory-ROTP63IZ.js.map} +0 -0
  133. /package/dist/{improvement-review-UBAMECJM.js.map → improvement-review-LEITEY7D.js.map} +0 -0
  134. /package/dist/{init-opencode-G2THTE4E.js.map → init-opencode-C63LASGX.js.map} +0 -0
  135. /package/dist/{issue-triage-2MSODPKO.js.map → issue-triage-PIE3YVCV.js.map} +0 -0
  136. /package/dist/{learning-persistence-7N5SZHNX.js.map → learning-persistence-JK2FELZL.js.map} +0 -0
  137. /package/dist/{pr-reviewer-helpers-TMIOHSRZ.js.map → pr-reviewer-helpers-4VDGMGV5.js.map} +0 -0
  138. /package/dist/{registry-command-IPCVJL7U.js.map → registry-command-IRDP2L2R.js.map} +0 -0
  139. /package/dist/{repo-security-plan-KSD46QDB.js.map → repo-security-plan-NS47HQEF.js.map} +0 -0
  140. /package/dist/{research-helpers-synthesize-I34CSJDD.js.map → research-helpers-synthesize-5NBL637T.js.map} +0 -0
  141. /package/dist/{routing-memory-4BHIRI57.js.map → routing-memory-2IELT5GT.js.map} +0 -0
  142. /package/dist/{session-memory-YAES7LJ3.js.map → session-memory-CH3CVLIT.js.map} +0 -0
  143. /package/dist/{setup-config-SZ2NM2SE.js.map → setup-config-MKZZDUJP.js.map} +0 -0
  144. /package/dist/{setup-custom-api-JNFW5LFD.js.map → setup-custom-api-2I52S7XU.js.map} +0 -0
  145. /package/dist/{setup-data-dir-UMVVYGNX.js.map → setup-data-dir-I6LJVAPB.js.map} +0 -0
  146. /package/dist/{tool-memory-4FCZAUV6.js.map → tool-memory-STS3DWOK.js.map} +0 -0
  147. /package/dist/{tool-memory-registry-adapters-PCOYMYRF.js.map → tool-memory-registry-adapters-MZ5CSCYW.js.map} +0 -0
  148. /package/dist/{unified-registry-7GGDIT6Q.js.map → unified-registry-NJS4ZWC3.js.map} +0 -0
  149. /package/dist/{weather-report-XGPJTPHN.js.map → weather-report-YG4T4Q23.js.map} +0 -0
@@ -5,13 +5,13 @@ import {
5
5
  loadTechniquesRegistry,
6
6
  resolveInsideRoot,
7
7
  savePapersRegistry
8
- } from "./chunk-CVXYAPJB.js";
8
+ } from "./chunk-3CLKYFE3.js";
9
9
  import {
10
10
  resolveToken
11
- } from "./chunk-SNNEXDCG.js";
11
+ } from "./chunk-II5NJRKH.js";
12
12
  import {
13
13
  getToolMemory
14
- } from "./chunk-ZIRGSFK3.js";
14
+ } from "./chunk-NR62IQDC.js";
15
15
  import {
16
16
  capitalizeWords,
17
17
  tokenizeFiltered,
@@ -26,25 +26,28 @@ import {
26
26
  API_TIMEOUTS,
27
27
  CLI_NAMES,
28
28
  CLI_SUBPROCESS_TIMEOUTS,
29
+ DEFAULT_DISTILLER_CONFIG,
29
30
  ErrorCode,
30
31
  JsonlStore,
31
32
  NexusError,
32
33
  StrategyDistiller,
33
34
  createLogger,
35
+ effectFor,
34
36
  err,
35
37
  getErrorMessage,
36
38
  getOutcomeStore,
37
39
  getTimeProvider,
38
40
  ok,
39
- registerPersistentDistillerFactory
40
- } from "./chunk-HCN3FRNG.js";
41
+ registerPersistentDistillerFactory,
42
+ sigmoidConfidence
43
+ } from "./chunk-ERL3XHQO.js";
41
44
  import {
42
45
  ensureLearningDir,
43
46
  getRulesFile
44
- } from "./chunk-ITCKXMOH.js";
47
+ } from "./chunk-7WJGV5DN.js";
45
48
  import {
46
49
  nexusDataPath
47
- } from "./chunk-MM223CVS.js";
50
+ } from "./chunk-J7QCZRVK.js";
48
51
 
49
52
  // src/learning/strategy-distiller-persistence.ts
50
53
  import { writeFileSync, readFileSync, renameSync, unlinkSync, existsSync } from "node:fs";
@@ -57,6 +60,11 @@ var DistilledRuleSchema = z.object({
57
60
  category: z.string(),
58
61
  action: z.enum(["penalize", "boost", "avoid"]),
59
62
  confidence: z.number(),
63
+ // Optional only for records written before #5004 finding 3, when
64
+ // `confidence` was the sigmoid alone. `hydrateRule` fills them in; a
65
+ // current-shape record always carries both.
66
+ support: z.number().optional(),
67
+ effect: z.number().optional(),
60
68
  observationCount: z.number(),
61
69
  metric: z.number(),
62
70
  status: z.enum(["draft", "active", "promoted", "expired"]),
@@ -69,6 +77,23 @@ var RulesSnapshotSchema = z.object({
69
77
  savedAt: z.string(),
70
78
  rules: z.array(DistilledRuleSchema)
71
79
  });
80
+ function hydrateRule(raw, thresholds) {
81
+ const { support, effect, ...rest } = raw;
82
+ if (support !== void 0 && effect !== void 0) {
83
+ return { rule: { ...rest, support, effect }, legacy: false };
84
+ }
85
+ const derivedSupport = support ?? sigmoidConfidence(raw.observationCount);
86
+ const derivedEffect = effect ?? effectFor(raw.patternType, raw.metric, thresholds);
87
+ return {
88
+ rule: {
89
+ ...rest,
90
+ support: derivedSupport,
91
+ effect: derivedEffect,
92
+ confidence: derivedSupport * derivedEffect
93
+ },
94
+ legacy: true
95
+ };
96
+ }
72
97
  var PersistentStrategyDistiller = class extends StrategyDistiller {
73
98
  filePath;
74
99
  persistLogger;
@@ -106,9 +131,17 @@ var PersistentStrategyDistiller = class extends StrategyDistiller {
106
131
  });
107
132
  return;
108
133
  }
109
- this.loadRules(result.data.rules);
134
+ const hydrated = result.data.rules.map((raw) => hydrateRule(raw, this.config));
135
+ const legacyIds = hydrated.filter((h) => h.legacy).map((h) => h.rule.id);
136
+ if (legacyIds.length > 0) {
137
+ this.persistLogger.debug(
138
+ "Hydrated legacy rules without support/effect; derived them under the current thresholds (#5004)",
139
+ { legacyCount: legacyIds.length, ruleIds: legacyIds, path: this.filePath }
140
+ );
141
+ }
142
+ this.loadRules(hydrated.map((h) => h.rule));
110
143
  this.persistLogger.info("Hydrated distilled rules from disk", {
111
- ruleCount: result.data.rules.length,
144
+ ruleCount: hydrated.length,
112
145
  savedAt: result.data.savedAt,
113
146
  path: this.filePath
114
147
  });
@@ -160,7 +193,7 @@ function loadPersistedRules(filePath = getRulesFile()) {
160
193
  const parsed = JSON.parse(content);
161
194
  const result = RulesSnapshotSchema.safeParse(parsed);
162
195
  if (!result.success) return [];
163
- return result.data.rules;
196
+ return result.data.rules.map((raw) => hydrateRule(raw, DEFAULT_DISTILLER_CONFIG).rule);
164
197
  } catch {
165
198
  return [];
166
199
  }
@@ -2201,10 +2234,10 @@ ${topicLines}
2201
2234
 
2202
2235
  // src/cli/research-helpers-index-ops.ts
2203
2236
  function getRegistryPath() {
2204
- return path3.resolve(process.cwd(), "docs/research/registry");
2237
+ return path3.join(getProjectRoot(), REGISTRY_PATH);
2205
2238
  }
2206
2239
  function getIndexPath() {
2207
- return path3.resolve(process.cwd(), "docs/research/RESEARCH_INDEX.md");
2240
+ return path3.join(getProjectRoot(), "docs/research/RESEARCH_INDEX.md");
2208
2241
  }
2209
2242
  async function handleStatsCommand(options) {
2210
2243
  const registryPath = getRegistryPath();
@@ -3408,7 +3441,7 @@ function buildIndex(files) {
3408
3441
 
3409
3442
  // src/context/repo-map-callsites.ts
3410
3443
  import { readFileSync as readFileSync3 } from "node:fs";
3411
- import { resolve as resolve4 } from "node:path";
3444
+ import { resolve as resolve3 } from "node:path";
3412
3445
 
3413
3446
  // src/indexer/usage-ast.ts
3414
3447
  import { extname } from "node:path";
@@ -3524,7 +3557,7 @@ var CALLSITE_TOP_N_MODULES = 25;
3524
3557
  var MAX_PROBE_SYMBOLS = 60;
3525
3558
  var MAX_CALLSITE_FILES = 4e3;
3526
3559
  function defaultSourceRoot() {
3527
- return resolve4(process.cwd(), "src");
3560
+ return resolve3(process.cwd(), "src");
3528
3561
  }
3529
3562
  function addModuleExports(mod, name, owner) {
3530
3563
  for (const file of mod.files) {
@@ -3552,7 +3585,7 @@ function collectFiles(index, sourceRoot, maxFiles) {
3552
3585
  for (const file of mod.files) {
3553
3586
  if (seen.has(file.path)) continue;
3554
3587
  seen.add(file.path);
3555
- refs.push({ abs: resolve4(sourceRoot, file.path), rel: file.path });
3588
+ refs.push({ abs: resolve3(sourceRoot, file.path), rel: file.path });
3556
3589
  if (refs.length >= maxFiles) return refs;
3557
3590
  }
3558
3591
  }
@@ -4132,4 +4165,4 @@ export {
4132
4165
  DEFAULT_CONTEXT_BUDGET_TOKENS,
4133
4166
  getContextPromptPrefix
4134
4167
  };
4135
- //# sourceMappingURL=chunk-IBGMNZWT.js.map
4168
+ //# sourceMappingURL=chunk-EALWAQAQ.js.map