nexus-agents 2.30.4 → 2.30.6

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 (88) hide show
  1. package/dist/{adaptive-memory-5VP5WWTE.js → adaptive-memory-THOGYVKK.js} +3 -3
  2. package/dist/{chunk-OAYHSL7Y.js → chunk-23G7NV6B.js} +8 -7
  3. package/dist/chunk-23G7NV6B.js.map +1 -0
  4. package/dist/{chunk-VZ2YOQWU.js → chunk-2HAZZAU5.js} +2 -2
  5. package/dist/{chunk-66NNHMVB.js → chunk-2L6A7RUZ.js} +3 -3
  6. package/dist/{chunk-B4QOLUIV.js → chunk-2W7AM3I7.js} +9 -16
  7. package/dist/chunk-2W7AM3I7.js.map +1 -0
  8. package/dist/{chunk-V6MSPUQF.js → chunk-32ZTPL7Q.js} +2 -2
  9. package/dist/{chunk-GX436VRU.js → chunk-6V3HZQRC.js} +2 -2
  10. package/dist/{chunk-HSOPD265.js → chunk-GNR437CG.js} +19 -1
  11. package/dist/chunk-GNR437CG.js.map +1 -0
  12. package/dist/{chunk-LKDHAJJB.js → chunk-GUO4TIIX.js} +2 -2
  13. package/dist/{chunk-NKGTEJYU.js → chunk-HIVFP5CS.js} +4 -4
  14. package/dist/{chunk-DDQGAVQA.js → chunk-I66ZKP33.js} +2 -2
  15. package/dist/{chunk-Y477EGI4.js → chunk-IFIRZ35E.js} +2 -2
  16. package/dist/{chunk-LMBNOGZ7.js → chunk-MD2ABS6R.js} +6 -6
  17. package/dist/{chunk-IRPF5MX6.js → chunk-Q52QFWDQ.js} +4 -4
  18. package/dist/{chunk-BS25EOPE.js → chunk-T7SJVP5R.js} +902 -778
  19. package/dist/chunk-T7SJVP5R.js.map +1 -0
  20. package/dist/{chunk-EPMBGZQX.js → chunk-UMM5PVLB.js} +2 -2
  21. package/dist/{chunk-5COIDGQJ.js → chunk-V7GL5HZF.js} +3 -3
  22. package/dist/{chunk-63AJLNKU.js → chunk-VCYDKMGJ.js} +2 -2
  23. package/dist/{chunk-TL2GJMJ5.js → chunk-YSBHF2TG.js} +2 -2
  24. package/dist/{chunk-HKOYGU4C.js → chunk-ZVUNIQLB.js} +9 -7
  25. package/dist/chunk-ZVUNIQLB.js.map +1 -0
  26. package/dist/{chunk-KQIDTE52.js → chunk-ZXIFNJ7Q.js} +2 -2
  27. package/dist/{cli-circuit-breaker-6EJO3PPU.js → cli-circuit-breaker-MBTG6XC7.js} +4 -4
  28. package/dist/cli.js +32 -21
  29. package/dist/cli.js.map +1 -1
  30. package/dist/{composite-router-JD7URTC2.js → composite-router-IRF52MS7.js} +2 -2
  31. package/dist/{consensus-vote-FCQQWEWL.js → consensus-vote-MFGKPIAO.js} +7 -7
  32. package/dist/{doctor-deep-4A4X5X6U.js → doctor-deep-RMOKEOCC.js} +3 -3
  33. package/dist/{expert-bridge-22OCACKO.js → expert-bridge-IKR23WRI.js} +3 -3
  34. package/dist/{factory-NYIQCAA6.js → factory-FYHY577A.js} +4 -4
  35. package/dist/{factory-4Z4RSUYE.js → factory-SUZOQZOE.js} +5 -5
  36. package/dist/index.d.ts +5 -1
  37. package/dist/index.js +18 -18
  38. package/dist/index.js.map +1 -1
  39. package/dist/{issue-triage-TIG3RKXF.js → issue-triage-KGXVGBZR.js} +4 -4
  40. package/dist/{mcp-config-ETY7GFGW.js → mcp-config-PS73M32C.js} +3 -3
  41. package/dist/{mobimem-5PAAMVFR.js → mobimem-ATF4YCSJ.js} +2 -2
  42. package/dist/{repo-security-plan-KQB3ZJTE.js → repo-security-plan-VMTRN3PJ.js} +3 -3
  43. package/dist/research-helpers-synthesize-A6ZTAYLN.js +10 -0
  44. package/dist/{routing-memory-3ES3OHLM.js → routing-memory-5VJTEGLC.js} +2 -2
  45. package/dist/{session-memory-E2OE2CYR.js → session-memory-UA3L4Q6K.js} +3 -3
  46. package/dist/{setup-command-62QRZ2IK.js → setup-command-JVFJWD7A.js} +7 -7
  47. package/dist/{setup-config-KITOPV7V.js → setup-config-IJ6RFRA4.js} +3 -3
  48. package/dist/{weather-report-KUSVNXDZ.js → weather-report-B43EV36T.js} +2 -2
  49. package/package.json +1 -1
  50. package/dist/chunk-B4QOLUIV.js.map +0 -1
  51. package/dist/chunk-BS25EOPE.js.map +0 -1
  52. package/dist/chunk-HKOYGU4C.js.map +0 -1
  53. package/dist/chunk-HSOPD265.js.map +0 -1
  54. package/dist/chunk-OAYHSL7Y.js.map +0 -1
  55. package/dist/research-helpers-synthesize-ZMERZZ5B.js +0 -10
  56. /package/dist/{adaptive-memory-5VP5WWTE.js.map → adaptive-memory-THOGYVKK.js.map} +0 -0
  57. /package/dist/{chunk-VZ2YOQWU.js.map → chunk-2HAZZAU5.js.map} +0 -0
  58. /package/dist/{chunk-66NNHMVB.js.map → chunk-2L6A7RUZ.js.map} +0 -0
  59. /package/dist/{chunk-V6MSPUQF.js.map → chunk-32ZTPL7Q.js.map} +0 -0
  60. /package/dist/{chunk-GX436VRU.js.map → chunk-6V3HZQRC.js.map} +0 -0
  61. /package/dist/{chunk-LKDHAJJB.js.map → chunk-GUO4TIIX.js.map} +0 -0
  62. /package/dist/{chunk-NKGTEJYU.js.map → chunk-HIVFP5CS.js.map} +0 -0
  63. /package/dist/{chunk-DDQGAVQA.js.map → chunk-I66ZKP33.js.map} +0 -0
  64. /package/dist/{chunk-Y477EGI4.js.map → chunk-IFIRZ35E.js.map} +0 -0
  65. /package/dist/{chunk-LMBNOGZ7.js.map → chunk-MD2ABS6R.js.map} +0 -0
  66. /package/dist/{chunk-IRPF5MX6.js.map → chunk-Q52QFWDQ.js.map} +0 -0
  67. /package/dist/{chunk-EPMBGZQX.js.map → chunk-UMM5PVLB.js.map} +0 -0
  68. /package/dist/{chunk-5COIDGQJ.js.map → chunk-V7GL5HZF.js.map} +0 -0
  69. /package/dist/{chunk-63AJLNKU.js.map → chunk-VCYDKMGJ.js.map} +0 -0
  70. /package/dist/{chunk-TL2GJMJ5.js.map → chunk-YSBHF2TG.js.map} +0 -0
  71. /package/dist/{chunk-KQIDTE52.js.map → chunk-ZXIFNJ7Q.js.map} +0 -0
  72. /package/dist/{cli-circuit-breaker-6EJO3PPU.js.map → cli-circuit-breaker-MBTG6XC7.js.map} +0 -0
  73. /package/dist/{composite-router-JD7URTC2.js.map → composite-router-IRF52MS7.js.map} +0 -0
  74. /package/dist/{consensus-vote-FCQQWEWL.js.map → consensus-vote-MFGKPIAO.js.map} +0 -0
  75. /package/dist/{doctor-deep-4A4X5X6U.js.map → doctor-deep-RMOKEOCC.js.map} +0 -0
  76. /package/dist/{expert-bridge-22OCACKO.js.map → expert-bridge-IKR23WRI.js.map} +0 -0
  77. /package/dist/{factory-4Z4RSUYE.js.map → factory-FYHY577A.js.map} +0 -0
  78. /package/dist/{factory-NYIQCAA6.js.map → factory-SUZOQZOE.js.map} +0 -0
  79. /package/dist/{issue-triage-TIG3RKXF.js.map → issue-triage-KGXVGBZR.js.map} +0 -0
  80. /package/dist/{mcp-config-ETY7GFGW.js.map → mcp-config-PS73M32C.js.map} +0 -0
  81. /package/dist/{mobimem-5PAAMVFR.js.map → mobimem-ATF4YCSJ.js.map} +0 -0
  82. /package/dist/{repo-security-plan-KQB3ZJTE.js.map → repo-security-plan-VMTRN3PJ.js.map} +0 -0
  83. /package/dist/{research-helpers-synthesize-ZMERZZ5B.js.map → research-helpers-synthesize-A6ZTAYLN.js.map} +0 -0
  84. /package/dist/{routing-memory-3ES3OHLM.js.map → routing-memory-5VJTEGLC.js.map} +0 -0
  85. /package/dist/{session-memory-E2OE2CYR.js.map → session-memory-UA3L4Q6K.js.map} +0 -0
  86. /package/dist/{setup-command-62QRZ2IK.js.map → setup-command-JVFJWD7A.js.map} +0 -0
  87. /package/dist/{setup-config-KITOPV7V.js.map → setup-config-IJ6RFRA4.js.map} +0 -0
  88. /package/dist/{weather-report-KUSVNXDZ.js.map → weather-report-B43EV36T.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  err,
4
4
  getErrorMessage,
5
5
  ok
6
- } from "./chunk-HSOPD265.js";
6
+ } from "./chunk-GNR437CG.js";
7
7
 
