nexus-agents 2.31.0 → 2.31.1

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 (81) hide show
  1. package/dist/{adaptive-memory-EDCJHRH3.js → adaptive-memory-FF4LRS3M.js} +3 -3
  2. package/dist/{chunk-2JPQ2ICM.js → chunk-2DVT67R2.js} +3 -3
  3. package/dist/{chunk-R4LU2LYM.js → chunk-3YEDP3LK.js} +4 -4
  4. package/dist/{chunk-FO6C5AQ6.js → chunk-4R2BADP4.js} +2 -2
  5. package/dist/{chunk-DGMLBF4U.js → chunk-DUGFNXRP.js} +2 -2
  6. package/dist/{chunk-FPBRLZXV.js → chunk-DUGURS54.js} +2 -2
  7. package/dist/{chunk-PTLZM2LZ.js → chunk-ESI6I6IF.js} +3 -3
  8. package/dist/{chunk-SUDYZIVI.js → chunk-FTH5Y5II.js} +2 -2
  9. package/dist/{chunk-VUJ2PDT7.js → chunk-HNI3NK4K.js} +3 -3
  10. package/dist/{chunk-6BOVBYY5.js → chunk-IPRGKBMI.js} +6 -6
  11. package/dist/{chunk-7DNUEEGG.js → chunk-JPPXO7PQ.js} +85 -60
  12. package/dist/{chunk-7DNUEEGG.js.map → chunk-JPPXO7PQ.js.map} +1 -1
  13. package/dist/{chunk-4VB3PQTO.js → chunk-KZZIPU4X.js} +6 -6
  14. package/dist/{chunk-OREUX6UF.js → chunk-NPISXFJY.js} +2 -2
  15. package/dist/{chunk-MNHC65DB.js → chunk-PN7EM6R4.js} +4 -4
  16. package/dist/{chunk-WFG3BWWK.js → chunk-RP4ZPI77.js} +2 -2
  17. package/dist/{chunk-6SUCK2NV.js → chunk-SL2N2TEK.js} +2 -2
  18. package/dist/{chunk-YLDYHQ4Y.js → chunk-UJ52FKAE.js} +2 -2
  19. package/dist/{chunk-PR7QRV6S.js → chunk-XHLEJFLY.js} +6 -6
  20. package/dist/{chunk-GLOJ6EDL.js → chunk-Z2EQVPEU.js} +2 -2
  21. package/dist/{chunk-7PZGCG37.js → chunk-ZRYYNLJT.js} +2 -2
  22. package/dist/{chunk-K5N4OL66.js → chunk-ZVXTKGMG.js} +5 -5
  23. package/dist/chunk-ZVXTKGMG.js.map +1 -0
  24. package/dist/{cli-circuit-breaker-U3XLQNCL.js → cli-circuit-breaker-PTIXGLJT.js} +4 -4
  25. package/dist/cli.js +20 -20
  26. package/dist/{composite-router-QGP6USAP.js → composite-router-UJVTEANR.js} +2 -2
  27. package/dist/{consensus-vote-GEQK32G7.js → consensus-vote-PR6OOWNP.js} +7 -7
  28. package/dist/{doctor-deep-3VFOZERZ.js → doctor-deep-QBOVS2PV.js} +3 -3
  29. package/dist/{expert-bridge-RDY47MFM.js → expert-bridge-7GT2TPM4.js} +3 -3
  30. package/dist/{factory-VEXE4RXU.js → factory-7CF7KPZD.js} +5 -5
  31. package/dist/{factory-3DVB6TV6.js → factory-B4RFWJFK.js} +4 -4
  32. package/dist/index.js +18 -18
  33. package/dist/{issue-triage-SCQMQI6A.js → issue-triage-RUAN7U3E.js} +4 -4
  34. package/dist/{mcp-config-F6ZJD564.js → mcp-config-IGSZJ6V4.js} +3 -3
  35. package/dist/{mobimem-XYRENZW7.js → mobimem-4I3VN7HE.js} +2 -2
  36. package/dist/{repo-security-plan-XPOOUKAV.js → repo-security-plan-WFPK2V7U.js} +3 -3
  37. package/dist/research-helpers-synthesize-RYXRUNDQ.js +10 -0
  38. package/dist/{routing-memory-YUETBIJU.js → routing-memory-SS3FLYDV.js} +2 -2
  39. package/dist/{session-memory-7MHDTB6O.js → session-memory-IGXMRL47.js} +3 -3
  40. package/dist/{setup-command-LZB74W4I.js → setup-command-A7XLIUX5.js} +7 -7
  41. package/dist/{setup-config-KPMWBIHD.js → setup-config-OD6ZZWKZ.js} +3 -3
  42. package/dist/{weather-report-3WN4FVQ6.js → weather-report-3L72MUQ3.js} +2 -2
  43. package/package.json +1 -1
  44. package/dist/chunk-K5N4OL66.js.map +0 -1
  45. package/dist/research-helpers-synthesize-MRO44W5J.js +0 -10
  46. /package/dist/{adaptive-memory-EDCJHRH3.js.map → adaptive-memory-FF4LRS3M.js.map} +0 -0
  47. /package/dist/{chunk-2JPQ2ICM.js.map → chunk-2DVT67R2.js.map} +0 -0
  48. /package/dist/{chunk-R4LU2LYM.js.map → chunk-3YEDP3LK.js.map} +0 -0
  49. /package/dist/{chunk-FO6C5AQ6.js.map → chunk-4R2BADP4.js.map} +0 -0
  50. /package/dist/{chunk-DGMLBF4U.js.map → chunk-DUGFNXRP.js.map} +0 -0
  51. /package/dist/{chunk-FPBRLZXV.js.map → chunk-DUGURS54.js.map} +0 -0
  52. /package/dist/{chunk-PTLZM2LZ.js.map → chunk-ESI6I6IF.js.map} +0 -0
  53. /package/dist/{chunk-SUDYZIVI.js.map → chunk-FTH5Y5II.js.map} +0 -0
  54. /package/dist/{chunk-VUJ2PDT7.js.map → chunk-HNI3NK4K.js.map} +0 -0
  55. /package/dist/{chunk-6BOVBYY5.js.map → chunk-IPRGKBMI.js.map} +0 -0
  56. /package/dist/{chunk-4VB3PQTO.js.map → chunk-KZZIPU4X.js.map} +0 -0
  57. /package/dist/{chunk-OREUX6UF.js.map → chunk-NPISXFJY.js.map} +0 -0
  58. /package/dist/{chunk-MNHC65DB.js.map → chunk-PN7EM6R4.js.map} +0 -0
  59. /package/dist/{chunk-WFG3BWWK.js.map → chunk-RP4ZPI77.js.map} +0 -0
  60. /package/dist/{chunk-6SUCK2NV.js.map → chunk-SL2N2TEK.js.map} +0 -0
  61. /package/dist/{chunk-YLDYHQ4Y.js.map → chunk-UJ52FKAE.js.map} +0 -0
  62. /package/dist/{chunk-PR7QRV6S.js.map → chunk-XHLEJFLY.js.map} +0 -0
  63. /package/dist/{chunk-GLOJ6EDL.js.map → chunk-Z2EQVPEU.js.map} +0 -0
  64. /package/dist/{chunk-7PZGCG37.js.map → chunk-ZRYYNLJT.js.map} +0 -0
  65. /package/dist/{cli-circuit-breaker-U3XLQNCL.js.map → cli-circuit-breaker-PTIXGLJT.js.map} +0 -0
  66. /package/dist/{composite-router-QGP6USAP.js.map → composite-router-UJVTEANR.js.map} +0 -0
  67. /package/dist/{consensus-vote-GEQK32G7.js.map → consensus-vote-PR6OOWNP.js.map} +0 -0
  68. /package/dist/{doctor-deep-3VFOZERZ.js.map → doctor-deep-QBOVS2PV.js.map} +0 -0
  69. /package/dist/{expert-bridge-RDY47MFM.js.map → expert-bridge-7GT2TPM4.js.map} +0 -0
  70. /package/dist/{factory-3DVB6TV6.js.map → factory-7CF7KPZD.js.map} +0 -0
  71. /package/dist/{factory-VEXE4RXU.js.map → factory-B4RFWJFK.js.map} +0 -0
  72. /package/dist/{issue-triage-SCQMQI6A.js.map → issue-triage-RUAN7U3E.js.map} +0 -0
  73. /package/dist/{mcp-config-F6ZJD564.js.map → mcp-config-IGSZJ6V4.js.map} +0 -0
  74. /package/dist/{mobimem-XYRENZW7.js.map → mobimem-4I3VN7HE.js.map} +0 -0
  75. /package/dist/{repo-security-plan-XPOOUKAV.js.map → repo-security-plan-WFPK2V7U.js.map} +0 -0
  76. /package/dist/{research-helpers-synthesize-MRO44W5J.js.map → research-helpers-synthesize-RYXRUNDQ.js.map} +0 -0
  77. /package/dist/{routing-memory-YUETBIJU.js.map → routing-memory-SS3FLYDV.js.map} +0 -0
  78. /package/dist/{session-memory-7MHDTB6O.js.map → session-memory-IGXMRL47.js.map} +0 -0
  79. /package/dist/{setup-command-LZB74W4I.js.map → setup-command-A7XLIUX5.js.map} +0 -0
  80. /package/dist/{setup-config-KPMWBIHD.js.map → setup-config-OD6ZZWKZ.js.map} +0 -0
  81. /package/dist/{weather-report-3WN4FVQ6.js.map → weather-report-3L72MUQ3.js.map} +0 -0
