nexus-agents 2.77.12 → 2.78.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 (131) hide show
  1. package/dist/{child-mcp-config-MJMUF7TL.js → child-mcp-config-CTO2MBRM.js} +3 -4
  2. package/dist/{child-mcp-config-MJMUF7TL.js.map → child-mcp-config-CTO2MBRM.js.map} +1 -1
  3. package/dist/{chunk-YJ2IGAD2.js → chunk-2UYTFLMO.js} +2 -2
  4. package/dist/{chunk-6AY5DK4E.js → chunk-2YPG6PDG.js} +3 -3
  5. package/dist/{chunk-3VWMM6UF.js → chunk-3NIPH6UP.js} +2 -2
  6. package/dist/{chunk-L3TPDTP3.js → chunk-4N33QZLH.js} +13 -15
  7. package/dist/{chunk-L3TPDTP3.js.map → chunk-4N33QZLH.js.map} +1 -1
  8. package/dist/{chunk-JN6UWGHH.js → chunk-5O6XLBPP.js} +2 -2
  9. package/dist/{chunk-ERWXGXV2.js → chunk-6TFTVW77.js} +3 -3
  10. package/dist/{chunk-2IAWMNNB.js → chunk-6WBTNZAY.js} +183 -87
  11. package/dist/chunk-6WBTNZAY.js.map +1 -0
  12. package/dist/{chunk-GOT7OAL5.js → chunk-7BMOZJYS.js} +29 -5
  13. package/dist/chunk-7BMOZJYS.js.map +1 -0
  14. package/dist/{chunk-C2LLQ6TW.js → chunk-7XCUZI4G.js} +4 -4
  15. package/dist/chunk-7XCUZI4G.js.map +1 -0
  16. package/dist/{chunk-TDV5ALHY.js → chunk-D6TM2VHX.js} +3 -3
  17. package/dist/{chunk-PWTJGGKB.js → chunk-DLXT23AC.js} +2 -2
  18. package/dist/chunk-DNO2INX5.js +276 -0
  19. package/dist/chunk-DNO2INX5.js.map +1 -0
  20. package/dist/{chunk-G2CSKBY5.js → chunk-FJWWSVWB.js} +29 -6
  21. package/dist/chunk-FJWWSVWB.js.map +1 -0
  22. package/dist/{chunk-DSQ5XM4O.js → chunk-FVPYP5DD.js} +4 -4
  23. package/dist/{chunk-MGLWPN2I.js → chunk-GONMG4NM.js} +2 -2
  24. package/dist/{chunk-XYA3DPWJ.js → chunk-GTGDVBLW.js} +5 -5
  25. package/dist/{chunk-YQMQSJQK.js → chunk-HYU4GZY6.js} +2 -2
  26. package/dist/{chunk-3DH5SLFH.js → chunk-K2QILJG4.js} +6 -6
  27. package/dist/{chunk-5WHWKY32.js → chunk-KT5FIBWS.js} +2 -2
  28. package/dist/{chunk-DIB6V67T.js → chunk-L6SCKLGO.js} +3 -3
  29. package/dist/{chunk-IPWCD22D.js → chunk-PLX6FCFC.js} +2 -2
  30. package/dist/chunk-PQHVC4BD.js +639 -0
  31. package/dist/chunk-PQHVC4BD.js.map +1 -0
  32. package/dist/chunk-Q5CFPIJ5.js +5581 -0
  33. package/dist/chunk-Q5CFPIJ5.js.map +1 -0
  34. package/dist/{chunk-G6ZPVADX.js → chunk-SD76JZBG.js} +2 -2
  35. package/dist/{chunk-Y2CP4Z5B.js → chunk-SWFJU3W2.js} +220 -4580
  36. package/dist/chunk-SWFJU3W2.js.map +1 -0
  37. package/dist/{chunk-3MRM53T4.js → chunk-WDYCIJWN.js} +640 -470
  38. package/dist/chunk-WDYCIJWN.js.map +1 -0
  39. package/dist/{chunk-CM3TORGV.js → chunk-YXWGEIQR.js} +2 -2
  40. package/dist/{chunk-7NK7BTWP.js → chunk-ZVCED4Z4.js} +2 -2
  41. package/dist/cli-circuit-breaker-I74ZQ44Q.js +13 -0
  42. package/dist/cli.js +109 -58
  43. package/dist/cli.js.map +1 -1
  44. package/dist/{composite-router-S6E26BCI.js → composite-router-V3OC57IE.js} +3 -4
  45. package/dist/consensus-vote-ESFPGEJE.js +30 -0
  46. package/dist/context-retriever-MB3D7KS6.js +18 -0
  47. package/dist/dist-NIXVXYIH.js +42 -0
  48. package/dist/doctor-deep-KQ765XZA.js +12 -0
  49. package/dist/expert-bridge-JKLC57IC.js +10 -0
  50. package/dist/factory-BUUXNGIB.js +14 -0
  51. package/dist/{factory-X3VKIGKP.js → factory-LHHYDVZX.js} +5 -6
  52. package/dist/index.d.ts +72 -8
  53. package/dist/index.js +208 -316
  54. package/dist/index.js.map +1 -1
  55. package/dist/{init-opencode-CFE7M6XA.js → init-opencode-GXZN2W5S.js} +6 -7
  56. package/dist/{init-opencode-CFE7M6XA.js.map → init-opencode-GXZN2W5S.js.map} +1 -1
  57. package/dist/issue-triage-RMXPDZ2K.js +15 -0
  58. package/dist/{learning-persistence-N6ILD2HX.js → learning-persistence-Q3HTOGTU.js} +2 -3
  59. package/dist/outcome-store-adapter-QRFJJIKB.js +57 -0
  60. package/dist/outcome-store-adapter-QRFJJIKB.js.map +1 -0
  61. package/dist/{registry-command-RPPC7N2K.js → registry-command-6E4YKAMT.js} +3 -4
  62. package/dist/{registry-command-RPPC7N2K.js.map → registry-command-6E4YKAMT.js.map} +1 -1
  63. package/dist/{repo-security-plan-7ZCDVH5O.js → repo-security-plan-AGRU72DL.js} +4 -5
  64. package/dist/research-helpers-synthesize-K2UCJQQG.js +13 -0
  65. package/dist/{routing-memory-5VTX7LQX.js → routing-memory-3B6DDZ76.js} +3 -4
  66. package/dist/{session-memory-7XBV6BMY.js → session-memory-L7EQIY2O.js} +4 -5
  67. package/dist/{setup-command-3ZTEPKDA.js → setup-command-VYV4RFWW.js} +11 -12
  68. package/dist/setup-config-EQT24DD4.js +10 -0
  69. package/dist/{setup-custom-api-WM5W5AY5.js → setup-custom-api-IBDV654K.js} +5 -6
  70. package/dist/{setup-custom-api-WM5W5AY5.js.map → setup-custom-api-IBDV654K.js.map} +1 -1
  71. package/dist/tool-memory-6HCHQLAN.js +19 -0
  72. package/dist/{weather-report-YJMVKJGA.js → weather-report-ER3WUZ7S.js} +3 -4
  73. package/package.json +3 -2
  74. package/dist/adaptive-memory-EI564K4C.js +0 -16
  75. package/dist/chunk-2IAWMNNB.js.map +0 -1
  76. package/dist/chunk-3MRM53T4.js.map +0 -1
  77. package/dist/chunk-BJ2OMC7P.js +0 -944
  78. package/dist/chunk-BJ2OMC7P.js.map +0 -1
  79. package/dist/chunk-C2LLQ6TW.js.map +0 -1
  80. package/dist/chunk-G2CSKBY5.js.map +0 -1
  81. package/dist/chunk-GOT7OAL5.js.map +0 -1
  82. package/dist/chunk-I7ORMAO7.js +0 -32
  83. package/dist/chunk-I7ORMAO7.js.map +0 -1
  84. package/dist/chunk-Y2CP4Z5B.js.map +0 -1
  85. package/dist/cli-circuit-breaker-YX4BWZD5.js +0 -14
  86. package/dist/consensus-vote-MUQ4HPIF.js +0 -30
  87. package/dist/doctor-deep-BRU5ZUJI.js +0 -13
  88. package/dist/expert-bridge-ZPNVLJVN.js +0 -11
  89. package/dist/factory-A7DTCCUY.js +0 -15
  90. package/dist/issue-triage-6XD6CVPB.js +0 -16
  91. package/dist/mobimem-CG2MNS7V.js +0 -14
  92. package/dist/nexus-data-dir-77UO7N6J.js +0 -12
  93. package/dist/research-helpers-synthesize-36TUTUUA.js +0 -14
  94. package/dist/setup-config-EI5KROA3.js +0 -11
  95. /package/dist/{chunk-YJ2IGAD2.js.map → chunk-2UYTFLMO.js.map} +0 -0
  96. /package/dist/{chunk-6AY5DK4E.js.map → chunk-2YPG6PDG.js.map} +0 -0
  97. /package/dist/{chunk-3VWMM6UF.js.map → chunk-3NIPH6UP.js.map} +0 -0
  98. /package/dist/{chunk-JN6UWGHH.js.map → chunk-5O6XLBPP.js.map} +0 -0
  99. /package/dist/{chunk-ERWXGXV2.js.map → chunk-6TFTVW77.js.map} +0 -0
  100. /package/dist/{chunk-TDV5ALHY.js.map → chunk-D6TM2VHX.js.map} +0 -0
  101. /package/dist/{chunk-PWTJGGKB.js.map → chunk-DLXT23AC.js.map} +0 -0
  102. /package/dist/{chunk-DSQ5XM4O.js.map → chunk-FVPYP5DD.js.map} +0 -0
  103. /package/dist/{chunk-MGLWPN2I.js.map → chunk-GONMG4NM.js.map} +0 -0
  104. /package/dist/{chunk-XYA3DPWJ.js.map → chunk-GTGDVBLW.js.map} +0 -0
  105. /package/dist/{chunk-YQMQSJQK.js.map → chunk-HYU4GZY6.js.map} +0 -0
  106. /package/dist/{chunk-3DH5SLFH.js.map → chunk-K2QILJG4.js.map} +0 -0
  107. /package/dist/{chunk-5WHWKY32.js.map → chunk-KT5FIBWS.js.map} +0 -0
  108. /package/dist/{chunk-DIB6V67T.js.map → chunk-L6SCKLGO.js.map} +0 -0
  109. /package/dist/{chunk-IPWCD22D.js.map → chunk-PLX6FCFC.js.map} +0 -0
  110. /package/dist/{chunk-G6ZPVADX.js.map → chunk-SD76JZBG.js.map} +0 -0
  111. /package/dist/{chunk-CM3TORGV.js.map → chunk-YXWGEIQR.js.map} +0 -0
  112. /package/dist/{chunk-7NK7BTWP.js.map → chunk-ZVCED4Z4.js.map} +0 -0
  113. /package/dist/{adaptive-memory-EI564K4C.js.map → cli-circuit-breaker-I74ZQ44Q.js.map} +0 -0
  114. /package/dist/{cli-circuit-breaker-YX4BWZD5.js.map → composite-router-V3OC57IE.js.map} +0 -0
  115. /package/dist/{composite-router-S6E26BCI.js.map → consensus-vote-ESFPGEJE.js.map} +0 -0
  116. /package/dist/{consensus-vote-MUQ4HPIF.js.map → context-retriever-MB3D7KS6.js.map} +0 -0
  117. /package/dist/{doctor-deep-BRU5ZUJI.js.map → dist-NIXVXYIH.js.map} +0 -0
  118. /package/dist/{expert-bridge-ZPNVLJVN.js.map → doctor-deep-KQ765XZA.js.map} +0 -0
  119. /package/dist/{factory-A7DTCCUY.js.map → expert-bridge-JKLC57IC.js.map} +0 -0
  120. /package/dist/{factory-X3VKIGKP.js.map → factory-BUUXNGIB.js.map} +0 -0
  121. /package/dist/{issue-triage-6XD6CVPB.js.map → factory-LHHYDVZX.js.map} +0 -0
  122. /package/dist/{learning-persistence-N6ILD2HX.js.map → issue-triage-RMXPDZ2K.js.map} +0 -0
  123. /package/dist/{mobimem-CG2MNS7V.js.map → learning-persistence-Q3HTOGTU.js.map} +0 -0
  124. /package/dist/{nexus-data-dir-77UO7N6J.js.map → repo-security-plan-AGRU72DL.js.map} +0 -0
  125. /package/dist/{repo-security-plan-7ZCDVH5O.js.map → research-helpers-synthesize-K2UCJQQG.js.map} +0 -0
  126. /package/dist/{research-helpers-synthesize-36TUTUUA.js.map → routing-memory-3B6DDZ76.js.map} +0 -0
  127. /package/dist/{routing-memory-5VTX7LQX.js.map → session-memory-L7EQIY2O.js.map} +0 -0
  128. /package/dist/{session-memory-7XBV6BMY.js.map → setup-command-VYV4RFWW.js.map} +0 -0
  129. /package/dist/{setup-command-3ZTEPKDA.js.map → setup-config-EQT24DD4.js.map} +0 -0
  130. /package/dist/{setup-config-EI5KROA3.js.map → tool-memory-6HCHQLAN.js.map} +0 -0
  131. /package/dist/{weather-report-YJMVKJGA.js.map → weather-report-ER3WUZ7S.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-3MRM53T4.js";
3
+ } from "./chunk-WDYCIJWN.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { copyFileSync, existsSync, writeFileSync } from "fs";
@@ -74,4 +74,4 @@ function ensureBackup(outputPath) {
74
74
  export {
75
75
  runConfigInitSync
76
76
  };
77
- //# sourceMappingURL=chunk-CM3TORGV.js.map
77
+ //# sourceMappingURL=chunk-YXWGEIQR.js.map
@@ -2,7 +2,7 @@ import {
2
2
  ConfigError,
3
3
  err,
4
4
  ok
5
- } from "./chunk-3MRM53T4.js";
5
+ } from "./chunk-WDYCIJWN.js";
6
6
 
