nexus-agents 2.89.1 → 2.89.2

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 (101) hide show
  1. package/dist/{child-mcp-config-AT2L3EAS.js → child-mcp-config-WUHKXBWX.js} +2 -2
  2. package/dist/{chunk-JHU27PB2.js → chunk-2SMTCNXP.js} +2 -2
  3. package/dist/{chunk-O5F6QAIG.js → chunk-3FVSYMHK.js} +2 -2
  4. package/dist/{chunk-SRTQUTCB.js → chunk-3HTUYAKS.js} +2 -2
  5. package/dist/{chunk-LENO7TKE.js → chunk-3LKW4IEW.js} +3 -3
  6. package/dist/{chunk-RAUA6B2M.js → chunk-44XYCZCU.js} +27 -27
  7. package/dist/{chunk-W7YR5SGV.js → chunk-4GOT42ZA.js} +3 -3
  8. package/dist/{chunk-7QTWFRHH.js → chunk-4N54BTZU.js} +9 -9
  9. package/dist/{chunk-F5GVZBSH.js → chunk-52ACUN6T.js} +4 -4
  10. package/dist/{chunk-WF2YOYY7.js → chunk-57HMLBYN.js} +2 -2
  11. package/dist/{chunk-MXHJMSYQ.js → chunk-5X7GAOVZ.js} +7 -7
  12. package/dist/{chunk-PS7WKRJN.js → chunk-6Q33PBXC.js} +2 -2
  13. package/dist/{chunk-SI7ZBCGU.js → chunk-7QXEK3O6.js} +56 -6
  14. package/dist/{chunk-SI7ZBCGU.js.map → chunk-7QXEK3O6.js.map} +1 -1
  15. package/dist/{chunk-LZECDSJY.js → chunk-AQTHLUCP.js} +2 -2
  16. package/dist/{chunk-KR6UR263.js → chunk-CGSVTROC.js} +2 -2
  17. package/dist/{chunk-3MYPFPYL.js → chunk-E6W4Z6GN.js} +3 -3
  18. package/dist/{chunk-QCZEC7H4.js → chunk-EAT4GTMT.js} +2 -2
  19. package/dist/{chunk-XV7V3B35.js → chunk-EFHZHCF2.js} +2 -2
  20. package/dist/{chunk-O5OJNB4C.js → chunk-IOXR6W24.js} +3 -3
  21. package/dist/{chunk-AKO5H63G.js → chunk-JYIKPBXW.js} +2 -2
  22. package/dist/{chunk-WWY6V4NK.js → chunk-PRGNJRID.js} +2 -2
  23. package/dist/{chunk-EUMVRLJL.js → chunk-S6FXRXYE.js} +7 -7
  24. package/dist/{chunk-DAWLXCLF.js → chunk-SCZOD5XC.js} +5 -5
  25. package/dist/{chunk-MHPOJAPZ.js → chunk-SFZESA5O.js} +2 -2
  26. package/dist/{chunk-GRTSPRIJ.js → chunk-TWAH7VM2.js} +3 -3
  27. package/dist/{chunk-MVGFF4OY.js → chunk-W5I6L4UT.js} +7 -3
  28. package/dist/{chunk-MVGFF4OY.js.map → chunk-W5I6L4UT.js.map} +1 -1
  29. package/dist/{chunk-MKKQ3CQJ.js → chunk-X5BQF6HM.js} +4 -4
  30. package/dist/{chunk-TSHCHZ7R.js → chunk-Y7E5ZWRQ.js} +2 -2
  31. package/dist/{chunk-UISGEXHO.js → chunk-YEQE7WLP.js} +2 -2
  32. package/dist/{cli-circuit-breaker-4EBP4C4R.js → cli-circuit-breaker-4SWB6DEB.js} +4 -4
  33. package/dist/cli.js +33 -33
  34. package/dist/{composite-router-INIE4UYA.js → composite-router-NLVKSTA2.js} +2 -2
  35. package/dist/{consensus-vote-5NIBODVH.js → consensus-vote-B6W7YQ6K.js} +12 -12
  36. package/dist/{context-retriever-OBGV7Y2U.js → context-retriever-C4CNVKR5.js} +6 -6
  37. package/dist/{doctor-deep-F24MXACR.js → doctor-deep-QSVGAHAO.js} +3 -3
  38. package/dist/{expert-bridge-6KWMO2HT.js → expert-bridge-VIWFPPGZ.js} +4 -4
  39. package/dist/{factory-4RSAV4FC.js → factory-NNSXCD25.js} +5 -5
  40. package/dist/{factory-TA7GM2O2.js → factory-T3SEZUGW.js} +5 -5
  41. package/dist/index.js +25 -25
  42. package/dist/{init-opencode-VQFYKCIT.js → init-opencode-WEKHD7YE.js} +5 -5
  43. package/dist/{issue-triage-U3PSWSCY.js → issue-triage-IJGC3VZJ.js} +4 -4
  44. package/dist/{registry-command-2D4RMNUX.js → registry-command-VNFULRTL.js} +2 -2
  45. package/dist/{repo-security-plan-WOUJAXSZ.js → repo-security-plan-5MFY7GGQ.js} +3 -3
  46. package/dist/{research-helpers-synthesize-IDK2V5JN.js → research-helpers-synthesize-CNZ4C3FN.js} +3 -3
  47. package/dist/{routing-memory-XBYTU4KZ.js → routing-memory-PYO46COZ.js} +2 -2
  48. package/dist/{session-memory-FSLRKYIC.js → session-memory-HGCDSZ5R.js} +3 -3
  49. package/dist/{setup-command-IRBQGUWR.js → setup-command-MXUNSSNJ.js} +11 -11
  50. package/dist/{setup-config-7MK6PRX6.js → setup-config-QPS4K5QU.js} +3 -3
  51. package/dist/{setup-custom-api-W6FWQVAF.js → setup-custom-api-SP2ZAVGC.js} +4 -4
  52. package/dist/{tool-memory-VJZ233FE.js → tool-memory-SDPIAV2S.js} +5 -5
  53. package/dist/{weather-report-YLD3VXUC.js → weather-report-RWAMQHBL.js} +2 -2
  54. package/package.json +1 -1
  55. /package/dist/{child-mcp-config-AT2L3EAS.js.map → child-mcp-config-WUHKXBWX.js.map} +0 -0
  56. /package/dist/{chunk-JHU27PB2.js.map → chunk-2SMTCNXP.js.map} +0 -0
  57. /package/dist/{chunk-O5F6QAIG.js.map → chunk-3FVSYMHK.js.map} +0 -0
  58. /package/dist/{chunk-SRTQUTCB.js.map → chunk-3HTUYAKS.js.map} +0 -0
  59. /package/dist/{chunk-LENO7TKE.js.map → chunk-3LKW4IEW.js.map} +0 -0
  60. /package/dist/{chunk-RAUA6B2M.js.map → chunk-44XYCZCU.js.map} +0 -0
  61. /package/dist/{chunk-W7YR5SGV.js.map → chunk-4GOT42ZA.js.map} +0 -0
  62. /package/dist/{chunk-7QTWFRHH.js.map → chunk-4N54BTZU.js.map} +0 -0
  63. /package/dist/{chunk-F5GVZBSH.js.map → chunk-52ACUN6T.js.map} +0 -0
  64. /package/dist/{chunk-WF2YOYY7.js.map → chunk-57HMLBYN.js.map} +0 -0
  65. /package/dist/{chunk-MXHJMSYQ.js.map → chunk-5X7GAOVZ.js.map} +0 -0
  66. /package/dist/{chunk-PS7WKRJN.js.map → chunk-6Q33PBXC.js.map} +0 -0
  67. /package/dist/{chunk-LZECDSJY.js.map → chunk-AQTHLUCP.js.map} +0 -0
  68. /package/dist/{chunk-KR6UR263.js.map → chunk-CGSVTROC.js.map} +0 -0
  69. /package/dist/{chunk-3MYPFPYL.js.map → chunk-E6W4Z6GN.js.map} +0 -0
  70. /package/dist/{chunk-QCZEC7H4.js.map → chunk-EAT4GTMT.js.map} +0 -0
  71. /package/dist/{chunk-XV7V3B35.js.map → chunk-EFHZHCF2.js.map} +0 -0
  72. /package/dist/{chunk-O5OJNB4C.js.map → chunk-IOXR6W24.js.map} +0 -0
  73. /package/dist/{chunk-AKO5H63G.js.map → chunk-JYIKPBXW.js.map} +0 -0
  74. /package/dist/{chunk-WWY6V4NK.js.map → chunk-PRGNJRID.js.map} +0 -0
  75. /package/dist/{chunk-EUMVRLJL.js.map → chunk-S6FXRXYE.js.map} +0 -0
  76. /package/dist/{chunk-DAWLXCLF.js.map → chunk-SCZOD5XC.js.map} +0 -0
  77. /package/dist/{chunk-MHPOJAPZ.js.map → chunk-SFZESA5O.js.map} +0 -0
  78. /package/dist/{chunk-GRTSPRIJ.js.map → chunk-TWAH7VM2.js.map} +0 -0
  79. /package/dist/{chunk-MKKQ3CQJ.js.map → chunk-X5BQF6HM.js.map} +0 -0
  80. /package/dist/{chunk-TSHCHZ7R.js.map → chunk-Y7E5ZWRQ.js.map} +0 -0
  81. /package/dist/{chunk-UISGEXHO.js.map → chunk-YEQE7WLP.js.map} +0 -0
  82. /package/dist/{cli-circuit-breaker-4EBP4C4R.js.map → cli-circuit-breaker-4SWB6DEB.js.map} +0 -0
  83. /package/dist/{composite-router-INIE4UYA.js.map → composite-router-NLVKSTA2.js.map} +0 -0
  84. /package/dist/{consensus-vote-5NIBODVH.js.map → consensus-vote-B6W7YQ6K.js.map} +0 -0
  85. /package/dist/{context-retriever-OBGV7Y2U.js.map → context-retriever-C4CNVKR5.js.map} +0 -0
  86. /package/dist/{doctor-deep-F24MXACR.js.map → doctor-deep-QSVGAHAO.js.map} +0 -0
  87. /package/dist/{expert-bridge-6KWMO2HT.js.map → expert-bridge-VIWFPPGZ.js.map} +0 -0
  88. /package/dist/{factory-4RSAV4FC.js.map → factory-NNSXCD25.js.map} +0 -0
  89. /package/dist/{factory-TA7GM2O2.js.map → factory-T3SEZUGW.js.map} +0 -0
  90. /package/dist/{init-opencode-VQFYKCIT.js.map → init-opencode-WEKHD7YE.js.map} +0 -0
  91. /package/dist/{issue-triage-U3PSWSCY.js.map → issue-triage-IJGC3VZJ.js.map} +0 -0
  92. /package/dist/{registry-command-2D4RMNUX.js.map → registry-command-VNFULRTL.js.map} +0 -0
  93. /package/dist/{repo-security-plan-WOUJAXSZ.js.map → repo-security-plan-5MFY7GGQ.js.map} +0 -0
  94. /package/dist/{research-helpers-synthesize-IDK2V5JN.js.map → research-helpers-synthesize-CNZ4C3FN.js.map} +0 -0
  95. /package/dist/{routing-memory-XBYTU4KZ.js.map → routing-memory-PYO46COZ.js.map} +0 -0
  96. /package/dist/{session-memory-FSLRKYIC.js.map → session-memory-HGCDSZ5R.js.map} +0 -0
  97. /package/dist/{setup-command-IRBQGUWR.js.map → setup-command-MXUNSSNJ.js.map} +0 -0
  98. /package/dist/{setup-config-7MK6PRX6.js.map → setup-config-QPS4K5QU.js.map} +0 -0
  99. /package/dist/{setup-custom-api-W6FWQVAF.js.map → setup-custom-api-SP2ZAVGC.js.map} +0 -0
  100. /package/dist/{tool-memory-VJZ233FE.js.map → tool-memory-SDPIAV2S.js.map} +0 -0
  101. /package/dist/{weather-report-YLD3VXUC.js.map → weather-report-RWAMQHBL.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-MVGFF4OY.js";
3
+ } from "./chunk-W5I6L4UT.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-AT2L3EAS.js.map
62
+ //# sourceMappingURL=child-mcp-config-WUHKXBWX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-MVGFF4OY.js";
3
+ } from "./chunk-W5I6L4UT.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
77
77
  export {
78
78
  runConfigInitSync
79
79
  };