@@ -2,9 +2,9 @@ import {
2
2
  AdaptiveMemoryBackend,
3
3
  DEFAULT_SCORING_CONFIG,
4
4
  createAdaptiveMemory
5
- } from "./chunk-GLOJ6EDL.js";
5
+ } from "./chunk-Z2EQVPEU.js";
6
6
  import "./chunk-633WH2ML.js";
7
- import "./chunk-K5N4OL66.js";
7
+ import "./chunk-ZVXTKGMG.js";
8
8
  import "./chunk-CLYZ7FWP.js";
9
9
  import "./chunk-UP2VWCW5.js";
10
10
  export {
@@ -12,4 +12,4 @@ export {
12
12
  DEFAULT_SCORING_CONFIG,
13
13
  createAdaptiveMemory
14
14
  };
15
- //# sourceMappingURL=adaptive-memory-EDCJHRH3.js.map
15
+ //# sourceMappingURL=adaptive-memory-FF4LRS3M.js.map
@@ -2,13 +2,13 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-OREUX6UF.js";
5
+ } from "./chunk-NPISXFJY.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getTimeProvider,
10
10
  ok
11
- } from "./chunk-K5N4OL66.js";
11
+ } from "./chunk-ZVXTKGMG.js";
12
12
 
13
13
  // src/cli-adapters/fallback-chains.ts