7
7
  // src/adapters/sdk/types.ts
8
8
  var PROVIDER_ENV_KEYS = {
@@ -117,4 +117,4 @@ export {
117
117
  CUSTOM_API_ALLOW_PRIVATE_ENV,
118
118
  validateCustomApiBaseUrl
119
119
  };
120
- //# sourceMappingURL=chunk-7NK7BTWP.js.map
120
+ //# sourceMappingURL=chunk-ZVCED4Z4.js.map
@@ -0,0 +1,13 @@
1
+ import {
2
+ CliCircuitBreakerIntegration,
3
+ createCliCircuitBreakerIntegration
4
+ } from "./chunk-2YPG6PDG.js";
5
+ import "./chunk-DLXT23AC.js";
6
+ import "./chunk-WDYCIJWN.js";
7
+ import "./chunk-7BMOZJYS.js";
8
+ import "./chunk-UP2VWCW5.js";
9
+ export {
10
+ CliCircuitBreakerIntegration,
11
+ createCliCircuitBreakerIntegration
12
+ };
13
+ //# sourceMappingURL=cli-circuit-breaker-I74ZQ44Q.js.map
package/dist/cli.js CHANGED
@@ -12,18 +12,18 @@ import {
12
12
  parseFindings,
13
13
  sumFindings
14
14
  } from "./chunk-6E3NMMEY.js";
15
- import "./chunk-YJ2IGAD2.js";
15
+ import "./chunk-2UYTFLMO.js";
16
16
  import {
17
17
  buildOpenAICompatAdapters,
18
18
  loadUsageEvents,
19
19
  readOpenAICompatEnv,
20
20
  rollupByModel
21
- } from "./chunk-C2LLQ6TW.js";
21
+ } from "./chunk-7XCUZI4G.js";
22
22
  import {
23
23
  setupCommandAsync,
24
24
  verifyCommand
25
- } from "./chunk-XYA3DPWJ.js";
26
- import "./chunk-CM3TORGV.js";
25
+ } from "./chunk-GTGDVBLW.js";
26
+ import "./chunk-YXWGEIQR.js";
27
27
  import {
28
28
  AuthHandler,
29
29
  DEFAULT_EXPERTS,
@@ -153,17 +153,19 @@ import {
153
153
  validateCommand,
154
154
  validateWorkflow,
155
155
  wrapInMarkdownFence
156
- } from "./chunk-2IAWMNNB.js";
156
+ } from "./chunk-6WBTNZAY.js";
157
+ import "./chunk-AP2FD37C.js";
157
158
  import "./chunk-ED6VQWNG.js";
