nexus-agents 2.70.1 → 2.72.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 (126) hide show
  1. package/dist/{adaptive-memory-MKSYEBST.js → adaptive-memory-UPE76IP6.js} +5 -5
  2. package/dist/{chunk-DWLATKBK.js → child-mcp-config-5HRJGLCR.js} +6 -4
  3. package/dist/child-mcp-config-5HRJGLCR.js.map +1 -0
  4. package/dist/{chunk-TTZODPLI.js → chunk-2JMUX5UA.js} +25 -12
  5. package/dist/{chunk-TTZODPLI.js.map → chunk-2JMUX5UA.js.map} +1 -1
  6. package/dist/{chunk-ZPPX2K57.js → chunk-2KB63QGE.js} +2 -2
  7. package/dist/{chunk-L2LQ3TSV.js → chunk-2MD5MWCK.js} +2 -2
  8. package/dist/{chunk-ANC3HU6F.js → chunk-345KMHWH.js} +6 -6
  9. package/dist/chunk-345KMHWH.js.map +1 -0
  10. package/dist/{chunk-7ZPYV4HO.js → chunk-3FIDMWFC.js} +2 -2
  11. package/dist/chunk-3FIDMWFC.js.map +1 -0
  12. package/dist/{chunk-H5RKTUDD.js → chunk-3HR6UJ2E.js} +3243 -7299
  13. package/dist/chunk-3HR6UJ2E.js.map +1 -0
  14. package/dist/{chunk-UMLBVSW4.js → chunk-53K3KEKT.js} +51 -707
  15. package/dist/chunk-53K3KEKT.js.map +1 -0
  16. package/dist/chunk-5MHIWRKB.js +691 -0
  17. package/dist/chunk-5MHIWRKB.js.map +1 -0
  18. package/dist/{chunk-VGZJIR22.js → chunk-5WQ3SRSE.js} +2 -2
  19. package/dist/{chunk-TOYPY5XA.js → chunk-A35XORXU.js} +73 -10
  20. package/dist/chunk-A35XORXU.js.map +1 -0
  21. package/dist/chunk-BVETPIOQ.js +556 -0
  22. package/dist/chunk-BVETPIOQ.js.map +1 -0
  23. package/dist/{chunk-OF7CYMMA.js → chunk-DA5UDQYW.js} +2 -2
  24. package/dist/{chunk-XATH462F.js → chunk-ES6GFP35.js} +186 -34
  25. package/dist/chunk-ES6GFP35.js.map +1 -0
  26. package/dist/chunk-GOT7OAL5.js +59 -0
  27. package/dist/chunk-GOT7OAL5.js.map +1 -0
  28. package/dist/{chunk-LJT65EA7.js → chunk-I7ORMAO7.js} +2 -2
  29. package/dist/{chunk-LMRKHQG5.js → chunk-L6N2S3UB.js} +2 -2
  30. package/dist/{chunk-7OBFO4GF.js → chunk-O4KUCF5S.js} +125 -40
  31. package/dist/chunk-O4KUCF5S.js.map +1 -0
  32. package/dist/chunk-P5OFZWDW.js +303 -0
  33. package/dist/chunk-P5OFZWDW.js.map +1 -0
  34. package/dist/{chunk-MJHOSM5U.js → chunk-QECRZ3YA.js} +2 -2
  35. package/dist/{chunk-WYSHXPKK.js → chunk-QL4HCYRD.js} +4 -44
  36. package/dist/chunk-QL4HCYRD.js.map +1 -0
  37. package/dist/{chunk-E66KFRSJ.js → chunk-TF3GROMO.js} +2 -2
  38. package/dist/{chunk-U3HZQTUF.js → chunk-TQFRPFMG.js} +2 -2
  39. package/dist/{chunk-7QWNOE23.js → chunk-V7ATY4BG.js} +3 -3
  40. package/dist/{chunk-32RIOULO.js → chunk-VPC3YNFR.js} +2 -2
  41. package/dist/{chunk-L4XSIHF5.js → chunk-VTVKC4FS.js} +4 -4
  42. package/dist/{chunk-6ZLFULSQ.js → chunk-XHVDKY3X.js} +315 -31
  43. package/dist/chunk-XHVDKY3X.js.map +1 -0
  44. package/dist/cli-circuit-breaker-GFF2RLBZ.js +14 -0
  45. package/dist/cli.d.ts +3 -1
  46. package/dist/cli.js +1167 -2245
  47. package/dist/cli.js.map +1 -1
  48. package/dist/{composite-router-AYVJPIOS.js → composite-router-33F3F74I.js} +4 -4
  49. package/dist/{consensus-vote-WUGHRBYE.js → consensus-vote-5V4KVHBE.js} +12 -11
  50. package/dist/doctor-deep-AHDTNURD.js +13 -0
  51. package/dist/expert-bridge-DMDHHDEU.js +11 -0
  52. package/dist/factory-FVD7PZ6S.js +15 -0
  53. package/dist/{factory-KMBWFIX2.js → factory-VQS3HJ7V.js} +6 -6
  54. package/dist/index.d.ts +359 -3358
  55. package/dist/index.js +70 -807
  56. package/dist/index.js.map +1 -1
  57. package/dist/init-opencode-EIOIPVWL.js +158 -0
  58. package/dist/init-opencode-EIOIPVWL.js.map +1 -0
  59. package/dist/issue-triage-HJUJWGAD.js +16 -0
  60. package/dist/{learning-persistence-FILWP3IR.js → learning-persistence-N6ILD2HX.js} +3 -3
  61. package/dist/{mobimem-77W5ED4Z.js → mobimem-BOJFXQ7B.js} +4 -4
  62. package/dist/{nexus-data-dir-M6DYKIHJ.js → nexus-data-dir-77UO7N6J.js} +2 -2
  63. package/dist/{registry-command-BBLIXULQ.js → registry-command-NCWUJKAF.js} +4 -4
  64. package/dist/{repo-security-plan-7SNM7JQN.js → repo-security-plan-3J45VAD6.js} +5 -5
  65. package/dist/research-helpers-synthesize-UGQHZZJN.js +12 -0
  66. package/dist/{routing-memory-DCIZEEVC.js → routing-memory-NO7QEH7T.js} +4 -4
  67. package/dist/{session-memory-5TSAASQW.js → session-memory-DOXLEWEU.js} +5 -5
  68. package/dist/{setup-command-PU636ZJH.js → setup-command-DVEBFKR2.js} +10 -10
  69. package/dist/setup-config-E3JZYSLR.js +11 -0
  70. package/dist/{setup-custom-api-IQX3GD2D.js → setup-custom-api-DHJ5DRH2.js} +6 -6
  71. package/dist/{weather-report-NETGWTJX.js → weather-report-FNN4OX3N.js} +4 -4
  72. package/package.json +1 -1
  73. package/dist/chunk-6ZLFULSQ.js.map +0 -1
  74. package/dist/chunk-7OBFO4GF.js.map +0 -1
  75. package/dist/chunk-7ZPYV4HO.js.map +0 -1
  76. package/dist/chunk-ANC3HU6F.js.map +0 -1
  77. package/dist/chunk-DWLATKBK.js.map +0 -1
  78. package/dist/chunk-FDNWRZNJ.js +0 -22
  79. package/dist/chunk-FDNWRZNJ.js.map +0 -1
  80. package/dist/chunk-H5RKTUDD.js.map +0 -1
  81. package/dist/chunk-TOYPY5XA.js.map +0 -1
  82. package/dist/chunk-UMLBVSW4.js.map +0 -1
  83. package/dist/chunk-WYSHXPKK.js.map +0 -1
  84. package/dist/chunk-XATH462F.js.map +0 -1
  85. package/dist/cli-circuit-breaker-2CJ6NV52.js +0 -14
  86. package/dist/doctor-deep-BJFDBGPO.js +0 -13
  87. package/dist/expert-bridge-75WNNWI4.js +0 -11
  88. package/dist/factory-BHHC6C7W.js +0 -15
  89. package/dist/issue-triage-TXQ7J6GG.js +0 -16
  90. package/dist/mcp-config-OCWIXE2Y.js +0 -13
  91. package/dist/research-helpers-synthesize-7CI2FJE5.js +0 -12
  92. package/dist/setup-config-EA5RDIO2.js +0 -11
  93. package/dist/weather-report-NETGWTJX.js.map +0 -1
  94. /package/dist/{adaptive-memory-MKSYEBST.js.map → adaptive-memory-UPE76IP6.js.map} +0 -0
  95. /package/dist/{chunk-ZPPX2K57.js.map → chunk-2KB63QGE.js.map} +0 -0
  96. /package/dist/{chunk-L2LQ3TSV.js.map → chunk-2MD5MWCK.js.map} +0 -0
  97. /package/dist/{chunk-VGZJIR22.js.map → chunk-5WQ3SRSE.js.map} +0 -0
  98. /package/dist/{chunk-OF7CYMMA.js.map → chunk-DA5UDQYW.js.map} +0 -0
  99. /package/dist/{chunk-LJT65EA7.js.map → chunk-I7ORMAO7.js.map} +0 -0
  100. /package/dist/{chunk-LMRKHQG5.js.map → chunk-L6N2S3UB.js.map} +0 -0
  101. /package/dist/{chunk-MJHOSM5U.js.map → chunk-QECRZ3YA.js.map} +0 -0
  102. /package/dist/{chunk-E66KFRSJ.js.map → chunk-TF3GROMO.js.map} +0 -0
  103. /package/dist/{chunk-U3HZQTUF.js.map → chunk-TQFRPFMG.js.map} +0 -0
  104. /package/dist/{chunk-7QWNOE23.js.map → chunk-V7ATY4BG.js.map} +0 -0
  105. /package/dist/{chunk-32RIOULO.js.map → chunk-VPC3YNFR.js.map} +0 -0
  106. /package/dist/{chunk-L4XSIHF5.js.map → chunk-VTVKC4FS.js.map} +0 -0
  107. /package/dist/{cli-circuit-breaker-2CJ6NV52.js.map → cli-circuit-breaker-GFF2RLBZ.js.map} +0 -0
  108. /package/dist/{composite-router-AYVJPIOS.js.map → composite-router-33F3F74I.js.map} +0 -0
  109. /package/dist/{consensus-vote-WUGHRBYE.js.map → consensus-vote-5V4KVHBE.js.map} +0 -0
  110. /package/dist/{doctor-deep-BJFDBGPO.js.map → doctor-deep-AHDTNURD.js.map} +0 -0
  111. /package/dist/{expert-bridge-75WNNWI4.js.map → expert-bridge-DMDHHDEU.js.map} +0 -0
  112. /package/dist/{factory-BHHC6C7W.js.map → factory-FVD7PZ6S.js.map} +0 -0
  113. /package/dist/{factory-KMBWFIX2.js.map → factory-VQS3HJ7V.js.map} +0 -0
  114. /package/dist/{issue-triage-TXQ7J6GG.js.map → issue-triage-HJUJWGAD.js.map} +0 -0
  115. /package/dist/{learning-persistence-FILWP3IR.js.map → learning-persistence-N6ILD2HX.js.map} +0 -0
  116. /package/dist/{mcp-config-OCWIXE2Y.js.map → mobimem-BOJFXQ7B.js.map} +0 -0
  117. /package/dist/{mobimem-77W5ED4Z.js.map → nexus-data-dir-77UO7N6J.js.map} +0 -0
  118. /package/dist/{registry-command-BBLIXULQ.js.map → registry-command-NCWUJKAF.js.map} +0 -0
  119. /package/dist/{nexus-data-dir-M6DYKIHJ.js.map → repo-security-plan-3J45VAD6.js.map} +0 -0
  120. /package/dist/{repo-security-plan-7SNM7JQN.js.map → research-helpers-synthesize-UGQHZZJN.js.map} +0 -0
  121. /package/dist/{research-helpers-synthesize-7CI2FJE5.js.map → routing-memory-NO7QEH7T.js.map} +0 -0
  122. /package/dist/{routing-memory-DCIZEEVC.js.map → session-memory-DOXLEWEU.js.map} +0 -0
  123. /package/dist/{session-memory-5TSAASQW.js.map → setup-command-DVEBFKR2.js.map} +0 -0
  124. /package/dist/{setup-command-PU636ZJH.js.map → setup-config-E3JZYSLR.js.map} +0 -0
  125. /package/dist/{setup-custom-api-IQX3GD2D.js.map → setup-custom-api-DHJ5DRH2.js.map} +0 -0
  126. /package/dist/{setup-config-EA5RDIO2.js.map → weather-report-FNN4OX3N.js.map} +0 -0