14
14
  import { z } from "zod";
@@ -192,4 +192,4 @@ export {
192
192
  CliCircuitBreakerIntegration,
193
193
  createCliCircuitBreakerIntegration
194
194
  };
195
- //# sourceMappingURL=chunk-2JPQ2ICM.js.map
195
+ //# sourceMappingURL=chunk-2DVT67R2.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  resolveToken
3
- } from "./chunk-SUDYZIVI.js";
3
+ } from "./chunk-FTH5Y5II.js";
4
4
  import {
5
5
  GitHubProvider,
6
6
  ScmError
7
- } from "./chunk-FPBRLZXV.js";
7
+ } from "./chunk-DUGURS54.js";
8
8
  import {
9
9
  err,
10
10
  ok
11
- } from "./chunk-K5N4OL66.js";
11
+ } from "./chunk-ZVXTKGMG.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-R4LU2LYM.js.map
44
+ //# sourceMappingURL=chunk-3YEDP3LK.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BC3M4VLP.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-K5N4OL66.js";
6
+ } from "./chunk-ZVXTKGMG.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-FO6C5AQ6.js.map
700
+ //# sourceMappingURL=chunk-4R2BADP4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-K5N4OL66.js";
3
+ } from "./chunk-ZVXTKGMG.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { existsSync, writeFileSync } from "fs";
@@ -59,4 +59,4 @@ function runConfigInitSync(projectRoot, force, dryRun) {
59
59
  export {
60
60
  runConfigInitSync
61
61
  };
62
- //# sourceMappingURL=chunk-DGMLBF4U.js.map
62
+ //# sourceMappingURL=chunk-DUGFNXRP.js.map
@@ -3,7 +3,7 @@ import {
3
3
  err,
4
4
  getErrorMessage,
5
5
  ok
6
- } from "./chunk-K5N4OL66.js";
6
+ } from "./chunk-ZVXTKGMG.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-FPBRLZXV.js.map
246
+ //# sourceMappingURL=chunk-DUGURS54.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-FPBRLZXV.js";
4
+ } from "./chunk-DUGURS54.js";
5
5
  import {
6
6
  CACHE_TIMEOUTS,
7
7
  createLogger,
8
8
  err,
9
9
  getTimeProvider,
10
10
  ok
11
- } from "./chunk-K5N4OL66.js";
11
+ } from "./chunk-ZVXTKGMG.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-PTLZM2LZ.js.map
1585
+ //# sourceMappingURL=chunk-ESI6I6IF.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  err,
4
4
  ok
