nexus-agents 2.75.0 → 2.76.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 (100) hide show
  1. package/dist/{adaptive-memory-OJY3IVNM.js → adaptive-memory-EI564K4C.js} +3 -3
  2. package/dist/{child-mcp-config-KMCKKPNY.js → child-mcp-config-MJMUF7TL.js} +2 -2
  3. package/dist/{chunk-Q3RFPJYK.js → chunk-3MRM53T4.js} +8 -2
  4. package/dist/{chunk-Q3RFPJYK.js.map → chunk-3MRM53T4.js.map} +1 -1
  5. package/dist/{chunk-EQHYXT56.js → chunk-3VWMM6UF.js} +2 -2
  6. package/dist/{chunk-QON7LR7J.js → chunk-5WHWKY32.js} +2 -2
  7. package/dist/{chunk-3SZBDLFX.js → chunk-6AY5DK4E.js} +3 -3
  8. package/dist/{chunk-PAFH336F.js → chunk-7NK7BTWP.js} +2 -2
  9. package/dist/{chunk-3ESCBV47.js → chunk-BJ2OMC7P.js} +2 -2
  10. package/dist/{chunk-Q6JDV36D.js → chunk-C2LLQ6TW.js} +3 -3
  11. package/dist/{chunk-DGELGUZF.js → chunk-CM3TORGV.js} +2 -2
  12. package/dist/{chunk-4K6L7RKC.js → chunk-DIB6V67T.js} +3 -3
  13. package/dist/{chunk-44MVIL3F.js → chunk-DSQ5XM4O.js} +4 -4
  14. package/dist/{chunk-VJD5LANR.js → chunk-ERWXGXV2.js} +3 -3
  15. package/dist/{chunk-BK54O5J5.js → chunk-G6ZPVADX.js} +2 -2
  16. package/dist/{chunk-G5NSRX6Z.js → chunk-GAA7XTB6.js} +25 -25
  17. package/dist/{chunk-QCKKDUNX.js → chunk-GBILTGR6.js} +7 -7
  18. package/dist/{chunk-NQR7QAZX.js → chunk-IPWCD22D.js} +2 -2
  19. package/dist/{chunk-Q7FTNKPO.js → chunk-JN6UWGHH.js} +62 -28
  20. package/dist/chunk-JN6UWGHH.js.map +1 -0
  21. package/dist/{chunk-JK3DIVQT.js → chunk-JWQUKMR2.js} +4 -4
  22. package/dist/{chunk-2SVS5WRV.js → chunk-MGLWPN2I.js} +2 -2
  23. package/dist/{chunk-TBRNRW2Q.js → chunk-PWTJGGKB.js} +2 -2
  24. package/dist/{chunk-T5VPZZYX.js → chunk-TMOGKDC2.js} +30 -10
  25. package/dist/chunk-TMOGKDC2.js.map +1 -0
  26. package/dist/{chunk-NC2LECY6.js → chunk-VEF6DCQU.js} +3 -3
  27. package/dist/{chunk-UWJKMBPL.js → chunk-X3BU5MIG.js} +6 -6
  28. package/dist/{chunk-G5VE2DZS.js → chunk-YJ2IGAD2.js} +2 -2
  29. package/dist/{chunk-GS3GW7C7.js → chunk-YQMQSJQK.js} +2 -2
  30. package/dist/{chunk-CCODJRS6.js → chunk-ZKOBXAPK.js} +2 -2
  31. package/dist/{cli-circuit-breaker-STXIH563.js → cli-circuit-breaker-YX4BWZD5.js} +4 -4
  32. package/dist/cli.js +33 -31
  33. package/dist/cli.js.map +1 -1
  34. package/dist/{composite-router-7AHZN3VI.js → composite-router-S6E26BCI.js} +2 -2
  35. package/dist/{consensus-vote-XY55C7WQ.js → consensus-vote-KDSLAWQL.js} +11 -11
  36. package/dist/{doctor-deep-ONHJTGR4.js → doctor-deep-BRU5ZUJI.js} +3 -3
  37. package/dist/{expert-bridge-3AWQHR65.js → expert-bridge-DWBO2HXZ.js} +3 -3
  38. package/dist/{factory-E5NMAMZC.js → factory-A7DTCCUY.js} +5 -5
  39. package/dist/{factory-HWHQ44BB.js → factory-LXOVC44K.js} +4 -4
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.js +22 -22
  42. package/dist/{init-opencode-Z7OQ5RCB.js → init-opencode-CFE7M6XA.js} +25 -5
  43. package/dist/init-opencode-CFE7M6XA.js.map +1 -0
  44. package/dist/{issue-triage-UWBHMQHC.js → issue-triage-6XD6CVPB.js} +4 -4
  45. package/dist/{mobimem-G4UXJTCV.js → mobimem-CG2MNS7V.js} +2 -2
  46. package/dist/{registry-command-HYWVRAHE.js → registry-command-RPPC7N2K.js} +2 -2
  47. package/dist/{repo-security-plan-W35CXK3T.js → repo-security-plan-EIL2BV3S.js} +3 -3
  48. package/dist/{research-helpers-synthesize-GUQORWL4.js → research-helpers-synthesize-36TUTUUA.js} +5 -3
  49. package/dist/{routing-memory-VOJBOX3X.js → routing-memory-5VTX7LQX.js} +2 -2
  50. package/dist/{session-memory-B6LQMF4N.js → session-memory-7XBV6BMY.js} +3 -3
  51. package/dist/{setup-command-S2XCW7K5.js → setup-command-3H2XXBJ3.js} +9 -9
  52. package/dist/{setup-config-53MHJA7S.js → setup-config-EI5KROA3.js} +3 -3
  53. package/dist/{setup-custom-api-VD5W754A.js → setup-custom-api-WM5W5AY5.js} +4 -4
  54. package/dist/{weather-report-APASTJDQ.js → weather-report-YJMVKJGA.js} +2 -2
  55. package/package.json +1 -1
  56. package/dist/chunk-Q7FTNKPO.js.map +0 -1
  57. package/dist/chunk-T5VPZZYX.js.map +0 -1
  58. package/dist/init-opencode-Z7OQ5RCB.js.map +0 -1
  59. /package/dist/{adaptive-memory-OJY3IVNM.js.map → adaptive-memory-EI564K4C.js.map} +0 -0
  60. /package/dist/{child-mcp-config-KMCKKPNY.js.map → child-mcp-config-MJMUF7TL.js.map} +0 -0
  61. /package/dist/{chunk-EQHYXT56.js.map → chunk-3VWMM6UF.js.map} +0 -0
  62. /package/dist/{chunk-QON7LR7J.js.map → chunk-5WHWKY32.js.map} +0 -0
  63. /package/dist/{chunk-3SZBDLFX.js.map → chunk-6AY5DK4E.js.map} +0 -0
  64. /package/dist/{chunk-PAFH336F.js.map → chunk-7NK7BTWP.js.map} +0 -0
  65. /package/dist/{chunk-3ESCBV47.js.map → chunk-BJ2OMC7P.js.map} +0 -0
  66. /package/dist/{chunk-Q6JDV36D.js.map → chunk-C2LLQ6TW.js.map} +0 -0
  67. /package/dist/{chunk-DGELGUZF.js.map → chunk-CM3TORGV.js.map} +0 -0
  68. /package/dist/{chunk-4K6L7RKC.js.map → chunk-DIB6V67T.js.map} +0 -0
  69. /package/dist/{chunk-44MVIL3F.js.map → chunk-DSQ5XM4O.js.map} +0 -0
  70. /package/dist/{chunk-VJD5LANR.js.map → chunk-ERWXGXV2.js.map} +0 -0
  71. /package/dist/{chunk-BK54O5J5.js.map → chunk-G6ZPVADX.js.map} +0 -0
  72. /package/dist/{chunk-G5NSRX6Z.js.map → chunk-GAA7XTB6.js.map} +0 -0
  73. /package/dist/{chunk-QCKKDUNX.js.map → chunk-GBILTGR6.js.map} +0 -0
  74. /package/dist/{chunk-NQR7QAZX.js.map → chunk-IPWCD22D.js.map} +0 -0
  75. /package/dist/{chunk-JK3DIVQT.js.map → chunk-JWQUKMR2.js.map} +0 -0
  76. /package/dist/{chunk-2SVS5WRV.js.map → chunk-MGLWPN2I.js.map} +0 -0
  77. /package/dist/{chunk-TBRNRW2Q.js.map → chunk-PWTJGGKB.js.map} +0 -0
  78. /package/dist/{chunk-NC2LECY6.js.map → chunk-VEF6DCQU.js.map} +0 -0
  79. /package/dist/{chunk-UWJKMBPL.js.map → chunk-X3BU5MIG.js.map} +0 -0
  80. /package/dist/{chunk-G5VE2DZS.js.map → chunk-YJ2IGAD2.js.map} +0 -0
  81. /package/dist/{chunk-GS3GW7C7.js.map → chunk-YQMQSJQK.js.map} +0 -0
  82. /package/dist/{chunk-CCODJRS6.js.map → chunk-ZKOBXAPK.js.map} +0 -0
  83. /package/dist/{cli-circuit-breaker-STXIH563.js.map → cli-circuit-breaker-YX4BWZD5.js.map} +0 -0
  84. /package/dist/{composite-router-7AHZN3VI.js.map → composite-router-S6E26BCI.js.map} +0 -0
  85. /package/dist/{consensus-vote-XY55C7WQ.js.map → consensus-vote-KDSLAWQL.js.map} +0 -0
  86. /package/dist/{doctor-deep-ONHJTGR4.js.map → doctor-deep-BRU5ZUJI.js.map} +0 -0
  87. /package/dist/{expert-bridge-3AWQHR65.js.map → expert-bridge-DWBO2HXZ.js.map} +0 -0
  88. /package/dist/{factory-E5NMAMZC.js.map → factory-A7DTCCUY.js.map} +0 -0
  89. /package/dist/{factory-HWHQ44BB.js.map → factory-LXOVC44K.js.map} +0 -0
  90. /package/dist/{issue-triage-UWBHMQHC.js.map → issue-triage-6XD6CVPB.js.map} +0 -0
  91. /package/dist/{mobimem-G4UXJTCV.js.map → mobimem-CG2MNS7V.js.map} +0 -0
  92. /package/dist/{registry-command-HYWVRAHE.js.map → registry-command-RPPC7N2K.js.map} +0 -0
  93. /package/dist/{repo-security-plan-W35CXK3T.js.map → repo-security-plan-EIL2BV3S.js.map} +0 -0
  94. /package/dist/{research-helpers-synthesize-GUQORWL4.js.map → research-helpers-synthesize-36TUTUUA.js.map} +0 -0
  95. /package/dist/{routing-memory-VOJBOX3X.js.map → routing-memory-5VTX7LQX.js.map} +0 -0
  96. /package/dist/{session-memory-B6LQMF4N.js.map → session-memory-7XBV6BMY.js.map} +0 -0
  97. /package/dist/{setup-command-S2XCW7K5.js.map → setup-command-3H2XXBJ3.js.map} +0 -0
  98. /package/dist/{setup-config-53MHJA7S.js.map → setup-config-EI5KROA3.js.map} +0 -0
  99. /package/dist/{setup-custom-api-VD5W754A.js.map → setup-custom-api-WM5W5AY5.js.map} +0 -0
  100. /package/dist/{weather-report-APASTJDQ.js.map → weather-report-YJMVKJGA.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  getErrorMessage,
5
5
  getTimeProvider,
6
6
  ok
7
- } from "./chunk-Q3RFPJYK.js";
7
+ } from "./chunk-3MRM53T4.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-EQHYXT56.js.map
354
+ //# sourceMappingURL=chunk-3VWMM6UF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-Q3RFPJYK.js";
3
+ } from "./chunk-3MRM53T4.js";
4
4
 