80
- //# sourceMappingURL=chunk-JHU27PB2.js.map
80
+ //# sourceMappingURL=chunk-2SMTCNXP.js.map
@@ -10,7 +10,7 @@ import {
10
10
  getTokenEstimator,
11
11
  isRateLimitLikeError,
12
12
  ok
13
- } from "./chunk-MVGFF4OY.js";
13
+ } from "./chunk-W5I6L4UT.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-O5F6QAIG.js.map
710
+ //# sourceMappingURL=chunk-3FVSYMHK.js.map
@@ -5,7 +5,7 @@ import {
5
5
  MCP_TIMEOUTS,
6
6
  TEST_TIMEOUTS,
7
7
  WORKFLOW_TIMEOUTS
8
- } from "./chunk-MVGFF4OY.js";
8
+ } from "./chunk-W5I6L4UT.js";
9
9
 
10
10
  // src/config/defaults-env.ts
11
11
  function parseIntEnv(envKey, fallback) {
@@ -348,4 +348,4 @@ export {
348
348
  CUSTOM_API_DEFAULT_MODEL,
349
349
  DEFAULTS
350
350
  };
351
- //# sourceMappingURL=chunk-SRTQUTCB.js.map
351
+ //# sourceMappingURL=chunk-3HTUYAKS.js.map
@@ -2,14 +2,14 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-AKO5H63G.js";
5
+ } from "./chunk-JYIKPBXW.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getFallbackChainForCategory,
10
10
  getTimeProvider,