@@ -2,15 +2,15 @@ import {
2
2
  AdaptiveMemoryBackend,
3
3
  DEFAULT_SCORING_CONFIG,
4
4
  createAdaptiveMemory
5
- } from "./chunk-MJHOSM5U.js";
5
+ } from "./chunk-QECRZ3YA.js";
6
6
  import "./chunk-633WH2ML.js";
7
- import "./chunk-7OBFO4GF.js";
8
- import "./chunk-LJT65EA7.js";
9
- import "./chunk-FDNWRZNJ.js";
7
+ import "./chunk-O4KUCF5S.js";
8
+ import "./chunk-I7ORMAO7.js";
9
+ import "./chunk-GOT7OAL5.js";
10
10
  import "./chunk-UP2VWCW5.js";
11
11
  export {
12
12
  AdaptiveMemoryBackend,
13
13
  DEFAULT_SCORING_CONFIG,
14
14
  createAdaptiveMemory
15
15
  };
16
- //# sourceMappingURL=adaptive-memory-MKSYEBST.js.map
16
+ //# sourceMappingURL=adaptive-memory-UPE76IP6.js.map
@@ -1,8 +1,11 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-7OBFO4GF.js";
3
+ } from "./chunk-O4KUCF5S.js";
4
+ import "./chunk-I7ORMAO7.js";
5
+ import "./chunk-GOT7OAL5.js";
6
+ import "./chunk-UP2VWCW5.js";
4
7
 