8
8
  // src/scm/types.ts
9
9
  var ScmError = class extends Error {
@@ -243,4 +243,4 @@ export {
243
243
  ScmError,
244
244
  GitHubProvider
245
245
  };
246
- //# sourceMappingURL=chunk-EPMBGZQX.js.map
246
+ //# sourceMappingURL=chunk-UMM5PVLB.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-EPMBGZQX.js";
4
+ } from "./chunk-UMM5PVLB.js";
5
5
  import {
6
6
  CACHE_TIMEOUTS,
7
7
  createLogger,
8
8
  err,
9
9
  getTimeProvider,
10
10
  ok
11
- } from "./chunk-HSOPD265.js";
11
+ } from "./chunk-GNR437CG.js";
12
12
 
13
13
  // src/security/trust-types.ts
14
14
  import { z } from "zod";
@@ -1582,4 +1582,4 @@ export {
1582
1582
  IssueTriage,
1583
1583
  createIssueTriage
1584
1584
  };
1585
- //# sourceMappingURL=chunk-5COIDGQJ.js.map
1585
+ //# sourceMappingURL=chunk-V7GL5HZF.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-HSOPD265.js";
5
+ } from "./chunk-GNR437CG.js";
6
6
 
7
7
  // src/cli/doctor-deep.ts