11
11
  ok
12
- } from "./chunk-MVGFF4OY.js";
12
+ } from "./chunk-W5I6L4UT.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-LENO7TKE.js.map
155
+ //# sourceMappingURL=chunk-3LKW4IEW.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getTokenEnvVars,
3
3
  resolveToken
4
- } from "./chunk-QCZEC7H4.js";
4
+ } from "./chunk-EAT4GTMT.js";
5
5
  import {
6
6
  executeExpert
7
- } from "./chunk-EUMVRLJL.js";
7
+ } from "./chunk-S6FXRXYE.js";
8
8
  import {
9
9
  EventTopics,
10
10
  JobStatusSchema,
@@ -42,7 +42,7 @@ import {
42
42
  writeJobComplete,
43
43
  writeJobFailed,
44
44
  writeJobPending
45
- } from "./chunk-7QTWFRHH.js";
45
+ } from "./chunk-4N54BTZU.js";
46
46
  import {
47
47
  REGISTRY_PATH,
48
48
  getProjectRoot,
@@ -51,14 +51,14 @@ import {
51
51
  normalizeTopicToCanonical,
52
52
  savePapersRegistry,
53
53
  synthesizeResearch
54
- } from "./chunk-KR6UR263.js";
54
+ } from "./chunk-CGSVTROC.js";
55
55
  import {
56
56
  IssueTriage,
57
57
  sanitizeInput
58
- } from "./chunk-O5OJNB4C.js";
58
+ } from "./chunk-IOXR6W24.js";
59
59
  import {
60
60
  generateSecurityPlan
61
- } from "./chunk-WF2YOYY7.js";
61
+ } from "./chunk-57HMLBYN.js";
62
62
  import {
63
63
  analyzeGitHubRepo
64
64
  } from "./chunk-HFOQKCD2.js";