5
- } from "./chunk-K5N4OL66.js";
5
+ } from "./chunk-ZVXTKGMG.js";
6
6
 
7
7
  // src/scm/token-resolver.ts
8
8
  import { execFile } from "child_process";
@@ -87,4 +87,4 @@ export {
87
87
  hasToken,
88
88
  getTokenEnvVars
89
89
  };
90
- //# sourceMappingURL=chunk-SUDYZIVI.js.map
90
+ //# sourceMappingURL=chunk-FTH5Y5II.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CliCircuitBreaker,
3
3
  DEFAULT_CIRCUIT_BREAKER_CONFIG
4
- } from "./chunk-OREUX6UF.js";
4
+ } from "./chunk-NPISXFJY.js";
5
5
  import {
6
6
  CLI_SUBPROCESS_TIMEOUTS,
7
7
  CLI_TIMEOUTS,
@@ -25,7 +25,7 @@ import {
25
25
  getTimeProvider,
26
26
  isRateLimitText,
27
27
  ok
28
- } from "./chunk-K5N4OL66.js";
28
+ } from "./chunk-ZVXTKGMG.js";
29
29
 
30
30
  // src/cli-adapters/subprocess-adapter.ts
31
31
  import { spawn } from "child_process";
@@ -2727,4 +2727,4 @@ export {
2727
2727
  isCliAvailable,
2728
2728
  getAvailableClis
2729
2729
  };
2730
- //# sourceMappingURL=chunk-VUJ2PDT7.js.map
2730
+ //# sourceMappingURL=chunk-HNI3NK4K.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  getTimeProvider,
4
4
  isRateLimitText
5
- } from "./chunk-K5N4OL66.js";
5
+ } from "./chunk-ZVXTKGMG.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-F6ZJD564.js");
15
+ const { generateMcpConfig } = await import("./mcp-config-IGSZJ6V4.js");
16
16
  const config = await generateMcpConfig();
17
17
  cachedMcpConfigPath = config.configPath;
18
18
  return cachedMcpConfigPath;
@@ -38,13 +38,13 @@ function adaptCompositeRouter(compositeRouter) {
38
38
  }