5
- // src/swe-bench/mcp-config.ts
8
+ // src/cli-adapters/child-mcp-config.ts
6
9
  import { writeFile, mkdtemp, rm } from "fs/promises";
7
10
  import { join } from "path";
8
11
  import { tmpdir } from "os";
@@ -53,9 +56,8 @@ async function generateMcpConfig(options) {
53
56
  function getDefaultAllowedTools() {
54
57
  return DEFAULT_ALLOWED_TOOLS;
55
58
  }
56
-
57
59
  export {
58
60
  generateMcpConfig,
59
61
  getDefaultAllowedTools
60
62
  };
61
- //# sourceMappingURL=chunk-DWLATKBK.js.map
63
+ //# sourceMappingURL=child-mcp-config-5HRJGLCR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli-adapters/child-mcp-config.ts"],"sourcesContent":["/**\n * nexus-agents/cli-adapters - Child CLI MCP Config Generator\n *\n * Generates MCP server configuration for child Claude CLI sessions so\n * spawned agents can call back into nexus-agents' MCP tools (memory,\n * research, etc.). Used by `pipeline/expert-bridge.ts` to give expert\n * agents tool access. Originally lived under `swe-bench/` (#1413);\n * relocated here in #2515 — the helper is generic CLI-spawn\n * infrastructure, not benchmark-specific.\n *\n * @module cli-adapters/child-mcp-config\n */\n\nimport { writeFile, mkdtemp, rm } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { tmpdir } from 'node:os';\nimport { createLogger } from '../core/index.js';\n\nconst logger = createLogger({ component: 'swe-bench-mcp-config' });\n\n/**\n * MCP server entry in Claude CLI config format.\n */\ninterface McpServerEntry {\n readonly command: string;\n readonly args: readonly string[];\n readonly env?: Readonly<Record<string, string>>;\n}\n\n/**\n * MCP config file format for Claude CLI (--mcp-config).\n */\ninterface McpConfigFile {\n readonly mcpServers: Readonly<Record<string, McpServerEntry>>;\n}\n\n/**\n * Options for generating MCP config.\n */\nexport interface McpConfigOptions {\n /** Path to nexus-agents CLI entry point. */\n readonly cliPath?: string;\n /** Additional environment variables for the MCP server. */\n readonly env?: Readonly<Record<string, string>>;\n /** Custom allowed tools (default: read-only subset). */\n readonly allowedTools?: readonly string[];\n}\n\n/** Default read-only tools available to SWE-bench child sessions. */\nconst DEFAULT_ALLOWED_TOOLS: readonly string[] = [\n 'memory_query',\n 'memory_stats',\n 'research_query',\n 'research_discover',\n 'weather_report',\n 'delegate_to_model',\n];\n\n/**\n * Resolves the nexus-agents CLI path.\n * Uses the built dist/cli.js relative to this package.\n */\nfunction resolveCliPath(override?: string): string {\n if (override !== undefined) return override;\n // Resolve relative to this file: src/swe-bench/ → dist/cli.js\n // At runtime we're in dist/swe-bench/, so go up one level\n const distDir = join(__dirname, '..');\n return join(distDir, 'cli.js');\n}\n\n/**\n * Builds the MCP config object for a nexus-agents server.\n */\nfunction buildConfig(options?: McpConfigOptions): McpConfigFile {\n const cliPath = resolveCliPath(options?.cliPath);\n const tools = options?.allowedTools ?? DEFAULT_ALLOWED_TOOLS;\n\n const entry: McpServerEntry = {\n command: 'node',\n args: [cliPath, '--mode=server'],\n ...(options?.env !== undefined ? { env: options.env } : {}),\n };\n\n return {\n mcpServers: {\n 'nexus-agents': entry,\n },\n };\n\n // Note: tool allowlisting is handled by Claude CLI's --allowedTools flag,\n // not in the MCP config itself. The caller should pass tools separately.\n void tools;\n}\n\n/**\n * Generated MCP config with path and cleanup function.\n */\nexport interface GeneratedMcpConfig {\n /** Path to the generated config file. */\n readonly configPath: string;\n /** Cleanup function to remove temp files. */\n readonly cleanup: () => Promise<void>;\n /** Allowed tools list for --allowedTools flag. */\n readonly allowedTools: readonly string[];\n}\n\n/**\n * Generates an MCP config file for Claude CLI child sessions.\n *\n * Creates a temporary JSON file that can be passed to `claude --mcp-config`.\n * Returns the file path and a cleanup function.\n */\nexport async function generateMcpConfig(options?: McpConfigOptions): Promise<GeneratedMcpConfig> {\n const config = buildConfig(options);\n const tools = options?.allowedTools ?? DEFAULT_ALLOWED_TOOLS;\n\n const tempDir = await mkdtemp(join(tmpdir(), 'nexus-mcp-'));\n const configPath = join(tempDir, 'mcp-config.json');\n\n await writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');\n\n const cleanup = async (): Promise<void> => {\n await rm(tempDir, { recursive: true, force: true }).catch((e: unknown) => {\n logger.debug('Best-effort cleanup failed', {\n error: e instanceof Error ? e.message : String(e),\n });\n });\n };\n\n return { configPath, cleanup, allowedTools: tools };\n}\n\n/**\n * Gets the default allowed tools for SWE-bench MCP sessions.\n */\nexport function getDefaultAllowedTools(): readonly string[] {\n return DEFAULT_ALLOWED_TOOLS;\n}\n"],"mappings":";;;;;;;;AAaA,SAAS,WAAW,SAAS,UAAU;AACvC,SAAS,YAAY;AACrB,SAAS,cAAc;AAGvB,IAAM,SAAS,aAAa,EAAE,WAAW,uBAAuB,CAAC;AA+BjE,IAAM,wBAA2C;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMA,SAAS,eAAe,UAA2B;AACjD,MAAI,aAAa,OAAW,QAAO;AAGnC,QAAM,UAAU,KAAK,WAAW,IAAI;AACpC,SAAO,KAAK,SAAS,QAAQ;AAC/B;AAKA,SAAS,YAAY,SAA2C;AAC9D,QAAM,UAAU,eAAe,SAAS,OAAO;AAC/C,QAAM,QAAQ,SAAS,gBAAgB;AAEvC,QAAM,QAAwB;AAAA,IAC5B,SAAS;AAAA,IACT,MAAM,CAAC,SAAS,eAAe;AAAA,IAC/B,GAAI,SAAS,QAAQ,SAAY,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC;AAAA,EAC3D;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,MACV,gBAAgB;AAAA,IAClB;AAAA,EACF;AAIA,OAAK;AACP;AAoBA,eAAsB,kBAAkB,SAAyD;AAC/F,QAAM,SAAS,YAAY,OAAO;AAClC,QAAM,QAAQ,SAAS,gBAAgB;AAEvC,QAAM,UAAU,MAAM,QAAQ,KAAK,OAAO,GAAG,YAAY,CAAC;AAC1D,QAAM,aAAa,KAAK,SAAS,iBAAiB;AAElD,QAAM,UAAU,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAEpE,QAAM,UAAU,YAA2B;AACzC,UAAM,GAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC,EAAE,MAAM,CAAC,MAAe;AACxE,aAAO,MAAM,8BAA8B;AAAA,QACzC,OAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,MAClD,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,YAAY,SAAS,cAAc,MAAM;AACpD;AAKO,SAAS,yBAA4C;AAC1D,SAAO;AACT;","names":[]}
@@ -1,14 +1,15 @@
1
1
  import {
2
2
  runConfigInitSync
3
- } from "./chunk-OF7CYMMA.js";
3
+ } from "./chunk-DA5UDQYW.js";
4
4
  import {
5
5
  VERSION,
6
6
  checkApiKeys,
7
7
  checkDataDirectory,
8
8
  checkSqlite,
9
9
  defaultConfig,
10
- initDataDirectories
11
- } from "./chunk-6ZLFULSQ.js";
10
+ initDataDirectories,
11
+ probeAllClis
12
+ } from "./chunk-XHVDKY3X.js";
12
13
  import {
13
14
  BUILT_IN_EXPERTS
14
15
  } from "./chunk-ZM4O442V.js";