@@ -71,25 +71,25 @@ import {
71
71
  getContextForTask,
72
72
  inferTaskCategory,
73
73
  summarizeContextForPrompt
74
- } from "./chunk-W7YR5SGV.js";
74
+ } from "./chunk-4GOT42ZA.js";
75
75
  import {
76
76
  DEFAULT_RELEVANCE_CONFIG,
77
77
  MemoryImportance,
78
78
  calculateTextJaccardSimilarity,
79
79
  getToolMemory
80
- } from "./chunk-SI7ZBCGU.js";
80
+ } from "./chunk-7QXEK3O6.js";
81
81
  import {
82
82
  DEFAULT_TASK_TTL_MS,
83
83
  DEFAULT_TOOL_RATE_LIMITS,
84
84
  clampTaskTtl
85
- } from "./chunk-MXHJMSYQ.js";
85
+ } from "./chunk-5X7GAOVZ.js";
86
86
  import {
87
87
  getAvailabilityCache,
88
88
  resolveFallback
89
- } from "./chunk-MHPOJAPZ.js";
89
+ } from "./chunk-SFZESA5O.js";
90
90
  import {
91
91
  DEFAULTS
92
- } from "./chunk-SRTQUTCB.js";
92
+ } from "./chunk-3HTUYAKS.js";
93
93
  import {
94
94
  resolveInsideRoot
95
95
  } from "./chunk-NUBSJGQZ.js";