158
159
  import {
159
160
  resolveToken
160
- } from "./chunk-MGLWPN2I.js";
161
+ } from "./chunk-GONMG4NM.js";
161
162
  import {
162
163
  CATEGORY_DISPLAY_NAMES,
163
164
  DEFAULT_PR_REVIEW_CONFIG
164
165
  } from "./chunk-X2M7OF27.js";
165
- import "./chunk-DIB6V67T.js";
166
- import "./chunk-3DH5SLFH.js";
166
+ import "./chunk-L6SCKLGO.js";
167
+ import "./chunk-2YPG6PDG.js";
168
+ import "./chunk-K2QILJG4.js";
167
169
  import {
168
170
  DEFAULT_VOTE_TIMEOUT_MS,
169
171
  ErrorPolicySchema,
@@ -174,30 +176,33 @@ import {
174
176
  executeVoting,
175
177
  getToolAnnotations,
176
178
  registerConsensusVoteTool,
177
- shutdownToolMemory,
178
179
  toolStructuredError,
179
180
  warnIfSimulatedOutsideTests
180
- } from "./chunk-Y2CP4Z5B.js";
181
- import "./chunk-IPWCD22D.js";
182
- import "./chunk-7NK7BTWP.js";
181
+ } from "./chunk-SWFJU3W2.js";
182
+ import "./chunk-ZVCED4Z4.js";
183
+ import "./chunk-PLX6FCFC.js";
183
184
  import {
184
185
  loadPapersRegistry,
185
186
  loadTechniquesRegistry,
186
187
  savePapersRegistry,
187
188
  synthesizeResearch
188
- } from "./chunk-JN6UWGHH.js";
189
+ } from "./chunk-5O6XLBPP.js";
189
190
  import {
190
191
  classifyTrust,
191
192
  createFullGitHubProvider,
192
193
  evaluatePolicy,
193
194
  parsePRUrl,
194
195
  sanitizeInput
195
- } from "./chunk-ERWXGXV2.js";
196
- import "./chunk-G6ZPVADX.js";
197
- import "./chunk-G2CSKBY5.js";
196
+ } from "./chunk-6TFTVW77.js";
197
+ import "./chunk-SD76JZBG.js";
198
+ import "./chunk-FJWWSVWB.js";
198
199
  import "./chunk-7J7PNOJQ.js";
