nexus-agents 2.89.0 → 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 (102) 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-WOGMMJUI.js → chunk-44XYCZCU.js} +27 -27
  7. package/dist/{chunk-W7YR5SGV.js → chunk-4GOT42ZA.js} +3 -3
  8. package/dist/{chunk-QA6YV4YF.js → chunk-4N54BTZU.js} +19 -18
  9. package/dist/chunk-4N54BTZU.js.map +1 -0
  10. package/dist/{chunk-F5GVZBSH.js → chunk-52ACUN6T.js} +4 -4
  11. package/dist/{chunk-WF2YOYY7.js → chunk-57HMLBYN.js} +2 -2
  12. package/dist/{chunk-SCT26VWJ.js → chunk-5X7GAOVZ.js} +7 -7
  13. package/dist/{chunk-PS7WKRJN.js → chunk-6Q33PBXC.js} +2 -2
  14. package/dist/{chunk-SI7ZBCGU.js → chunk-7QXEK3O6.js} +56 -6
  15. package/dist/{chunk-SI7ZBCGU.js.map → chunk-7QXEK3O6.js.map} +1 -1
  16. package/dist/{chunk-LZECDSJY.js → chunk-AQTHLUCP.js} +2 -2
  17. package/dist/{chunk-KR6UR263.js → chunk-CGSVTROC.js} +2 -2
  18. package/dist/{chunk-3MYPFPYL.js → chunk-E6W4Z6GN.js} +3 -3
  19. package/dist/{chunk-QCZEC7H4.js → chunk-EAT4GTMT.js} +2 -2
  20. package/dist/{chunk-XV7V3B35.js → chunk-EFHZHCF2.js} +2 -2
  21. package/dist/{chunk-O5OJNB4C.js → chunk-IOXR6W24.js} +3 -3
  22. package/dist/{chunk-AKO5H63G.js → chunk-JYIKPBXW.js} +2 -2
  23. package/dist/{chunk-WWY6V4NK.js → chunk-PRGNJRID.js} +2 -2
  24. package/dist/{chunk-EUMVRLJL.js → chunk-S6FXRXYE.js} +7 -7
  25. package/dist/{chunk-46AUVU6N.js → chunk-SCZOD5XC.js} +5 -5
  26. package/dist/{chunk-MHPOJAPZ.js → chunk-SFZESA5O.js} +2 -2
  27. package/dist/{chunk-GRTSPRIJ.js → chunk-TWAH7VM2.js} +3 -3
  28. package/dist/{chunk-MVGFF4OY.js → chunk-W5I6L4UT.js} +7 -3
  29. package/dist/{chunk-MVGFF4OY.js.map → chunk-W5I6L4UT.js.map} +1 -1
  30. package/dist/{chunk-MKKQ3CQJ.js → chunk-X5BQF6HM.js} +4 -4
  31. package/dist/{chunk-TSHCHZ7R.js → chunk-Y7E5ZWRQ.js} +2 -2
  32. package/dist/{chunk-UISGEXHO.js → chunk-YEQE7WLP.js} +2 -2
  33. package/dist/{cli-circuit-breaker-4EBP4C4R.js → cli-circuit-breaker-4SWB6DEB.js} +4 -4
  34. package/dist/cli.js +33 -33
  35. package/dist/{composite-router-INIE4UYA.js → composite-router-NLVKSTA2.js} +2 -2
  36. package/dist/{consensus-vote-LB7GCDPG.js → consensus-vote-B6W7YQ6K.js} +12 -12
  37. package/dist/{context-retriever-OBGV7Y2U.js → context-retriever-C4CNVKR5.js} +6 -6
  38. package/dist/{doctor-deep-F24MXACR.js → doctor-deep-QSVGAHAO.js} +3 -3
  39. package/dist/{expert-bridge-6KWMO2HT.js → expert-bridge-VIWFPPGZ.js} +4 -4
  40. package/dist/{factory-4RSAV4FC.js → factory-NNSXCD25.js} +5 -5
  41. package/dist/{factory-TA7GM2O2.js → factory-T3SEZUGW.js} +5 -5
  42. package/dist/index.js +25 -25
  43. package/dist/{init-opencode-VQFYKCIT.js → init-opencode-WEKHD7YE.js} +5 -5
  44. package/dist/{issue-triage-U3PSWSCY.js → issue-triage-IJGC3VZJ.js} +4 -4
  45. package/dist/{registry-command-2D4RMNUX.js → registry-command-VNFULRTL.js} +2 -2
  46. package/dist/{repo-security-plan-WOUJAXSZ.js → repo-security-plan-5MFY7GGQ.js} +3 -3
  47. package/dist/{research-helpers-synthesize-IDK2V5JN.js → research-helpers-synthesize-CNZ4C3FN.js} +3 -3
  48. package/dist/{routing-memory-XBYTU4KZ.js → routing-memory-PYO46COZ.js} +2 -2
  49. package/dist/{session-memory-FSLRKYIC.js → session-memory-HGCDSZ5R.js} +3 -3
  50. package/dist/{setup-command-UMBPSFIJ.js → setup-command-MXUNSSNJ.js} +11 -11
  51. package/dist/{setup-config-7MK6PRX6.js → setup-config-QPS4K5QU.js} +3 -3
  52. package/dist/{setup-custom-api-W6FWQVAF.js → setup-custom-api-SP2ZAVGC.js} +4 -4
  53. package/dist/{tool-memory-VJZ233FE.js → tool-memory-SDPIAV2S.js} +5 -5
  54. package/dist/{weather-report-YLD3VXUC.js → weather-report-RWAMQHBL.js} +2 -2
  55. package/package.json +1 -1
  56. package/dist/chunk-QA6YV4YF.js.map +0 -1
  57. /package/dist/{child-mcp-config-AT2L3EAS.js.map → child-mcp-config-WUHKXBWX.js.map} +0 -0
  58. /package/dist/{chunk-JHU27PB2.js.map → chunk-2SMTCNXP.js.map} +0 -0
  59. /package/dist/{chunk-O5F6QAIG.js.map → chunk-3FVSYMHK.js.map} +0 -0
  60. /package/dist/{chunk-SRTQUTCB.js.map → chunk-3HTUYAKS.js.map} +0 -0
  61. /package/dist/{chunk-LENO7TKE.js.map → chunk-3LKW4IEW.js.map} +0 -0
  62. /package/dist/{chunk-WOGMMJUI.js.map → chunk-44XYCZCU.js.map} +0 -0
  63. /package/dist/{chunk-W7YR5SGV.js.map → chunk-4GOT42ZA.js.map} +0 -0
  64. /package/dist/{chunk-F5GVZBSH.js.map → chunk-52ACUN6T.js.map} +0 -0
  65. /package/dist/{chunk-WF2YOYY7.js.map → chunk-57HMLBYN.js.map} +0 -0
  66. /package/dist/{chunk-SCT26VWJ.js.map → chunk-5X7GAOVZ.js.map} +0 -0
  67. /package/dist/{chunk-PS7WKRJN.js.map → chunk-6Q33PBXC.js.map} +0 -0
  68. /package/dist/{chunk-LZECDSJY.js.map → chunk-AQTHLUCP.js.map} +0 -0
  69. /package/dist/{chunk-KR6UR263.js.map → chunk-CGSVTROC.js.map} +0 -0
  70. /package/dist/{chunk-3MYPFPYL.js.map → chunk-E6W4Z6GN.js.map} +0 -0
  71. /package/dist/{chunk-QCZEC7H4.js.map → chunk-EAT4GTMT.js.map} +0 -0
  72. /package/dist/{chunk-XV7V3B35.js.map → chunk-EFHZHCF2.js.map} +0 -0
  73. /package/dist/{chunk-O5OJNB4C.js.map → chunk-IOXR6W24.js.map} +0 -0
  74. /package/dist/{chunk-AKO5H63G.js.map → chunk-JYIKPBXW.js.map} +0 -0
  75. /package/dist/{chunk-WWY6V4NK.js.map → chunk-PRGNJRID.js.map} +0 -0
  76. /package/dist/{chunk-EUMVRLJL.js.map → chunk-S6FXRXYE.js.map} +0 -0
  77. /package/dist/{chunk-46AUVU6N.js.map → chunk-SCZOD5XC.js.map} +0 -0
  78. /package/dist/{chunk-MHPOJAPZ.js.map → chunk-SFZESA5O.js.map} +0 -0
  79. /package/dist/{chunk-GRTSPRIJ.js.map → chunk-TWAH7VM2.js.map} +0 -0
  80. /package/dist/{chunk-MKKQ3CQJ.js.map → chunk-X5BQF6HM.js.map} +0 -0
  81. /package/dist/{chunk-TSHCHZ7R.js.map → chunk-Y7E5ZWRQ.js.map} +0 -0
  82. /package/dist/{chunk-UISGEXHO.js.map → chunk-YEQE7WLP.js.map} +0 -0
  83. /package/dist/{cli-circuit-breaker-4EBP4C4R.js.map → cli-circuit-breaker-4SWB6DEB.js.map} +0 -0
  84. /package/dist/{composite-router-INIE4UYA.js.map → composite-router-NLVKSTA2.js.map} +0 -0
  85. /package/dist/{consensus-vote-LB7GCDPG.js.map → consensus-vote-B6W7YQ6K.js.map} +0 -0
  86. /package/dist/{context-retriever-OBGV7Y2U.js.map → context-retriever-C4CNVKR5.js.map} +0 -0
  87. /package/dist/{doctor-deep-F24MXACR.js.map → doctor-deep-QSVGAHAO.js.map} +0 -0
  88. /package/dist/{expert-bridge-6KWMO2HT.js.map → expert-bridge-VIWFPPGZ.js.map} +0 -0
  89. /package/dist/{factory-4RSAV4FC.js.map → factory-NNSXCD25.js.map} +0 -0
  90. /package/dist/{factory-TA7GM2O2.js.map → factory-T3SEZUGW.js.map} +0 -0
  91. /package/dist/{init-opencode-VQFYKCIT.js.map → init-opencode-WEKHD7YE.js.map} +0 -0
  92. /package/dist/{issue-triage-U3PSWSCY.js.map → issue-triage-IJGC3VZJ.js.map} +0 -0
  93. /package/dist/{registry-command-2D4RMNUX.js.map → registry-command-VNFULRTL.js.map} +0 -0
  94. /package/dist/{repo-security-plan-WOUJAXSZ.js.map → repo-security-plan-5MFY7GGQ.js.map} +0 -0
  95. /package/dist/{research-helpers-synthesize-IDK2V5JN.js.map → research-helpers-synthesize-CNZ4C3FN.js.map} +0 -0
  96. /package/dist/{routing-memory-XBYTU4KZ.js.map → routing-memory-PYO46COZ.js.map} +0 -0
  97. /package/dist/{session-memory-FSLRKYIC.js.map → session-memory-HGCDSZ5R.js.map} +0 -0
  98. /package/dist/{setup-command-UMBPSFIJ.js.map → setup-command-MXUNSSNJ.js.map} +0 -0
  99. /package/dist/{setup-config-7MK6PRX6.js.map → setup-config-QPS4K5QU.js.map} +0 -0
  100. /package/dist/{setup-custom-api-W6FWQVAF.js.map → setup-custom-api-SP2ZAVGC.js.map} +0 -0
  101. /package/dist/{tool-memory-VJZ233FE.js.map → tool-memory-SDPIAV2S.js.map} +0 -0
  102. /package/dist/{weather-report-YLD3VXUC.js.map → weather-report-RWAMQHBL.js.map} +0 -0
@@ -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.0" : "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-UMBPSFIJ.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-SCT26VWJ.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