@@ -105,11 +105,11 @@ import {
105
105
  getAvailableClis,
106
106
  sleep,
107
107
  withTimeout
108
- } from "./chunk-MKKQ3CQJ.js";
108
+ } from "./chunk-X5BQF6HM.js";
109
109
  import {
110
110
  generateHyphenId,
111
111
  generateUUID
112
- } from "./chunk-WWY6V4NK.js";
112
+ } from "./chunk-PRGNJRID.js";
113
113
  import {
114
114
  BUILT_IN_EXPERTS,
115
115
  BuiltInExpertTypeSchema,
@@ -121,7 +121,7 @@ import {
121
121
  } from "./chunk-PQHVC4BD.js";
122
122
  import {
123
123
  createSessionMemory
124
- } from "./chunk-UISGEXHO.js";
124
+ } from "./chunk-YEQE7WLP.js";
125
125
  import {
126
126
  AGENT_ROUTER_TIMEOUTS,
127
127
  API_TIMEOUTS,
@@ -192,7 +192,7 @@ import {
192
192
  resolveModelIdentitySync,
193
193
  toExpertTaskAnalysisResult,
194
194
  withStep
195
- } from "./chunk-MVGFF4OY.js";
195
+ } from "./chunk-W5I6L4UT.js";
196
196
  import {
197
197
  getNexusDataDir,
198
198
  nexusDataPath,
@@ -26886,7 +26886,7 @@ async function populateUnifiedContextOnState(state) {
26886
26886
  try {
26887
26887
  const taskCandidate = state["task"];
26888
26888
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
26889
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-OBGV7Y2U.js");
26889
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-C4CNVKR5.js");
26890
26890
  const ctx = await getContextForTask2({
26891
26891
  task: taskCandidate,
26892
26892
  category: inferTaskCategory2(taskCandidate),
@@ -42521,7 +42521,7 @@ async function tryIssueTriage(task) {
42521
42521
  try {
42522
42522
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
42523
42523
  if (issueMatch === null) return null;
42524
- const { createIssueTriage } = await import("./issue-triage-U3PSWSCY.js");
42524
+ const { createIssueTriage } = await import("./issue-triage-IJGC3VZJ.js");
42525
42525
  const triage = createIssueTriage();
42526
42526
  const owner = issueMatch[1] ?? "";
42527
42527
  const num = issueMatch[2] ?? "";
@@ -42549,7 +42549,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
42549
42549
  ]);
42550
42550
  async function classifyWithLLM(task) {
42551
42551
  try {
42552
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-6KWMO2HT.js");
42552
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-VIWFPPGZ.js");
42553
42553
  const prompt = [
42554
42554
  "Classify this task into exactly one pipeline template.",
42555
42555
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -43331,7 +43331,7 @@ var memoryInitPromise = null;
43331
43331
  async function initPipelineMemory() {
43332
43332
  if (cachedMemory !== null) return cachedMemory;
43333
43333
  try {
43334
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-FSLRKYIC.js");
43334
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-HGCDSZ5R.js");
43335
43335
  const { getLearningDir } = await import("./learning-persistence-UKPO7RYK.js");
43336
43336
  const mem = createSessionMemory2(getLearningDir());
43337
43337
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -43388,7 +43388,7 @@ function recordRoutingExperience(category, success, durationMs) {
43388
43388
  callRecord(routingMemoryCache);
43389
43389
  return;
43390
43390
  }
43391
- routingMemoryInitPromise ??= import("./routing-memory-XBYTU4KZ.js").then(({ createRoutingMemory }) => {
43391
+ routingMemoryInitPromise ??= import("./routing-memory-PYO46COZ.js").then(({ createRoutingMemory }) => {
43392
43392
  routingMemoryCache ??= createRoutingMemory();
43393
43393
  return routingMemoryCache;
43394
43394
  }).catch((error) => {
@@ -43422,7 +43422,7 @@ ${text}` : "";
43422
43422
  }
43423
43423
  async function getWeatherContext() {
43424
43424
  try {
43425
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-YLD3VXUC.js");
43425
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-RWAMQHBL.js");
43426
43426
  const report = generateWeatherReport2({ includeAdaptive: true });
43427
43427
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
43428
43428
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -43440,7 +43440,7 @@ ${lines}
43440
43440
  }
43441
43441
  async function getMemoryContext(task) {
43442
43442
  try {
43443
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-FSLRKYIC.js");
43443
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-HGCDSZ5R.js");
43444
43444
  const { getLearningDir } = await import("./learning-persistence-UKPO7RYK.js");
43445
43445
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
43446
43446
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -43546,7 +43546,7 @@ ${contextBlock}`;
43546
43546
  const strategy = config.votingStrategy ?? "higher_order";
43547
43547
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
43548
43548
  try {
43549
- const { executeVoting } = await import("./consensus-vote-5NIBODVH.js");
43549
+ const { executeVoting } = await import("./consensus-vote-B6W7YQ6K.js");
43550
43550
  const votingResult = await executeVoting(
43551
43551
  {
43552
43552
  proposal: plan.slice(0, 4e3),
@@ -44473,7 +44473,7 @@ async function searchCodebaseForTask(task) {
44473
44473
  }
44474
44474
  async function queryResearchRegistry(task) {
44475
44475
  try {
44476
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-IDK2V5JN.js");
44476
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-CNZ4C3FN.js");
44477
44477
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
44478
44478
  if (topic === void 0) return null;
44479
44479
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -44544,7 +44544,7 @@ function createScanStageWrapper() {
44544
44544
  try {
44545
44545
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
44546
44546
  if (slug !== void 0) {
44547
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-WOUJAXSZ.js");
44547
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-5MFY7GGQ.js");
44548
44548
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
44549
44549
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
44550
44550
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -51160,7 +51160,7 @@ var GitHubTaskTracker = class {
51160
51160
  cachedProvider = null;
51161
51161
  async getProvider() {
51162
51162
  if (this.cachedProvider !== null) return this.cachedProvider;
51163
- const { createScmProvider } = await import("./factory-4RSAV4FC.js");
51163
+ const { createScmProvider } = await import("./factory-NNSXCD25.js");
51164
51164
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
51165
51165
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
51166
51166
  this.cachedProvider = result.value;
@@ -51874,4 +51874,4 @@ export {
51874
51874
  detectBackend,
51875
51875
  createTaskTracker
51876
51876
  };
51877
- //# sourceMappingURL=chunk-RAUA6B2M.js.map
51877
+ //# sourceMappingURL=chunk-44XYCZCU.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  getToolMemory
3
- } from "./chunk-SI7ZBCGU.js";
3
+ } from "./chunk-7QXEK3O6.js";
4
4
  import {
5
5
  CLI_NAMES,
6
6
  StrategyDistiller,
7
7
  createLogger,
8
8
  getOutcomeStore,
9
9
  registerPersistentDistillerFactory
10
- } from "./chunk-MVGFF4OY.js";
10
+ } from "./chunk-W5I6L4UT.js";
11
11
  import {
12
12
  ensureLearningDir,
13
13
  getRulesFile
@@ -273,4 +273,4 @@ export {
273
273
  inferTaskCategory,
274
274
  summarizeContextForPrompt
275
275
  };
276
- //# sourceMappingURL=chunk-W7YR5SGV.js.map
276
+ //# sourceMappingURL=chunk-4GOT42ZA.js.map
@@ -4,21 +4,21 @@ import {
4
4
  createStream,
5
5
  requireApiKey,
6
6
  validateApiKeyPresence
7
- } from "./chunk-O5F6QAIG.js";
7
+ } from "./chunk-3FVSYMHK.js";
8
8
  import {
9
9
  CUSTOM_API_BASE_URL_ENV,
10
10
  PROVIDER_ENV_KEYS,
11
11
  validateCustomApiBaseUrl
12
- } from "./chunk-TSHCHZ7R.js";
12
+ } from "./chunk-Y7E5ZWRQ.js";
13
13
  import {
14
14
  getToolMemory
15
- } from "./chunk-SI7ZBCGU.js";
15
+ } from "./chunk-7QXEK3O6.js";
16
16
  import {
17
17
  getDefaultAvailableModelsCache
18
- } from "./chunk-PS7WKRJN.js";
18
+ } from "./chunk-6Q33PBXC.js";
19
19
  import {
20
20
  CUSTOM_API_DEFAULT_MODEL
21
- } from "./chunk-SRTQUTCB.js";
21
+ } from "./chunk-3HTUYAKS.js";
22
22
  import {
23
23
  createCliAdapter,
24
24
  createCliDetectionCache,
@@ -27,7 +27,7 @@ import {
27
27
  isCliAvailable,
28
28
  sanitizeOutput,
29
29
  withTimeout
30
- } from "./chunk-MKKQ3CQJ.js";
30
+ } from "./chunk-X5BQF6HM.js";
31
31
  import {
32
32
  AgentError,
33
33
  CACHE_TIMEOUTS,
@@ -70,7 +70,7 @@ import {
70
70
  resolveCliAlias,
71
71
  resolveVoteTimeout,
72
72
  toRateLimitError
73
- } from "./chunk-MVGFF4OY.js";
73
+ } from "./chunk-W5I6L4UT.js";
74
74
  import {
75
75
  ensureLearningDir,
76
76
  getNexusDataDir,
@@ -9091,7 +9091,7 @@ async function processVotesWithCascade(engineVotes, opts) {
9091
9091
  var CONTRARIAN_ESCALATION_THRESHOLD = 0.8;
9092
9092
  async function runContrarianCheck(proposal, log) {
9093
9093
  try {
9094
- const { executeExpert } = await import("./expert-bridge-6KWMO2HT.js");
9094
+ const { executeExpert } = await import("./expert-bridge-VIWFPPGZ.js");
9095
9095
  const prompt = [
9096
9096
  "You are a contrarian analyst. Your job is to find reasons this proposal should be REJECTED.",
9097
9097
  "Look for: YAGNI (not needed), MISALIGNED (wrong tech/architecture), SECURITY_RISK, SCOPE_CREEP.",
@@ -9603,4 +9603,4 @@ export {
9603
9603
  CONSENSUS_VOTE_OUTPUT_SCHEMA,
9604
9604
  registerConsensusVoteTool
9605
9605
  };
9606
- //# sourceMappingURL=chunk-7QTWFRHH.js.map
9606
+ //# sourceMappingURL=chunk-4N54BTZU.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  resolveToken
3
- } from "./chunk-QCZEC7H4.js";
3
+ } from "./chunk-EAT4GTMT.js";
4
4
  import {
5
5
  GitHubProvider,
6
6
  ScmError
7
- } from "./chunk-XV7V3B35.js";
7
+ } from "./chunk-EFHZHCF2.js";
8
8
  import {
9
9
  err,
10
10
  ok
11
- } from "./chunk-MVGFF4OY.js";
11
+ } from "./chunk-W5I6L4UT.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-F5GVZBSH.js.map
44
+ //# sourceMappingURL=chunk-52ACUN6T.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createLogger,
6
6
  getTimeProvider
7
- } from "./chunk-MVGFF4OY.js";
7
+ } from "./chunk-W5I6L4UT.js";
8
8
 
9
9
  // src/mcp/tools/scanner-registry-fetcher.ts
10
10
  import { z } from "zod";
@@ -721,4 +721,4 @@ export {
721
721
  generateSecurityPlan,
722
722
  buildPlanFromAnalysis
723
723
  };
724
- //# sourceMappingURL=chunk-WF2YOYY7.js.map
724
+ //# sourceMappingURL=chunk-57HMLBYN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULTS
3
- } from "./chunk-SRTQUTCB.js";
3
+ } from "./chunk-3HTUYAKS.js";
4
4
  import {
5
5
  resolveInsideRoot
6
6
  } from "./chunk-NUBSJGQZ.js";
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  createAllAdapters,
12
12
  probeCli
13
- } from "./chunk-MKKQ3CQJ.js";
13
+ } from "./chunk-X5BQF6HM.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-MVGFF4OY.js";
29
+ } from "./chunk-W5I6L4UT.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.89.1" : "dev";
43
+ var VERSION = true ? "2.89.2" : "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-IRBQGUWR.js");
2099
+ const { runSetup } = await import("./setup-command-MXUNSSNJ.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-7MK6PRX6.js");
2113
+ const { runConfigInitSync } = await import("./setup-config-QPS4K5QU.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-MXHJMSYQ.js.map
2211
+ //# sourceMappingURL=chunk-5X7GAOVZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-MVGFF4OY.js";
3
+ } from "./chunk-W5I6L4UT.js";
4
4
 
5
5
  // src/config/available-models-cache.ts
6
6
  var logger = createLogger({ component: "available-models-cache" });
@@ -150,4 +150,4 @@ export {
150
150
  getDefaultAvailableModelsCache,
151
151
  setDefaultAvailableModelsCache
152
152
  };
153
- //# sourceMappingURL=chunk-PS7WKRJN.js.map
153
+ //# sourceMappingURL=chunk-6Q33PBXC.js.map
@@ -5,13 +5,13 @@ import {
5
5
  } from "./chunk-6T3EPABN.js";
6
6
  import {
7
7
  generateId
8
- } from "./chunk-WWY6V4NK.js";
8
+ } from "./chunk-PRGNJRID.js";
9
9
  import {
10
10
  getMemoryRegistry
11
11
  } from "./chunk-PQHVC4BD.js";
12
12
  import {
13
13
  SessionMemory
14
- } from "./chunk-UISGEXHO.js";
14
+ } from "./chunk-YEQE7WLP.js";
15
15
  import {
16
16
  ErrorCode,
17
17
  NexusError,
@@ -24,7 +24,7 @@ import {
24
24
  getTimeProvider,
25
25
  ok,
26
26
  setSharedMobiMemDbPathResolver
27
- } from "./chunk-MVGFF4OY.js";
27
+ } from "./chunk-W5I6L4UT.js";
28
28
  import {
29
29
  nexusDataPath
30
30
  } from "./chunk-CH7QIDHQ.js";
@@ -1229,6 +1229,37 @@ var MemoryMarkdownHelper = class {
1229
1229
  this.logger.warn("Failed to delete Markdown file", { key, filepath, error });
1230
1230
  }
1231
1231
  }
1232
+ /**
1233
+ * Delete orphaned Markdown files whose key no longer exists in the store
1234
+ * (#3112). Markdown is only cleaned on the explicit `delete()` path; the
1235
+ * `prune` / `expireAll` / auto-expire paths delete SQLite rows without it,
1236
+ * so the directory grows unbounded. Reconcile by forward-mapping every live
1237
+ * key to its filename and removing any `.md` file not in that set (the
1238
+ * forward map is lossy, but a collision only keeps a file a live key still
1239
+ * needs). Best-effort — never throws. Returns the number of files removed.
1240
+ */
1241
+ reconcile(liveKeys) {
1242
+ let removed = 0;
1243
+ try {
1244
+ if (!fs.existsSync(this.markdownDir)) return 0;
1245
+ const expected = new Set(liveKeys.map((k) => this.keyToFilename(k)));
1246
+ for (const file of fs.readdirSync(this.markdownDir)) {
1247
+ if (!file.endsWith(".md") || expected.has(file)) continue;
1248
+ try {
1249
+ fs.unlinkSync(path.join(this.markdownDir, file));
1250
+ removed++;
1251
+ } catch (error) {
1252
+ this.logger.warn("Failed to delete orphaned Markdown file", { file, error });
1253
+ }
1254
+ }
1255
+ if (removed > 0) {
1256
+ this.logger.debug("Reconciled Markdown dir", { removed, live: liveKeys.length });
1257
+ }
1258
+ } catch (error) {
1259
+ this.logger.warn("Markdown reconcile failed", { error });
1260
+ }
1261
+ return removed;
1262
+ }
1232
1263
  /**
1233
1264
  * Convert a memory key to a safe filename.
1234
1265
  */
@@ -1565,11 +1596,30 @@ var HybridMemoryBackend = class {
1565
1596
  }
1566
1597
  prune(olderThan) {
1567
1598
  this.ensureInitialized();
1568
- return Promise.resolve(pruneOldEntries(this.getDatabase(), olderThan, this.logger));
1599
+ const result = pruneOldEntries(this.getDatabase(), olderThan, this.logger);
1600
+ if (result.ok && result.value > 0) this.reconcileMarkdown();
1601
+ return Promise.resolve(result);
1569
1602
  }
1570
1603
  expireAll() {
1571
1604
  this.ensureInitialized();
1572
- return Promise.resolve(expireAllEntries(this.getDatabase(), this.logger));
1605
+ const result = expireAllEntries(this.getDatabase(), this.logger);
1606
+ if (result.ok && result.value > 0) this.reconcileMarkdown();
1607
+ return Promise.resolve(result);
1608
+ }
1609
+ /**
1610
+ * Remove Markdown sidecars whose key no longer exists in SQLite (#3112).
1611
+ * Covers every row-deletion path (prune / expire / auto-expire) uniformly,
1612
+ * not just the explicit `delete()`. Best-effort.
1613
+ */
1614
+ reconcileMarkdown() {
1615
+ try {
1616
+ const rows = this.getDatabase().prepare("SELECT key FROM memories").all();
1617
+ this.markdown.reconcile(rows.map((r) => r.key));
1618
+ } catch (error) {
1619
+ this.logger.warn("Markdown reconcile query failed", {
1620
+ error: error instanceof Error ? error.message : String(error)
1621
+ });
1622
+ }
1573
1623
  }
1574
1624
  delete(key) {
1575
1625
  try {
@@ -5562,4 +5612,4 @@ export {
5562
5612
  reinitializeMemoryBackends,
5563
5613
  ToolMemoryManager
5564
5614
  };
5565
- //# sourceMappingURL=chunk-SI7ZBCGU.js.map
5615
+ //# sourceMappingURL=chunk-7QXEK3O6.js.map