5
5
  // src/config/available-models-cache.ts
6
6
  var logger = createLogger({ component: "available-models-cache" });
@@ -150,4 +150,4 @@ export {
150
150
  getDefaultAvailableModelsCache,
151
151
  setDefaultAvailableModelsCache
152
152
  };
153
- //# sourceMappingURL=chunk-QON7LR7J.js.map
153
+ //# sourceMappingURL=chunk-5WHWKY32.js.map
@@ -2,14 +2,14 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-TBRNRW2Q.js";
5
+ } from "./chunk-PWTJGGKB.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getFallbackChainForCategory,
10
10
  getTimeProvider,
11
11
  ok
12
- } from "./chunk-Q3RFPJYK.js";
12
+ } from "./chunk-3MRM53T4.js";
13
13
 
14
14
  // src/cli-adapters/cli-circuit-breaker.ts
15
15
  var CATEGORY_TO_FALLBACK = {
@@ -152,4 +152,4 @@ export {
152
152
  CliCircuitBreakerIntegration,
153
153
  createCliCircuitBreakerIntegration
154
154
  };
155
- //# sourceMappingURL=chunk-3SZBDLFX.js.map
155
+ //# sourceMappingURL=chunk-6AY5DK4E.js.map
@@ -2,7 +2,7 @@ import {
2
2
  ConfigError,
3
3
  err,
4
4
  ok
5
- } from "./chunk-Q3RFPJYK.js";
5
+ } from "./chunk-3MRM53T4.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-PAFH336F.js.map
120
+ //# sourceMappingURL=chunk-7NK7BTWP.js.map
@@ -11,7 +11,7 @@ import {
11
11
  formatZodError,
12
12
  getTimeProvider,
13
13
  ok
14
- } from "./chunk-Q3RFPJYK.js";
14
+ } from "./chunk-3MRM53T4.js";
15
15
 