8
8
  var CLI_NAMES = ["claude", "gemini", "codex", "opencode"];
@@ -106,4 +106,4 @@ export {
106
106
  runDeepDiagnostics,
107
107
  formatDeepDiagnostics
108
108
  };
109
- //# sourceMappingURL=chunk-63AJLNKU.js.map
109
+ //# sourceMappingURL=chunk-VCYDKMGJ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BC3M4VLP.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-HSOPD265.js";
6
+ } from "./chunk-GNR437CG.js";
7
7
 
8
8
  // src/mcp/tools/scanner-registry-fetcher.ts
9
9
  import { z } from "zod";
@@ -697,4 +697,4 @@ export {
697
697
  generateSecurityPlan,
698
698
  buildPlanFromAnalysis
699
699
  };
700
- //# sourceMappingURL=chunk-TL2GJMJ5.js.map
700
+ //# sourceMappingURL=chunk-YSBHF2TG.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  getTimeProvider,
4
4
  isRateLimitText
5
- } from "./chunk-HSOPD265.js";
5
+ } from "./chunk-GNR437CG.js";
6
6
 
7
7
  // src/pipeline/expert-bridge.ts
8
8
  var logger = createLogger({ component: "expert-bridge" });
@@ -12,7 +12,7 @@ var cachedMcpConfigPath = null;
12
12
  async function getMcpConfigPath() {
13
13
  if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
14
14
  try {
15
- const { generateMcpConfig } = await import("./mcp-config-ETY7GFGW.js");
15
+ const { generateMcpConfig } = await import("./mcp-config-PS73M32C.js");
16
16
  const config = await generateMcpConfig();
17
17
  cachedMcpConfigPath = config.configPath;
18
18
  return cachedMcpConfigPath;
@@ -23,15 +23,17 @@ async function getMcpConfigPath() {
23
23
  var cachedCircuitBreaker = null;
24
24
  async function getRouter() {
25
25
  if (cachedRouter !== null) return cachedRouter;
26
- const { createAllAdapters } = await import("./factory-NYIQCAA6.js");
27
- const { createCompositeRouter } = await import("./composite-router-JD7URTC2.js");
26
+ const { createAllAdapters } = await import("./factory-FYHY577A.js");
27
+ const { createCompositeRouter } = await import("./composite-router-IRF52MS7.js");
28
28
  const adapters = createAllAdapters();
29
29
  if (adapters.size === 0) return null;
30
30
  cachedRouter = createCompositeRouter(adapters);
31
31
  try {
32
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-6EJO3PPU.js");
32
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-MBTG6XC7.js");
33
33
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
34
- } catch {
34
+ } catch (error) {
35
+ const msg = error instanceof Error ? error.message : String(error);
36
+ logger.debug("Circuit breaker init failed; continuing without it", { error: msg });
35
37
  }
36
38
  return cachedRouter;
37
39
  }
@@ -119,4 +121,4 @@ ${prompt}`;
119
121
  export {
120
122
  executeExpert
121
123
  };
122
- //# sourceMappingURL=chunk-HKOYGU4C.js.map
124
+ //# sourceMappingURL=chunk-ZVUNIQLB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pipeline/expert-bridge.ts"],"sourcesContent":["/**\n * Expert Bridge — Programmatic access to the execute_expert pipeline (#1693)\n *\n * Provides a clean wrapper for calling experts with the full pipeline:\n * timeout, fallback cascade, degradation detection, heartbeat, outcome recording.\n *\n * DRY: reuses createBuiltInExpert + CompositeRouter instead of reimplementing.\n *\n * @module pipeline/expert-bridge\n */\n\nimport { createLogger, getTimeProvider } from '../core/index.js';\nimport type { BuiltInExpertType } from '../agents/experts/expert-config.js';\nimport { isRateLimitText } from '../adapters/rate-limit-detector.js';\n\nconst logger = createLogger({ component: 'expert-bridge' });\n\n/** Base delay for rate limit retry backoff (ms). Scales linearly: 3s, 6s, 9s. */\nconst RATE_LIMIT_BASE_DELAY_MS = 3000;\n\n/** Result of an expert execution. */\nexport interface ExpertBridgeResult {\n readonly success: boolean;\n readonly text: string;\n readonly expertType: BuiltInExpertType;\n readonly durationMs: number;\n readonly error?: string;\n}\n\n/**\n * Execute an expert task with the full nexus-agents expert pipeline.\n *\n * Creates a built-in expert, executes via CompositeRouter (for intelligent\n * CLI routing), and records outcomes. Falls back gracefully on failure.\n *\n * @param expertType - Built-in expert type (code, architecture, security, qa, etc.)\n * @param prompt - Task prompt for the expert\n * @returns Expert result with text output\n */\n/** Minimal router interface for the bridge. */\ninterface RouterLike {\n executeTask(task: {\n content: string;\n options?: Record<string, unknown> | undefined;\n }): Promise<{ ok: boolean; value: { text: string }; error: { message: string } }>;\n}\n\n// Cached router — lazily initialized, reused across calls within a session\nlet cachedRouter: RouterLike | null = null;\n\n// Cached MCP config — generated once, reused across expert calls (#1708)\nlet cachedMcpConfigPath: string | null = null;\n\n/** Get or create cached MCP config path for expert CLI sessions (#1708). */\nasync function getMcpConfigPath(): Promise<string | null> {\n if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;\n try {\n const { generateMcpConfig } = await import('../swe-bench/mcp-config.js');\n const config = await generateMcpConfig();\n cachedMcpConfigPath = config.configPath;\n return cachedMcpConfigPath;\n } catch {\n return null; // MCP config not available — experts run without tools\n }\n}\n\n/** Cached circuit breaker for health monitoring (#1766). */\nlet cachedCircuitBreaker: {\n getHealthStatus(): {\n systemHealthy: boolean;\n healthyCount: number;\n clis: ReadonlyArray<{ name: string; healthy: boolean }>;\n };\n} | null = null;\n\n/** Get or create a cached CompositeRouter with circuit breaker monitoring. */\nasync function getRouter(): Promise<RouterLike | null> {\n if (cachedRouter !== null) return cachedRouter;\n const { createAllAdapters } = await import('../cli-adapters/factory.js');\n const { createCompositeRouter } = await import('../cli-adapters/composite-router.js');\n const adapters = createAllAdapters();\n if (adapters.size === 0) return null;\n cachedRouter = createCompositeRouter(adapters) as unknown as RouterLike;\n\n // Initialize circuit breaker monitoring (#1766)\n try {\n const { createCliCircuitBreakerIntegration } =\n await import('../cli-adapters/cli-circuit-breaker.js');\n cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);\n } catch (error: unknown) {\n // Circuit breaker not available — continue without it. Log so we can\n // notice if initialization silently stops working (#1913 Class B).\n const msg = error instanceof Error ? error.message : String(error);\n logger.debug('Circuit breaker init failed; continuing without it', { error: msg });\n }\n\n return cachedRouter;\n}\n\n/** Check CLI health before dispatch (#1766). */\nfunction checkCircuitHealth(): { healthy: boolean; message: string } {\n if (cachedCircuitBreaker === null) return { healthy: true, message: '' };\n const status = cachedCircuitBreaker.getHealthStatus();\n if (!status.systemHealthy) {\n return {\n healthy: false,\n message: `All CLI circuits open (${String(status.healthyCount)}/${String(status.clis.length)} healthy)`,\n };\n }\n return { healthy: true, message: '' };\n}\n\n/** Dispatch task to router with rate limit retry (#1802). */\nasync function dispatchWithRateLimitRetry(\n router: RouterLike,\n task: { content: string; options?: Record<string, unknown> | undefined },\n expertType: BuiltInExpertType,\n start: number\n): Promise<ExpertBridgeResult> {\n const maxAttempts = 3;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const result = await router.executeTask(task);\n const durationMs = getTimeProvider().now() - start;\n\n if (result.ok) {\n logger.info('Expert executed successfully', { expertType, durationMs });\n return { success: true, text: result.value.text, expertType, durationMs };\n }\n\n const isRateLimit = isRateLimitText(result.error.message);\n if (isRateLimit && attempt < maxAttempts - 1) {\n const backoffMs = RATE_LIMIT_BASE_DELAY_MS * (attempt + 1);\n logger.warn('Expert rate limited, retrying', { expertType, attempt: attempt + 1, backoffMs });\n await new Promise((resolve) => setTimeout(resolve, backoffMs));\n continue;\n }\n\n logger.warn('Expert execution failed', { expertType, error: result.error.message });\n return { success: false, text: '', expertType, durationMs, error: result.error.message };\n }\n\n return {\n success: false,\n text: '',\n expertType,\n durationMs: getTimeProvider().now() - start,\n error: 'Max retry attempts exceeded',\n };\n}\n\nexport async function executeExpert(\n expertType: BuiltInExpertType,\n prompt: string\n): Promise<ExpertBridgeResult> {\n const start = getTimeProvider().now();\n try {\n const { BUILT_IN_EXPERTS } = await import('../agents/experts/expert-config.js');\n const config = BUILT_IN_EXPERTS[expertType];\n const fullPrompt = `${config.systemPrompt}\\n\\n${prompt}`;\n\n const router = await getRouter();\n if (router === null) {\n return {\n success: false,\n text: `[No adapters] ${prompt}`,\n expertType,\n durationMs: getTimeProvider().now() - start,\n error: 'No CLI adapters available',\n };\n }\n\n // Check circuit breaker health before dispatch (#1766)\n const health = checkCircuitHealth();\n if (!health.healthy) {\n logger.warn('Circuit breaker: all CLIs unavailable', { expertType, reason: health.message });\n return {\n success: false,\n text: '',\n expertType,\n durationMs: getTimeProvider().now() - start,\n error: health.message,\n };\n }\n\n // Pass MCP config so CLI experts can call nexus-agents tools (#1708)\n const mcpConfigPath = await getMcpConfigPath();\n const task: { content: string; options?: Record<string, unknown> | undefined } = {\n content: fullPrompt,\n };\n if (mcpConfigPath !== null) task.options = { mcpConfigPath };\n\n return await dispatchWithRateLimitRetry(router, task, expertType, start);\n } catch (error) {\n const durationMs = getTimeProvider().now() - start;\n const msg = error instanceof Error ? error.message : String(error);\n logger.warn('Expert bridge error', { expertType, error: msg });\n return { success: false, text: '', expertType, durationMs, error: msg };\n }\n}\n"],"mappings":"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","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  getErrorMessage,
5
5
  getTimeProvider,
6
6
  ok
7
- } from "./chunk-HSOPD265.js";
7
+ } from "./chunk-GNR437CG.js";
8
8
 
9
9
  // src/context/session-memory.ts
10
10
  import * as fs from "fs";
@@ -351,4 +351,4 @@ export {
351
351
  SessionMemory,
352
352
  createSessionMemory
353
353
  };
354
- //# sourceMappingURL=chunk-KQIDTE52.js.map
354
+ //# sourceMappingURL=chunk-ZXIFNJ7Q.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  CliCircuitBreakerIntegration,
3
3
  createCliCircuitBreakerIntegration
4
- } from "./chunk-66NNHMVB.js";
5
- import "./chunk-Y477EGI4.js";
6
- import "./chunk-HSOPD265.js";
4
+ } from "./chunk-2L6A7RUZ.js";
5
+ import "./chunk-IFIRZ35E.js";
6
+ import "./chunk-GNR437CG.js";
7
7
  import "./chunk-CLYZ7FWP.js";
8
8
  import "./chunk-UP2VWCW5.js";
9
9
  export {
10
10
  CliCircuitBreakerIntegration,
11
11
  createCliCircuitBreakerIntegration
12
12
  };
13
- //# sourceMappingURL=cli-circuit-breaker-6EJO3PPU.js.map
13
+ //# sourceMappingURL=cli-circuit-breaker-MBTG6XC7.js.map
package/dist/cli.js CHANGED
@@ -12,11 +12,11 @@ import {
12
12
  parseFindings,
13
13
  sumFindings
14
14
  } from "./chunk-6E3NMMEY.js";
15
- import "./chunk-63AJLNKU.js";
15
+ import "./chunk-VCYDKMGJ.js";
16
16
  import {
17
17
  setupCommandAsync
18
- } from "./chunk-IRPF5MX6.js";
19
- import "./chunk-V6MSPUQF.js";
18
+ } from "./chunk-Q52QFWDQ.js";
19
+ import "./chunk-32ZTPL7Q.js";
20
20
  import {
21
21
  AuthHandler,
22
22
  CustomExpertDefinitionSchema,
@@ -150,10 +150,10 @@ import {
150
150
  validateNexusEnv,
151
151
  validateWorkflow,
152
152
  wrapInMarkdownFence
153
- } from "./chunk-BS25EOPE.js";
153
+ } from "./chunk-T7SJVP5R.js";
154
154
  import {
155
155
  resolveToken
156
- } from "./chunk-VZ2YOQWU.js";
156
+ } from "./chunk-2HAZZAU5.js";
157
157
  import {
158
158
  CATEGORY_DISPLAY_NAMES,
159
159
  DEFAULT_PR_REVIEW_CONFIG
@@ -169,22 +169,22 @@ import {
169
169
  registerConsensusVoteTool,
170
170
  shutdownToolMemory,
171
171
  validateTimeout
172
- } from "./chunk-OAYHSL7Y.js";
172
+ } from "./chunk-23G7NV6B.js";
173
173
  import {
174
174
  loadPapersRegistry,
175
175
  loadTechniquesRegistry,
176
176
  savePapersRegistry,
177
177
  synthesizeResearch
178
- } from "./chunk-GX436VRU.js";
178
+ } from "./chunk-6V3HZQRC.js";
179
179
  import {
180
180
  classifyTrust,
181
181
  createFullGitHubProvider,
182
182
  evaluatePolicy,
183
183
  parsePRUrl,
184
184
  sanitizeInput
185
- } from "./chunk-5COIDGQJ.js";
186
- import "./chunk-EPMBGZQX.js";
187
- import "./chunk-TL2GJMJ5.js";
185
+ } from "./chunk-V7GL5HZF.js";
186
+ import "./chunk-UMM5PVLB.js";
187
+ import "./chunk-YSBHF2TG.js";
188
188
  import "./chunk-BC3M4VLP.js";
189
189
  import "./chunk-AP2FD37C.js";
190
190
  import "./chunk-BQ4YXGGQ.js";
@@ -200,25 +200,25 @@ import {
200
200
  doctorCommand,
201
201
  initDataDirectories,
202
202
  runDoctor
203
- } from "./chunk-LMBNOGZ7.js";
204
- import "./chunk-KQIDTE52.js";
203
+ } from "./chunk-MD2ABS6R.js";
204
+ import "./chunk-ZXIFNJ7Q.js";
205
205
  import {
206
206
  MemoryError
207
- } from "./chunk-DDQGAVQA.js";
207
+ } from "./chunk-I66ZKP33.js";
208
208
  import {
209
209
  capitalize,
210
210
  capitalizeKebab,
211
211
  truncateSentence
212
212
  } from "./chunk-633WH2ML.js";
213
- import "./chunk-LKDHAJJB.js";
214
- import "./chunk-66NNHMVB.js";
215
- import "./chunk-HKOYGU4C.js";
213
+ import "./chunk-GUO4TIIX.js";
214
+ import "./chunk-2L6A7RUZ.js";
215
+ import "./chunk-ZVUNIQLB.js";
216
216
  import {
217
217
  createAllAdapters,
218
218
  getAvailableClis,
219
219
  isRecord
220
- } from "./chunk-B4QOLUIV.js";
221
- import "./chunk-Y477EGI4.js";
220
+ } from "./chunk-2W7AM3I7.js";
221
+ import "./chunk-IFIRZ35E.js";
222
222
  import {
223
223
  API_TIMEOUTS,
224
224
  AgentCapability,
@@ -279,7 +279,7 @@ import {
279
279
  toError,
280
280
  writeEmptyLine,
281
281
  writeLine
282
- } from "./chunk-HSOPD265.js";
282
+ } from "./chunk-GNR437CG.js";
283
283
  import "./chunk-CLYZ7FWP.js";
284
284
  import "./chunk-UP2VWCW5.js";
285
285
 
@@ -13584,9 +13584,20 @@ var FitnessScoreCalculator = class {
13584
13584
  }
13585
13585
  const score = Object.values(dimensions).reduce((sum, val) => sum + val, 0);
13586
13586
  this.logger.info("Fitness audit complete", { score, version });
13587
+ const safeDim = (k) => dimensions[k] ?? 0;
13588
+ const typedDimensions = {
13589
+ canonicalPaths: safeDim("canonicalPaths"),
13590
+ explicitBehavior: safeDim("explicitBehavior"),
13591
+ determinism: safeDim("determinism"),
13592
+ observability: safeDim("observability"),
13593
+ configSimplicity: safeDim("configSimplicity"),
13594
+ layerSeparation: safeDim("layerSeparation"),
13595
+ operatorErgonomics: safeDim("operatorErgonomics"),
13596
+ governanceIntegration: safeDim("governanceIntegration")
13597
+ };
13587
13598
  return {
13588
13599
  score,
13589
- dimensions,
13600
+ dimensions: typedDimensions,
13590
13601
  findings,
13591
13602
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
13592
13603
  version
@@ -19852,7 +19863,7 @@ async function handleVerifyCommand(args) {
19852
19863
  async function handleDoctorCommand(args) {
19853
19864
  const exitCode = await doctorCommand({ fix: args.options.fix });
19854
19865
  if (args.options.deep) {
19855
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-4A4X5X6U.js");
19866
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-RMOKEOCC.js");
19856
19867
  const diag = runDeepDiagnostics2();
19857
19868
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
19858
19869
  }