199
- import "./chunk-AP2FD37C.js";
200
200
  import "./chunk-BQ4YXGGQ.js";
201
+ import "./chunk-DNO2INX5.js";
202
+ import {
203
+ MemoryError,
204
+ shutdownToolMemory
205
+ } from "./chunk-Q5CFPIJ5.js";
201
206
  import {
202
207
  CustomExpertDefinitionSchema,
203
208
  DATA_SUBDIRECTORIES,
@@ -216,30 +221,27 @@ import {
216
221
  loadConfig,
217
222
  runDoctor,
218
223
  validateNexusEnv
219
- } from "./chunk-L3TPDTP3.js";
220
- import "./chunk-5WHWKY32.js";
224
+ } from "./chunk-4N33QZLH.js";
225
+ import "./chunk-KT5FIBWS.js";
221
226
  import {
222
227
  DEFAULTS
223
- } from "./chunk-YQMQSJQK.js";
228
+ } from "./chunk-HYU4GZY6.js";
224
229
  import "./chunk-NUBSJGQZ.js";
230
+ import {
231
+ capitalize,
232
+ capitalizeKebab,
233
+ truncateSentence
234
+ } from "./chunk-633WH2ML.js";
225
235
  import {
226
236
  createAllAdapters,
227
237
  getAvailableClis,
228
238
  isRecord,
229
239
  probeAllClis
230
- } from "./chunk-TDV5ALHY.js";
240
+ } from "./chunk-D6TM2VHX.js";
241
+ import "./chunk-DLXT23AC.js";
231
242
  import "./chunk-ZM4O442V.js";