16
16
  // src/context/memory-backend-types.ts
17
17
  import { z } from "zod";
@@ -941,4 +941,4 @@ export {
941
941
  AdaptiveMemoryBackend,
942
942
  createAdaptiveMemory
943
943
  };
944
- //# sourceMappingURL=chunk-3ESCBV47.js.map
944
+ //# sourceMappingURL=chunk-BJ2OMC7P.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenAIAdapter
3
- } from "./chunk-4K6L7RKC.js";
3
+ } from "./chunk-DIB6V67T.js";
4
4
  import {
5
5
  ConfigError,
6
6
  createLogger,
@@ -9,7 +9,7 @@ import {
9
9
  getTimeProvider,
10
10
  lookupInTreeCapability,
11
11
  ok
12
- } from "./chunk-Q3RFPJYK.js";
12
+ } from "./chunk-3MRM53T4.js";
13
13
  import {
14
14
  getNexusDataDir
15
15
  } from "./chunk-GOT7OAL5.js";
@@ -307,4 +307,4 @@ export {
307
307
  discoverModels,
308
308
  buildOpenAICompatAdapters
309
309
  };
310
- //# sourceMappingURL=chunk-Q6JDV36D.js.map
310
+ //# sourceMappingURL=chunk-C2LLQ6TW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-Q3RFPJYK.js";
3
+ } from "./chunk-3MRM53T4.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-DGELGUZF.js.map
77
+ //# sourceMappingURL=chunk-CM3TORGV.js.map
@@ -3,14 +3,14 @@ import {
3
3
  createStream,
4
4
  requireApiKey,
5
5
  validateApiKeyPresence
6
- } from "./chunk-NQR7QAZX.js";
6
+ } from "./chunk-IPWCD22D.js";
7
7
  import {
8
8
  ModelCapability,
9
9
  err,
10
10
  getCliModelName,
11
11
  getTokenEstimator,
12
12
  ok
13
- } from "./chunk-Q3RFPJYK.js";
13
+ } from "./chunk-3MRM53T4.js";
14
14
 