@@ -22,7 +23,7 @@ import {
22
23
  getErrorMessage,
23
24
  getTimeProvider,
24
25
  symbols
25
- } from "./chunk-7OBFO4GF.js";
26
+ } from "./chunk-O4KUCF5S.js";
26
27
 
27
28
  // src/cli/setup-command.ts
28
29
  import { existsSync as existsSync4 } from "fs";
@@ -1204,22 +1205,34 @@ function checkDataDirs() {
1204
1205
  fix: `Check filesystem permissions on ${result.rootPath}`
1205
1206
  };
1206
1207
  }
1207
- function checkAdapterAvailability() {
1208
+ async function checkAdapterAvailability() {
1208
1209
  const keys = checkApiKeys();
1209
- const configured = keys.filter((k) => k.configured);
1210
- if (configured.length > 0) {
1210
+ const configuredKeys = keys.filter((k) => k.configured);
1211
+ const authedClis = (await probeAllClis()).filter((p) => p.state === "authenticated");
1212
+ if (configuredKeys.length > 0 || authedClis.length > 0) {
1213
+ const parts = [];
1214
+ if (configuredKeys.length > 0) {
1215
+ parts.push(
1216
+ `${String(configuredKeys.length)} API key(s): ${configuredKeys.map((k) => k.name).join(", ")}`
1217
+ );
1218
+ }
1219
+ if (authedClis.length > 0) {
1220
+ parts.push(
1221
+ `${String(authedClis.length)} authed CLI(s): ${authedClis.map((p) => p.cli).join(", ")}`
1222
+ );
1223
+ }
1211
1224
  return {
1212
1225
  name: "Adapter Availability",
1213
1226
  passed: true,
1214
- message: `${String(configured.length)} API key(s) configured: ${configured.map((k) => k.name).join(", ")}`
1227
+ message: parts.join("; ")
1215
1228
  };
1216
1229
  }
1217
1230
  return {
1218
1231
  name: "Adapter Availability",
1219
1232
  passed: false,
1220
1233
  severity: "warn",
1221
- message: "No API keys configured (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_AI_API_KEY)",
1222
- fix: 'Set at least one API key, or install a CLI (claude/gemini/codex/opencode) and run "nexus-agents doctor"'
1234
+ message: "No API keys and no authed CLIs detected",
1235
+ fix: 'Run "nexus-agents login" to see per-CLI status, then "claude /login" / "codex login" / etc., or set ANTHROPIC_API_KEY / OPENAI_API_KEY / GOOGLE_AI_API_KEY'
1223
1236
  };
1224
1237
  }
1225
1238
  async function runVerify() {
@@ -1232,7 +1245,7 @@ async function runVerify() {
1232
1245
  checkExpertSystem(),
1233
1246
  await checkSqliteAvailability(),
1234
1247
  checkDataDirs(),
1235
- checkAdapterAvailability()
1248
+ await checkAdapterAvailability()
1236
1249
  ];
1237
1250
  const allPassed = checks.every((c) => c.passed);
1238
1251
  const noHardFailures = checks.every((c) => c.passed || c.severity === "warn");
@@ -1933,4 +1946,4 @@ export {
1933
1946
  setupCommand,
1934
1947
  setupCommandAsync
1935
1948
  };
1936
- //# sourceMappingURL=chunk-TTZODPLI.js.map
1949
+ //# sourceMappingURL=chunk-2JMUX5UA.js.map