232
- import "./chunk-3VWMM6UF.js";
233
- import {
234
- MemoryError
235
- } from "./chunk-BJ2OMC7P.js";
236
- import {
237
- capitalize,
238
- capitalizeKebab,
239
- truncateSentence
240
- } from "./chunk-633WH2ML.js";
241
- import "./chunk-6AY5DK4E.js";
242
- import "./chunk-PWTJGGKB.js";
243
+ import "./chunk-PQHVC4BD.js";
244
+ import "./chunk-3NIPH6UP.js";
243
245
  import {
244
246
  API_TIMEOUTS,
245
247
  AgentCapability,
@@ -307,13 +309,12 @@ import {
307
309
  validateTimeout,
308
310
  writeEmptyLine,
309
311
  writeLine
310
- } from "./chunk-3MRM53T4.js";
311
- import "./chunk-I7ORMAO7.js";
312
+ } from "./chunk-WDYCIJWN.js";
312
313
  import {
313
314
  detectSandbox,
314
315
  getNexusDataDir,
315
316
  nexusDataPath
316
- } from "./chunk-GOT7OAL5.js";
317
+ } from "./chunk-7BMOZJYS.js";
317
318
  import "./chunk-UP2VWCW5.js";
318
319
 
319
320
  // src/cli/cli-log-bootstrap.ts