15
15
  // src/adapters/openai-types.ts
16
16
  var OPENAI_MODELS = {
@@ -553,4 +553,4 @@ export {
553
553
  OpenAIAdapter,
554
554
  createOpenAIAdapter
555
555
  };
556
- //# sourceMappingURL=chunk-4K6L7RKC.js.map
556
+ //# sourceMappingURL=chunk-DIB6V67T.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  resolveToken
3
- } from "./chunk-2SVS5WRV.js";
3
+ } from "./chunk-MGLWPN2I.js";
4
4
  import {
5
5
  GitHubProvider,
6
6
  ScmError
7
- } from "./chunk-BK54O5J5.js";
7
+ } from "./chunk-G6ZPVADX.js";
8
8
  import {
9
9
  err,
10
10
  ok
11
- } from "./chunk-Q3RFPJYK.js";
11
+ } from "./chunk-3MRM53T4.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-44MVIL3F.js.map
44
+ //# sourceMappingURL=chunk-DSQ5XM4O.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-BK54O5J5.js";
4
+ } from "./chunk-G6ZPVADX.js";
5
5
  import {
6
6
  CACHE_TIMEOUTS,
7
7
  createLogger,
8
8
  err,
9
9
  getTimeProvider,
10
10
  ok
11
- } from "./chunk-Q3RFPJYK.js";
11
+ } from "./chunk-3MRM53T4.js";
12
12
 
13
13
  // src/security/trust-types.ts
14
14
  import { z } from "zod";
@@ -1656,4 +1656,4 @@ export {
1656
1656
  IssueTriage,
1657
1657
  createIssueTriage
1658
1658
  };
1659
- //# sourceMappingURL=chunk-VJD5LANR.js.map
1659
+ //# sourceMappingURL=chunk-ERWXGXV2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  err,
4
4
  getErrorMessage,
5
5
  ok
6
- } from "./chunk-Q3RFPJYK.js";
6
+ } from "./chunk-3MRM53T4.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-BK54O5J5.js.map
246
+ //# sourceMappingURL=chunk-G6ZPVADX.js.map
@@ -4,10 +4,10 @@ import {
4
4
  import {
5
5
  getTokenEnvVars,
6
6
  resolveToken
7
- } from "./chunk-2SVS5WRV.js";
7
+ } from "./chunk-MGLWPN2I.js";
8
8
  import {
9
9
  executeExpert
10
- } from "./chunk-UWJKMBPL.js";
10
+ } from "./chunk-X3BU5MIG.js";
11
11
  import {
12
12
  DEFAULT_RELEVANCE_CONFIG,
13
13
  EventTopics,
@@ -37,7 +37,7 @@ import {
37
37
  withAccessPolicy,
38
38
  withProgressHeartbeat,
39
39
  wrapToolWithTimeout
40
- } from "./chunk-T5VPZZYX.js";
40
+ } from "./chunk-TMOGKDC2.js";
41
41
  import {
42
42
  REGISTRY_PATH,
43
43
  getProjectRoot,
@@ -46,14 +46,14 @@ import {
46
46
  normalizeTopicToCanonical,
47
47
  savePapersRegistry,
48
48
  synthesizeResearch
49
- } from "./chunk-Q7FTNKPO.js";
49
+ } from "./chunk-JN6UWGHH.js";
50
50
  import {
51
51
  IssueTriage,
52
52
  sanitizeInput
53
- } from "./chunk-VJD5LANR.js";
53
+ } from "./chunk-ERWXGXV2.js";
54
54
  import {
55
55
  generateSecurityPlan
56
- } from "./chunk-CCODJRS6.js";
56
+ } from "./chunk-ZKOBXAPK.js";
57
57
  import {
58
58
  analyzeGitHubRepo
59
59
  } from "./chunk-BC3M4VLP.js";