39
39
  async function getRouter() {
40
40
  if (cachedRouter !== null) return cachedRouter;
41
- const { createAllAdapters } = await import("./factory-3DVB6TV6.js");
42
- const { createCompositeRouter } = await import("./composite-router-QGP6USAP.js");
41
+ const { createAllAdapters } = await import("./factory-B4RFWJFK.js");
42
+ const { createCompositeRouter } = await import("./composite-router-UJVTEANR.js");
43
43
  const adapters = createAllAdapters();
44
44
  if (adapters.size === 0) return null;
45
45
  cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
46
46
  try {
47
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-U3XLQNCL.js");
47
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-PTIXGLJT.js");
48
48
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
49
49
  } catch (error) {
50
50
  const msg = error instanceof Error ? error.message : String(error);
@@ -136,4 +136,4 @@ ${prompt}`;
136
136
  export {
137
137
  executeExpert
138
138
  };
139
- //# sourceMappingURL=chunk-6BOVBYY5.js.map
139
+ //# sourceMappingURL=chunk-IPRGKBMI.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getTokenEnvVars,
3
3
  resolveToken
4
- } from "./chunk-SUDYZIVI.js";
4
+ } from "./chunk-FTH5Y5II.js";
5
5
  import {
6
6
  ClaudeAdapter,
7
7
  DEFAULT_RELEVANCE_CONFIG,
@@ -25,7 +25,7 @@ import {
25
25
  toolSuccessStructured,
26
26
  withProgressHeartbeat,
27
27
  wrapToolWithTimeout
28
- } from "./chunk-4VB3PQTO.js";
28
+ } from "./chunk-KZZIPU4X.js";
29
29
  import {
30
30
  REGISTRY_PATH,
31
31
  getProjectRoot,
@@ -35,14 +35,14 @@ import {
35
35
  resolveInsideRoot,
36
36
  savePapersRegistry,
37
37
  synthesizeResearch
38
- } from "./chunk-7PZGCG37.js";
38
+ } from "./chunk-ZRYYNLJT.js";
39
39
  import {
40
40
  IssueTriage,
41
41
  sanitizeInput
42
- } from "./chunk-PTLZM2LZ.js";
42
+ } from "./chunk-ESI6I6IF.js";
43
43
  import {
44
44
  generateSecurityPlan
45
- } from "./chunk-FO6C5AQ6.js";
45
+ } from "./chunk-4R2BADP4.js";
46
46
  import {
47
47
  analyzeGitHubRepo
48
48
  } from "./chunk-BC3M4VLP.js";
@@ -65,14 +65,14 @@ import {
65
65
  import {
66
66
  DEFAULT_TASK_TTL_MS,
67
67
  clampTaskTtl
68
- } from "./chunk-PR7QRV6S.js";
68
+ } from "./chunk-XHLEJFLY.js";
69
69
  import {
70
70
  createSessionMemory
71
- } from "./chunk-6SUCK2NV.js";
71
+ } from "./chunk-SL2N2TEK.js";
72
72
  import {
73
73
  MemoryImportance,
74
74
  calculateTextJaccardSimilarity
75
- } from "./chunk-GLOJ6EDL.js";
75
+ } from "./chunk-Z2EQVPEU.js";
76
76
  import {
77
77
  STOPWORDS,
78
78
  capitalize,
@@ -81,13 +81,13 @@ import {
81
81
  } from "./chunk-633WH2ML.js";
82
82
  import {
83
83
  generateMcpConfig
84
- } from "./chunk-WFG3BWWK.js";
84
+ } from "./chunk-RP4ZPI77.js";
85
85
  import {
86
86
  getFallbackChainForCategory
87
- } from "./chunk-2JPQ2ICM.js";
87
+ } from "./chunk-2DVT67R2.js";
88
88
  import {
89
89
  executeExpert
90
- } from "./chunk-6BOVBYY5.js";
90
+ } from "./chunk-IPRGKBMI.js";
91
91
  import {
92
92
  ClaudeCliAdapter,
93
93
  CliDetectionCache,
@@ -96,7 +96,7 @@ import {
96
96
  getAvailableClis,
97
97
  sleep,
98
98
  withTimeout
99
- } from "./chunk-VUJ2PDT7.js";
99
+ } from "./chunk-HNI3NK4K.js";
100
100
  import {
101
101
  AGENT_ROUTER_TIMEOUTS,
102
102
  API_TIMEOUTS,
@@ -167,7 +167,7 @@ import {
167
167
  ok,
168
168
  toExpertTaskAnalysisResult,
169
169
  withStep
170
- } from "./chunk-K5N4OL66.js";
170
+ } from "./chunk-ZVXTKGMG.js";
171
171
  import {
172
172
  isPersistenceEnabled
173
173
  } from "./chunk-CLYZ7FWP.js";
@@ -28234,23 +28234,35 @@ function emitHookFailed(opts) {
28234
28234
  });
28235
28235
  }
28236
28236
  async function executeHook(base, run, onSuccess, onFailure) {
28237
- const startTime = getTimeProvider().now();
28238
- emitHookEvent({ type: "hook_started", ...base });
28239
- try {
28240
- const result = await run();
28241
- const durationMs = getTimeProvider().now() - startTime;
28242
- if (result.ok) {
28243
- emitHookEvent({ type: "hook_completed", ...base, durationMs });
28244
- return onSuccess(durationMs);
28237
+ return withStep(
28238
+ {
28239
+ name: `hook:${base.hookPhase}:${base.nodeId}`,
28240
+ kind: "graph.hook",
28241
+ attrs: { nodeId: base.nodeId, hookName: base.hookName, phase: base.hookPhase }
28242
+ },
28243
+ async (ctx) => {
28244
+ const startTime = getTimeProvider().now();
28245
+ emitHookEvent({ type: "hook_started", ...base });
28246
+ try {
28247
+ const result = await run();
28248
+ const durationMs = getTimeProvider().now() - startTime;
28249
+ if (result.ok) {
28250
+ emitHookEvent({ type: "hook_completed", ...base, durationMs });
28251
+ ctx.setSummary(`${base.hookPhase} passed`);
28252
+ return onSuccess(durationMs);
28253
+ }
28254
+ emitHookFailed({ ...base, error: result.error.message });
28255
+ ctx.setSummary(`${base.hookPhase} failed: ${result.error.message}`);
28256
+ return onFailure(durationMs, result.error.message);
28257
+ } catch (error) {
28258
+ const durationMs = getTimeProvider().now() - startTime;
28259
+ const msg = error instanceof Error ? error.message : String(error);
28260
+ emitHookFailed({ ...base, error: msg });
28261
+ ctx.setSummary(`${base.hookPhase} error: ${msg}`);
28262
+ return onFailure(durationMs, msg);
28263
+ }
28245
28264
  }
28246
- emitHookFailed({ ...base, error: result.error.message });
28247
- return onFailure(durationMs, result.error.message);
28248
- } catch (error) {
28249
- const durationMs = getTimeProvider().now() - startTime;
28250
- const msg = error instanceof Error ? error.message : String(error);
28251
- emitHookFailed({ ...base, error: msg });
28252
- return onFailure(durationMs, msg);
28253
- }
28265
+ );
28254
28266
  }
28255
28267
  async function runSinglePrecondition(config, ctx, options) {
28256
28268
  const base = {
@@ -35958,25 +35970,38 @@ async function runExpertTask(deps, args, expert) {
35958
35970
  const fallback = await tryExpertFallback(expert, task, deps.logger);
35959
35971
  if (fallback !== void 0) return fallback;
35960
35972
  }
35961
- deps.logger?.info("Executing expert task", { expertId, role: expert.role, taskId: task.id });
35962
- const monitor = getHeartbeatMonitor();
35963
- const sessionId = monitor.startSession(expertId);
35964
- const startTime = getTimeProvider().now();
35965
- const heartbeatTimer = setInterval(() => {
35966
- if (monitor.isExpired(sessionId)) {
35967
- deps.logger?.warn("Expert session expired", { expertId, sessionId });
35973
+ return withStep(
35974
+ { name: `expert:${expert.role}`, kind: "expert.exec", attrs: { expertId, role: expert.role } },
35975
+ async (ctx) => {
35976
+ const monitor = getHeartbeatMonitor();
35977
+ const sessionId = monitor.startSession(expertId);
35978
+ const startTime = getTimeProvider().now();
35979
+ const heartbeatTimer = setInterval(() => {
35980
+ if (monitor.isExpired(sessionId)) {
35981
+ deps.logger?.warn("Expert session expired", { expertId, sessionId });
35982
+ }
35983
+ monitor.heartbeat(sessionId);
35984
+ }, HEARTBEAT_TIMEOUTS.heartbeatIntervalMs);
35985
+ let result;
35986
+ try {
35987
+ result = await expert.execute(task);
35988
+ } finally {
35989
+ clearInterval(heartbeatTimer);
35990
+ monitor.endSession(sessionId);
35991
+ }
35992
+ const durationMs = getTimeProvider().now() - startTime;
35993
+ const classified = await classifyExpertResult({
35994
+ result,
35995
+ expert,
35996
+ task,
35997
+ args,
35998
+ durationMs,
35999
+ logger: deps.logger
36000
+ });
36001
+ ctx.setSummary(classified.ok ? `${expert.role} ok` : `${expert.role} failed`);
36002
+ return classified;
35968
36003
  }
35969
- monitor.heartbeat(sessionId);
35970
- }, HEARTBEAT_TIMEOUTS.heartbeatIntervalMs);
35971
- let result;
35972
- try {
35973
- result = await expert.execute(task);
35974
- } finally {
35975
- clearInterval(heartbeatTimer);
35976
- monitor.endSession(sessionId);
35977
- }
35978
- const durationMs = getTimeProvider().now() - startTime;
35979
- return classifyExpertResult({ result, expert, task, args, durationMs, logger: deps.logger });
36004
+ );
35980
36005
  }
35981
36006
  async function handleExecuteExpert(deps, args) {
35982
36007
  const lookup = lookupExpert(deps.expertRegistry, args.expertId);
@@ -40972,7 +40997,7 @@ async function tryIssueTriage(task) {
40972
40997
  try {
40973
40998
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
40974
40999
  if (issueMatch === null) return null;
40975
- const { createIssueTriage } = await import("./issue-triage-SCQMQI6A.js");
41000
+ const { createIssueTriage } = await import("./issue-triage-RUAN7U3E.js");
40976
41001
  const triage = createIssueTriage();
40977
41002
  const owner = issueMatch[1] ?? "";
40978
41003
  const num = issueMatch[2] ?? "";
@@ -41000,7 +41025,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
41000
41025
  ]);
41001
41026
  async function classifyWithLLM(task) {
41002
41027
  try {
41003
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-RDY47MFM.js");
41028
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-7GT2TPM4.js");
41004
41029
  const prompt = [
41005
41030
  "Classify this task into exactly one pipeline template.",
41006
41031
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -41794,7 +41819,7 @@ var memoryInitPromise = null;
41794
41819
  async function initPipelineMemory() {
41795
41820
  if (cachedMemory !== null) return cachedMemory;
41796
41821
  try {
41797
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-7MHDTB6O.js");
41822
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-IGXMRL47.js");
41798
41823
  const { LEARNING_DIR } = await import("./learning-persistence-WMWZJZ35.js");
41799
41824
  const mem = createSessionMemory2(LEARNING_DIR);
41800
41825
  mem.startSession(`pipeline-${String(Date.now())}`);
@@ -41847,7 +41872,7 @@ async function persistMobiMemState() {
41847
41872
  if (!isPersistenceEnabled2()) return;
41848
41873
  const os5 = await import("os");
41849
41874
  const path19 = await import("path");
41850
- const { createMobiMem } = await import("./mobimem-XYRENZW7.js");
41875
+ const { createMobiMem } = await import("./mobimem-4I3VN7HE.js");
41851
41876
  const mobimem = createMobiMem();
41852
41877
  const savePath = path19.join(os5.homedir(), ".nexus-agents", "memory", "mobimem-state.json");
41853
41878
  await mobimem.save(savePath);
@@ -41864,7 +41889,7 @@ function recordRoutingExperience(category, success, durationMs) {
41864
41889
  callRecord(routingMemoryCache);
41865
41890
  return;
41866
41891
  }
41867
- void import("./routing-memory-YUETBIJU.js").then(({ createRoutingMemory }) => {
41892
+ void import("./routing-memory-SS3FLYDV.js").then(({ createRoutingMemory }) => {
41868
41893
  routingMemoryCache = createRoutingMemory();
41869
41894
  callRecord(routingMemoryCache);
41870
41895
  }).catch((error) => {
@@ -41893,7 +41918,7 @@ ${text}` : "";
41893
41918
  }
41894
41919
  async function getWeatherContext() {
41895
41920
  try {
41896
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-3WN4FVQ6.js");
41921
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-3L72MUQ3.js");
41897
41922
  const report = generateWeatherReport2({ includeAdaptive: true });
41898
41923
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
41899
41924
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -41910,7 +41935,7 @@ ${lines}
41910
41935
  }
41911
41936
  async function getMemoryContext(task) {
41912
41937
  try {
41913
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-7MHDTB6O.js");
41938
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-IGXMRL47.js");
41914
41939
  const { LEARNING_DIR } = await import("./learning-persistence-WMWZJZ35.js");
41915
41940
  const memory = createSessionMemory2(LEARNING_DIR, { maxLearningsInContext: 10 });
41916
41941
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -42003,7 +42028,7 @@ ${contextBlock}`;
42003
42028
  const strategy = config.votingStrategy ?? "higher_order";
42004
42029
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
42005
42030
  try {
42006
- const { executeVoting } = await import("./consensus-vote-GEQK32G7.js");
42031
+ const { executeVoting } = await import("./consensus-vote-PR6OOWNP.js");
42007
42032
  const votingResult = await executeVoting(
42008
42033
  {
42009
42034
  proposal: plan.slice(0, 4e3),
@@ -42872,7 +42897,7 @@ async function extractSymbolsForTask(task) {
42872
42897
  }
42873
42898
  async function retrieveAdaptiveMemory(task) {
42874
42899
  try {
42875
- const { AdaptiveMemoryBackend } = await import("./adaptive-memory-EDCJHRH3.js");
42900
+ const { AdaptiveMemoryBackend } = await import("./adaptive-memory-FF4LRS3M.js");
42876
42901
  const os5 = await import("os");
42877
42902
  const path19 = await import("path");
42878
42903
  const baseDir = path19.join(os5.homedir(), ".nexus-agents", "memory");
@@ -42891,7 +42916,7 @@ async function retrieveAdaptiveMemory(task) {
42891
42916
  }
42892
42917
  async function queryResearchRegistry(task) {
42893
42918
  try {
42894
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-MRO44W5J.js");
42919
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-RYXRUNDQ.js");
42895
42920
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
42896
42921
  if (topic === void 0) return null;
42897
42922
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -42976,7 +43001,7 @@ function createScanStageWrapper() {
42976
43001
  try {
42977
43002
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
42978
43003
  if (slug !== void 0) {
42979
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-XPOOUKAV.js");
43004
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-WFPK2V7U.js");
42980
43005
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
42981
43006
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
42982
43007
  ctx.sharedMemory.write("scan", "decision", { recommendations: recs });
@@ -52395,7 +52420,7 @@ var GitHubTaskTracker = class {
52395
52420
  cachedProvider = null;
52396
52421
  async getProvider() {
52397
52422
  if (this.cachedProvider !== null) return this.cachedProvider;
52398
- const { createScmProvider } = await import("./factory-VEXE4RXU.js");
52423
+ const { createScmProvider } = await import("./factory-7CF7KPZD.js");
52399
52424
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
52400
52425
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
52401
52426
  this.cachedProvider = result.value;
@@ -53234,4 +53259,4 @@ export {
53234
53259
  detectBackend,
53235
53260
  createTaskTracker
53236
53261
  };
53237
- //# sourceMappingURL=chunk-7DNUEEGG.js.map
53262
+ //# sourceMappingURL=chunk-JPPXO7PQ.js.map