@@ -5922,6 +5923,11 @@ function applyFixes(projectRoot, result) {
5922
5923
  }
5923
5924
  return fixes;
5924
5925
  }
5926
+ function detectWrongProjectRoot(projectRoot) {
5927
+ const claudeMd = path4.join(projectRoot, "CLAUDE.md");
5928
+ if (fs5.existsSync(claudeMd)) return null;
5929
+ return `system-review must run from the nexus-agents source repo, but ${claudeMd} does not exist. Clone the repo and re-run from the workspace root (or pass --project-root once that flag is wired). The installed npm package ships only the bundled dist/.`;
5930
+ }
5925
5931
  function runSystemReview(options = {}) {
5926
5932
  const pr = options.projectRoot ?? process.cwd();
5927
5933
  const techniques = runPhase1(pr), docs = runPhase2(pr), issues = runPhase3(), security = runPhase4(pr), quality = runPhase5(pr);
@@ -5938,6 +5944,13 @@ function runSystemReview(options = {}) {
5938
5944
  return { ...partial, actionItems, fixesApplied };
5939
5945
  }
5940
5946
  function systemReviewCommand(options = {}) {
5947
+ const pr = options.projectRoot ?? process.cwd();
5948
+ const wrongRootMessage = detectWrongProjectRoot(pr);
5949
+ if (wrongRootMessage !== null) {
5950
+ process.stderr.write(`${formatStatus("fail")} ${wrongRootMessage}
5951
+ `);
5952
+ return 1;
5953
+ }
5941
5954
  const result = runSystemReview(options);
5942
5955
  printSystemReviewResult(result);
5943
5956
  if (options.createIssue === true) {
@@ -8713,29 +8726,43 @@ var VALID_SUBCOMMANDS = [
8713
8726
  function isValidResearchSubcommand(value) {
8714
8727
  return value !== void 0 && VALID_SUBCOMMANDS.includes(value);
8715
8728
  }
8729
+ function ok2(handler) {
8730
+ return async (args, options) => ({
8731
+ text: await handler(args, options),
8732
+ exitCode: 0
8733
+ });
8734
+ }
8716
8735
  async function handleIndexCommand(args) {
8717
8736
  const indexOptions = parseResearchIndexArgs(args);
8718
8737
  const result = await researchIndexCommand(indexOptions);
8719
- return result.message;
8738
+ return { text: result.message, exitCode: result.exitCode };
8739
+ }
8740
+ async function handleAddCommandWithExit(args, options) {
8741
+ const text = await handleAddCommand(args, options);
8742
+ const exitCode = text.startsWith("Error:") ? 1 : 0;
8743
+ return { text, exitCode };
8720
8744
  }
8721
8745
  var SUBCOMMAND_HANDLERS = {
8722
- status: handleStatusCommand,
8723
- overlap: handleOverlapCommand,
8724
- add: handleAddCommand,
8725
- stats: (_args, options) => handleStatsCommand(options),
8726
- refresh: (_args, options) => handleRefreshCommand(options),
8727
- check: () => handleCheckCommand(),
8746
+ status: ok2(handleStatusCommand),
8747
+ overlap: ok2(handleOverlapCommand),
8748
+ add: handleAddCommandWithExit,
8749
+ stats: ok2((_args, options) => handleStatsCommand(options)),
8750
+ refresh: ok2((_args, options) => handleRefreshCommand(options)),
8751
+ check: ok2(() => handleCheckCommand()),
8728
8752
  index: (args) => handleIndexCommand(args),
8729
- discover: handleDiscoverCommand,
8730
- review: handleReviewCommand,
8731
- prioritize: handlePrioritizeCommand,
8732
- synthesize: handleSynthesizeCommand,
8733
- import: handleImportCommand
8753
+ discover: ok2(handleDiscoverCommand),
8754
+ review: ok2(handleReviewCommand),
8755
+ prioritize: ok2(handlePrioritizeCommand),
8756
+ synthesize: ok2(handleSynthesizeCommand),
8757
+ import: ok2(handleImportCommand)
8734
8758
  };
8735
8759
  async function researchCommand(subcommand, args, options) {
8736
8760
  const handler = SUBCOMMAND_HANDLERS[subcommand];
8737
8761
  if (handler === void 0) {
8738
- return `Unknown subcommand: ${subcommand}. Available: ${VALID_SUBCOMMANDS.join(", ")}`;
8762
+ return {
8763
+ text: `Unknown subcommand: ${subcommand}. Available: ${VALID_SUBCOMMANDS.join(", ")}`,
8764
+ exitCode: 1
8765
+ };
8739
8766
  }
8740
8767
  return handler(args, options);
8741
8768
  }
@@ -10755,7 +10782,8 @@ async function freshnessCommand(options) {
10755
10782
  logger9.info("Analyzing documentation freshness...");
10756
10783
  const result = analyzeFreshness();
10757
10784
  const { summary } = result;
10758
- const hasIssues = summary.stale > 0 || summary.warning > 0;
10785
+ const allUnknown = summary.total > 0 && summary.unknown === summary.total;
10786
+ const hasIssues = summary.stale > 0 || summary.warning > 0 || summary.unknown > 0;
10759
10787
  const output2 = options.format === "json" ? formatFreshnessJson(result) : formatFreshnessTable(result);
10760
10788
  if (options.output !== void 0) {
10761
10789
  const outputDir = path17.dirname(options.output);
@@ -10765,9 +10793,18 @@ async function freshnessCommand(options) {
10765
10793
  } else {
10766
10794
  process.stdout.write(output2 + "\n");
10767
10795
  }
10796
+ const wrongCwdHint = "No tracked documents found at the current CWD. `index freshness` audits the nexus-agents source repo \u2014 run it from the repo root (or pass --project-root once that flag is wired).";
10797
+ let message;
10798
+ if (allUnknown) {
10799
+ message = `Documentation freshness check: ${wrongCwdHint}`;
10800
+ } else if (hasIssues) {
10801
+ message = `Documentation freshness check: ${String(summary.stale)} stale, ${String(summary.warning)} warnings, ${String(summary.unknown)} unknown`;
10802
+ } else {
10803
+ message = `Documentation freshness check: ${String(summary.fresh)} documents are fresh`;
10804
+ }
10768
10805
  return {
10769
10806
  success: !hasIssues,
10770
- message: hasIssues ? `Documentation freshness check: ${String(summary.stale)} stale, ${String(summary.warning)} warnings` : `Documentation freshness check: ${String(summary.fresh)} documents are fresh`,
10807
+ message,
10771
10808
  data: {
10772
10809
  filesIndexed: summary.total
10773
10810
  }
@@ -18997,13 +19034,27 @@ function registerStandardsSkills(library, logger17) {
18997
19034
  // src/cli-server-skills.ts
18998
19035
  var globalSkillLibrary;
18999
19036
  function adaptConfigToLibrary(config) {
19037
+ const promoter = createBeliefPromoter();
19000
19038
  return {
19001
19039
  maxSkills: config.maxSkills,
19002
19040
  minSuccessRateForRetention: config.minSuccessRateForRetention,
19003
19041
  executionsBeforeEvaluation: config.executionsBeforeEvaluation,
19004
19042
  enablePruning: config.enablePruning,
19005
19043
  trackExecutionHistory: config.trackExecutionHistory,
19006
- maxHistoryPerSkill: config.maxHistoryPerSkill
19044
+ maxHistoryPerSkill: config.maxHistoryPerSkill,
19045
+ ...promoter !== void 0 && { skillPromoter: promoter }
19046
+ };
19047
+ }
19048
+ function createBeliefPromoter() {
19049
+ return async (event) => {
19050
+ const { getToolMemory } = await import("./tool-memory-6HCHQLAN.js");
19051
+ const tm = getToolMemory();
19052
+ await tm.recordBelief(
19053
+ `skill:${event.name}`,
19054
+ "is_reliable_for",
19055
+ event.category,
19056
+ event.successRate >= 0.8 ? "high" : "medium"
19057
+ );
19007
19058
  };
19008
19059
  }
19009
19060
  async function initializeSkillLibrary(options) {
@@ -19846,8 +19897,8 @@ async function handleResearchCommand(args) {
19846
19897
  }
19847
19898
  try {
19848
19899
  const result = await researchCommand(subcommand, positionalArgs, options);
19849
- process.stdout.write(result + "\n");
19850
- process.exit(EXIT_CODES.SUCCESS);
19900
+ process.stdout.write(result.text + "\n");
19901
+ process.exit(result.exitCode === 0 ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
19851
19902
  } catch (error) {
19852
19903
  const message = getErrorMessage(error);
19853
19904
  process.stdout.write(`Error: ${message}
@@ -19856,7 +19907,7 @@ async function handleResearchCommand(args) {
19856
19907
  }
19857
19908
  }
19858
19909
  async function handleRegistryCommand(args) {
19859
- const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-RPPC7N2K.js");
19910
+ const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-6E4YKAMT.js");
19860
19911
  const subcommand = args.subcommand;
19861
19912
  if (!isValidRegistrySubcommand(subcommand)) {
19862
19913
  process.stdout.write(`${formatRegistryUsage()}
@@ -19904,7 +19955,7 @@ async function handleVerifyCommand(args) {
19904
19955
  async function handleDoctorCommand(args) {
19905
19956
  const exitCode = await doctorCommand({ fix: args.options.fix });
19906
19957
  if (args.options.deep) {
19907
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-BRU5ZUJI.js");
19958
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-KQ765XZA.js");
19908
19959
  const diag = runDeepDiagnostics2();
19909
19960
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
19910
19961
  }
@@ -19948,7 +19999,7 @@ async function handleInitCommand(args) {
19948
19999
  process.exit(result.success ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
19949
20000
  }
19950
20001
  async function runInitOpencodeFlow(args) {
19951
- const { runInitOpencode } = await import("./init-opencode-CFE7M6XA.js");
20002
+ const { runInitOpencode } = await import("./init-opencode-GXZN2W5S.js");
19952
20003
  const opencodePath = args.options.opencode;
19953
20004
  if (opencodePath === void 0 || opencodePath === "") {
19954
20005
  process.stderr.write("Error: --opencode requires a path argument.\n");
@@ -19975,7 +20026,7 @@ async function runInitOpencodeFlow(args) {
19975
20026
  process.exit(EXIT_CODES.SUCCESS);
19976
20027
  }
19977
20028
  async function renderOpencodeValidate(opencodePath) {
19978
- const { runOpencodeValidate } = await import("./init-opencode-CFE7M6XA.js");
20029
+ const { runOpencodeValidate } = await import("./init-opencode-GXZN2W5S.js");
19979
20030
  const result = await runOpencodeValidate(opencodePath);
19980
20031
  if (!result.ok) {
19981
20032
  process.stderr.write(`init --opencode --validate: ${result.reason ?? "failed"}
@@ -20015,7 +20066,7 @@ async function handleSetupCommandAsync(args) {
20015
20066
  process.exit(exitCode === 0 ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
20016
20067
  }
20017
20068
  async function runCustomApiSetup(args) {
20018
- const { configureCustomApi } = await import("./setup-custom-api-WM5W5AY5.js");
20069
+ const { configureCustomApi } = await import("./setup-custom-api-IBDV654K.js");
20019
20070
  const baseUrl = args.options.customApi;
20020
20071
  if (baseUrl === void 0) return EXIT_CODES.SERVER_START_FAILED;
20021
20072
  const input = {