@@ -70,10 +70,10 @@ import {
70
70
  clampTaskTtl,
71
71
  getAvailabilityCache,
72
72
  resolveFallback
73
- } from "./chunk-QCKKDUNX.js";
73
+ } from "./chunk-GBILTGR6.js";
74
74
  import {
75
75
  DEFAULTS
76
- } from "./chunk-GS3GW7C7.js";
76
+ } from "./chunk-YQMQSJQK.js";
77
77
  import {
78
78
  resolveInsideRoot
79
79
  } from "./chunk-NUBSJGQZ.js";
@@ -84,7 +84,7 @@ import {
84
84
  getAvailableClis,
85
85
  sleep,
86
86
  withTimeout
87
- } from "./chunk-NC2LECY6.js";
87
+ } from "./chunk-VEF6DCQU.js";
88
88
  import {
89
89
  BUILT_IN_EXPERTS,
90
90
  BuiltInExpertTypeSchema,
@@ -93,11 +93,11 @@ import {
93
93
  } from "./chunk-ZM4O442V.js";
94
94
  import {
95
95
  createSessionMemory
96
- } from "./chunk-EQHYXT56.js";
96
+ } from "./chunk-3VWMM6UF.js";
97
97
  import {
98
98
  MemoryImportance,
99
99
  calculateTextJaccardSimilarity
100
- } from "./chunk-3ESCBV47.js";
100
+ } from "./chunk-BJ2OMC7P.js";
101
101
  import {
102
102
  STOPWORDS,
103
103
  capitalizeWords,
@@ -172,7 +172,7 @@ import {
172
172
  resolveModelIdentitySync,
173
173
  toExpertTaskAnalysisResult,
174
174
  withStep
175
- } from "./chunk-Q3RFPJYK.js";
175
+ } from "./chunk-3MRM53T4.js";
176
176
  import {
177
177
  getNexusDataDir,
178
178
  nexusDataPath
@@ -41772,7 +41772,7 @@ async function tryIssueTriage(task) {
41772
41772
  try {
41773
41773
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
41774
41774
  if (issueMatch === null) return null;
41775
- const { createIssueTriage } = await import("./issue-triage-UWBHMQHC.js");
41775
+ const { createIssueTriage } = await import("./issue-triage-6XD6CVPB.js");
41776
41776
  const triage = createIssueTriage();
41777
41777
  const owner = issueMatch[1] ?? "";
41778
41778
  const num = issueMatch[2] ?? "";
@@ -41800,7 +41800,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
41800
41800
  ]);
41801
41801
  async function classifyWithLLM(task) {
41802
41802
  try {
41803
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-3AWQHR65.js");
41803
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-DWBO2HXZ.js");
41804
41804
  const prompt = [
41805
41805
  "Classify this task into exactly one pipeline template.",
41806
41806
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -42592,7 +42592,7 @@ var memoryInitPromise = null;
42592
42592
  async function initPipelineMemory() {
42593
42593
  if (cachedMemory !== null) return cachedMemory;
42594
42594
  try {
42595
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-B6LQMF4N.js");
42595
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-7XBV6BMY.js");
42596
42596
  const { getLearningDir } = await import("./learning-persistence-N6ILD2HX.js");
42597
42597
  const mem = createSessionMemory2(getLearningDir());
42598
42598
  mem.startSession(`pipeline-${String(Date.now())}`);
@@ -42644,7 +42644,7 @@ async function persistMobiMemState() {
42644
42644
  const { isPersistenceEnabled } = await import("./learning-persistence-N6ILD2HX.js");
42645
42645
  if (!isPersistenceEnabled()) return;
42646
42646
  const { nexusDataPath: nexusDataPath2 } = await import("./nexus-data-dir-77UO7N6J.js");
42647
- const { createMobiMem } = await import("./mobimem-G4UXJTCV.js");
42647
+ const { createMobiMem } = await import("./mobimem-CG2MNS7V.js");
42648
42648
  const mobimem = createMobiMem();
42649
42649
  const savePath = nexusDataPath2("memory", "mobimem-state.json");
42650
42650
  await mobimem.save(savePath);
@@ -42661,7 +42661,7 @@ function recordRoutingExperience(category, success, durationMs) {
42661
42661
  callRecord(routingMemoryCache);
42662
42662
  return;
42663
42663
  }
42664
- void import("./routing-memory-VOJBOX3X.js").then(({ createRoutingMemory }) => {
42664
+ void import("./routing-memory-5VTX7LQX.js").then(({ createRoutingMemory }) => {
42665
42665
  routingMemoryCache = createRoutingMemory();
42666
42666
  callRecord(routingMemoryCache);
42667
42667
  }).catch((error) => {
@@ -42690,7 +42690,7 @@ ${text}` : "";
42690
42690
  }
42691
42691
  async function getWeatherContext() {
42692
42692
  try {
42693
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-APASTJDQ.js");
42693
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-YJMVKJGA.js");
42694
42694
  const report = generateWeatherReport2({ includeAdaptive: true });
42695
42695
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
42696
42696
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -42707,7 +42707,7 @@ ${lines}
42707
42707
  }
42708
42708
  async function getMemoryContext(task) {
42709
42709
  try {
42710
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-B6LQMF4N.js");
42710
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-7XBV6BMY.js");
42711
42711
  const { getLearningDir } = await import("./learning-persistence-N6ILD2HX.js");
42712
42712
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
42713
42713
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -42800,7 +42800,7 @@ ${contextBlock}`;
42800
42800
  const strategy = config.votingStrategy ?? "higher_order";
42801
42801
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
42802
42802
  try {
42803
- const { executeVoting } = await import("./consensus-vote-XY55C7WQ.js");
42803
+ const { executeVoting } = await import("./consensus-vote-KDSLAWQL.js");
42804
42804
  const votingResult = await executeVoting(
42805
42805
  {
42806
42806
  proposal: plan.slice(0, 4e3),
@@ -43665,7 +43665,7 @@ async function extractSymbolsForTask(task) {
43665
43665
  }
43666
43666
  async function retrieveAdaptiveMemory(task) {
43667
43667
  try {
43668
- const { AdaptiveMemoryBackend } = await import("./adaptive-memory-OJY3IVNM.js");
43668
+ const { AdaptiveMemoryBackend } = await import("./adaptive-memory-EI564K4C.js");
43669
43669
  const path14 = await import("path");
43670
43670
  const { nexusDataPath: nexusDataPath2 } = await import("./nexus-data-dir-77UO7N6J.js");
43671
43671
  const baseDir = nexusDataPath2("memory");
@@ -43684,7 +43684,7 @@ async function retrieveAdaptiveMemory(task) {
43684
43684
  }
43685
43685
  async function queryResearchRegistry(task) {
43686
43686
  try {
43687
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-GUQORWL4.js");
43687
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-36TUTUUA.js");
43688
43688
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
43689
43689
  if (topic === void 0) return null;
43690
43690
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -43769,7 +43769,7 @@ function createScanStageWrapper() {
43769
43769
  try {
43770
43770
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
43771
43771
  if (slug !== void 0) {
43772
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-W35CXK3T.js");
43772
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-EIL2BV3S.js");
43773
43773
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
43774
43774
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
43775
43775
  ctx.sharedMemory.write("scan", "decision", { recommendations: recs });
@@ -49303,7 +49303,7 @@ var GitHubTaskTracker = class {
49303
49303
  cachedProvider = null;
49304
49304
  async getProvider() {
49305
49305
  if (this.cachedProvider !== null) return this.cachedProvider;
49306
- const { createScmProvider } = await import("./factory-E5NMAMZC.js");
49306
+ const { createScmProvider } = await import("./factory-A7DTCCUY.js");
49307
49307
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
49308
49308
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
49309
49309
  this.cachedProvider = result.value;
@@ -50007,4 +50007,4 @@ export {
50007
50007
  detectBackend,
50008
50008
  createTaskTracker
50009
50009
  };
50010
- //# sourceMappingURL=chunk-G5NSRX6Z.js.map
50010
+ //# sourceMappingURL=chunk-GAA7XTB6.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  DEFAULTS
3
- } from "./chunk-GS3GW7C7.js";
3
+ } from "./chunk-YQMQSJQK.js";
4
4
  import {
5
5
  resolveInsideRoot
6
6
  } from "./chunk-NUBSJGQZ.js";
7
7
  import {
8
8
  createAllAdapters
9
- } from "./chunk-NC2LECY6.js";
9
+ } from "./chunk-VEF6DCQU.js";
10
10
  import {
11
11
  capitalize
12
12
  } from "./chunk-633WH2ML.js";
@@ -27,7 +27,7 @@ import {
27
27
  ok,
28
28
  symbols,
29
29
  writeLine
30
- } from "./chunk-Q3RFPJYK.js";
30
+ } from "./chunk-3MRM53T4.js";
31
31
  import {
32
32
  getLearningDir,
33
33
  getOutcomesFile,
@@ -40,7 +40,7 @@ import {
40
40
  } from "./chunk-GOT7OAL5.js";
41
41
 
42
42
  // src/version.ts
43
- var VERSION = true ? "2.75.0" : "dev";
43
+ var VERSION = true ? "2.76.0" : "dev";
44
44
 
45
45
  // src/config/schemas-core.ts
46
46
  import { z } from "zod";
@@ -2308,7 +2308,7 @@ async function runDoctorFix(result) {
2308
2308
  writeLine2("\u2500".repeat(40));
2309
2309
  let fixCount = 0;
2310
2310
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
2311
- const { runSetup } = await import("./setup-command-S2XCW7K5.js");
2311
+ const { runSetup } = await import("./setup-command-3H2XXBJ3.js");
2312
2312
  const setupResult = runSetup({
2313
2313
  skipMcp: true,
2314
2314
  skipRules: true,
@@ -2322,7 +2322,7 @@ async function runDoctorFix(result) {
2322
2322
  }
2323
2323
  }
2324
2324
  if (!result.configFile.found) {
2325
- const { runConfigInitSync } = await import("./setup-config-53MHJA7S.js");
2325
+ const { runConfigInitSync } = await import("./setup-config-EI5KROA3.js");
2326
2326
  const configResult = runConfigInitSync(process.cwd(), false, false);
2327
2327
  if (configResult.success && configResult.created) {
2328
2328
  writeLine2(`\u2713 Generated config: ${configResult.path}`);
@@ -2419,4 +2419,4 @@ export {
2419
2419
  startStdioServer,
2420
2420
  closeServer
2421
2421
  };
2422
- //# sourceMappingURL=chunk-QCKKDUNX.js.map
2422
+ //# sourceMappingURL=chunk-GBILTGR6.js.map
@@ -10,7 +10,7 @@ import {
10
10
  getTokenEstimator,
11
11
  isRateLimitLikeError,
12
12
  ok
13
- } from "./chunk-Q3RFPJYK.js";
13
+ } from "./chunk-3MRM53T4.js";
14
14
 
15
15
  // src/adapters/base-adapter.ts
16
16
  var AdapterModelError = class extends ModelError {
@@ -707,4 +707,4 @@ export {
707
707
  DEFAULT_COLLECT_STREAM_MAX_CHUNKS,
708
708
  collectStream
709
709
  };
710
- //# sourceMappingURL=chunk-NQR7QAZX.js.map
710
+ //# sourceMappingURL=chunk-IPWCD22D.js.map
@@ -7,7 +7,10 @@ import {
7
7
  err,
8
8
  getErrorMessage,
9
9
  ok
10
- } from "./chunk-Q3RFPJYK.js";
10
+ } from "./chunk-3MRM53T4.js";
11
+
12
+ // src/cli/research-helpers-synthesize.ts
13
+ import { z } from "zod";
11
14
 
12
15
  // src/cli/research-helpers-io.ts
13
16
  import * as fs2 from "fs/promises";
@@ -762,6 +765,10 @@ function normalizeTopicToCanonical(topic) {
762
765
  }
763
766
 
764
767
  // src/cli/research-helpers-synthesize.ts
768
+ var AttributedInsightSchema = z.object({
769
+ insight: z.string().min(1),
770
+ sourcePaperIds: z.array(z.string().min(1)).min(1)
771
+ });
765
772
  var MIN_CROSS_CUTTING_CLUSTER_SIZE = 2;
766
773
  var CROSS_CUTTING_TAG_THRESHOLD = 3;
767
774
  async function synthesizeResearch(topicFilter) {
@@ -804,20 +811,31 @@ function safeArray(value) {
804
811
  if (value === null || value === void 0) return [];
805
812
  return Array.from(value);
806
813
  }
814
+ function paperSourceUri(p) {
815
+ if (typeof p.url === "string" && p.url.length > 0) return p.url;
816
+ if (typeof p.arxiv_id === "string" && p.arxiv_id.length > 0) return `arxiv:${p.arxiv_id}`;
817
+ return void 0;
818
+ }
807
819
  function extractPapers(registry) {
808
- return Object.entries(registry.papers).map(([id, p]) => ({
809
- id,
810
- title: p.title,
811
- topics: safeArray(p.topics),
812
- tags: safeArray(p.tags),
813
- summary: p.summary.trim(),
814
- keyFindings: safeArray(p.key_findings),
815
- relevance: p.relevance,
816
- implementationStatus: p.implementation_status,
817
- techniquesExtracted: safeArray(p.techniques_extracted),
818
- qualityScore: p.quality_score ?? 0,
819
- evidenceTier: p.evidence_tier ?? "low"
820
- }));
820
+ return Object.entries(registry.papers).map(([id, p]) => {
821
+ const sourceUri = paperSourceUri(p);
822
+ return {
823
+ id,
824
+ title: p.title,
825
+ topics: safeArray(p.topics),
826
+ tags: safeArray(p.tags),
827
+ summary: p.summary.trim(),
828
+ keyFindings: safeArray(p.key_findings),
829
+ relevance: p.relevance,
830
+ implementationStatus: p.implementation_status,
831
+ techniquesExtracted: safeArray(p.techniques_extracted),
832
+ qualityScore: p.quality_score ?? 0,
833
+ evidenceTier: p.evidence_tier ?? "low",
834
+ // #2663 — carry provenance from the registry into synthesis.
835
+ ...sourceUri !== void 0 ? { sourceUri } : {},
836
+ ...typeof p.publication_date === "string" ? { publicationDate: p.publication_date } : {}
837
+ };
838
+ });
821
839
  }
822
840
  function groupByTopic(papers) {
823
841
  const topicMap = /* @__PURE__ */ new Map();
@@ -858,7 +876,6 @@ function synthesizeCluster(cluster) {
858
876
  const allTechniques = collectFrequencies(
859
877
  cluster.papers.flatMap((p) => [...p.techniquesExtracted])
860
878
  );
861
- const allFindings = cluster.papers.flatMap((p) => [...p.keyFindings]);
862
879
  const commonThemes = [...allTags.entries()].filter(([, count]) => count >= MIN_CROSS_CUTTING_CLUSTER_SIZE).sort((a, b) => b[1] - a[1]).map(([tag]) => tag);
863
880
  const techniques = [...allTechniques.entries()].sort((a, b) => b[1] - a[1]).map(([tech, count]) => count > 1 ? `${tech} (${String(count)} papers)` : tech);
864
881
  const notStarted = cluster.papers.filter((p) => p.implementationStatus === "not-started").flatMap((p) => [...p.techniquesExtracted]);
@@ -886,9 +903,9 @@ function synthesizeCluster(cluster) {
886
903
  return {
887
904
  topic: cluster.topic,
888
905
  paperCount: cluster.paperCount,
889
- papers: cluster.papers.map((p) => p.title),
906
+ papers: cluster.papers.map(toPaperRef),
890
907
  commonThemes,
891
- keyInsights: deduplicateFindings(allFindings).slice(0, 10),
908
+ keyInsights: attributeFindings(cluster.papers).slice(0, 10),
892
909
  techniques,
893
910
  implementationOpportunities: uniqueOpportunities,
894
911
  gaps,
@@ -959,17 +976,33 @@ function collectFrequencies(items) {
959
976
  }
960
977
  return counts;
961
978
  }
962
- function deduplicateFindings(findings) {
963
- const seen = /* @__PURE__ */ new Set();
964
- const result = [];
965
- for (const finding of findings) {
966
- const normalized = finding.toLowerCase().trim();
967
- if (normalized.length === 0) continue;
968
- if (seen.has(normalized)) continue;
969
- seen.add(normalized);
970
- result.push(finding);
979
+ function toPaperRef(p) {
980
+ return {
981
+ id: p.id,
982
+ title: p.title,
983
+ ...p.sourceUri !== void 0 ? { sourceUri: p.sourceUri } : {}
984
+ };
985
+ }
986
+ function attributeFindings(papers) {
987
+ const byNormalized = /* @__PURE__ */ new Map();
988
+ for (const paper of papers) {
989
+ for (const finding of paper.keyFindings) {
990
+ const normalized = finding.toLowerCase().trim();
991
+ if (normalized.length === 0) continue;
992
+ const existing = byNormalized.get(normalized);
993
+ if (existing !== void 0) {
994
+ existing.sourcePaperIds.add(paper.id);
995
+ } else {
996
+ byNormalized.set(normalized, {
997
+ insight: finding,
998
+ sourcePaperIds: /* @__PURE__ */ new Set([paper.id])
999
+ });
1000
+ }
1001
+ }
971
1002
  }
972
- return result;
1003
+ return [...byNormalized.values()].map(
1004
+ (e) => AttributedInsightSchema.parse({ insight: e.insight, sourcePaperIds: [...e.sourcePaperIds] })
1005
+ );
973
1006
  }
974
1007
 
975
1008
  export {
@@ -979,6 +1012,7 @@ export {
979
1012
  loadPapersRegistry,
980
1013
  savePapersRegistry,
981
1014
  normalizeTopicToCanonical,
1015
+ AttributedInsightSchema,
982
1016
  synthesizeResearch
983
1017
  };
984
- //# sourceMappingURL=chunk-Q7FTNKPO.js.map
1018
+ //# sourceMappingURL=chunk-JN6UWGHH.js.map