nexus-agents 8.3.1 → 8.3.3

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/{child-mcp-config-IPF4QIVB.js → child-mcp-config-RNWGSHLP.js} +2 -2
  2. package/dist/{chunk-PGUZPMT4.js → chunk-44TOYOLL.js} +2 -2
  3. package/dist/{chunk-F33RCSOC.js → chunk-4EKFQECD.js} +5 -5
  4. package/dist/{chunk-LW6FPSPN.js → chunk-5HQ64BQJ.js} +7 -7
  5. package/dist/{chunk-OFUJNXH3.js → chunk-5IBBBAK4.js} +133 -119
  6. package/dist/chunk-5IBBBAK4.js.map +1 -0
  7. package/dist/{chunk-EWKBHDAU.js → chunk-6RGAAA4U.js} +4 -4
  8. package/dist/{chunk-6SPKOLVU.js → chunk-AYVIQAGJ.js} +8 -8
  9. package/dist/{chunk-U5YJKJK2.js → chunk-B6HNAXBM.js} +2 -2
  10. package/dist/{chunk-6MPT2NRF.js → chunk-D2WWKJMI.js} +2 -2
  11. package/dist/{chunk-3MBGQAO2.js → chunk-DC2OJAIB.js} +3 -3
  12. package/dist/{chunk-2XXKUAQS.js → chunk-F4WIX5UH.js} +3 -3
  13. package/dist/{chunk-6LDUEA4I.js → chunk-FECYCZZR.js} +2 -2
  14. package/dist/{chunk-JGBXLELL.js → chunk-I2FSX2XS.js} +6 -6
  15. package/dist/{chunk-K6EHC227.js → chunk-JB3BG47N.js} +2 -2
  16. package/dist/{chunk-UZULX2DZ.js → chunk-K7WPK63Q.js} +8 -8
  17. package/dist/{chunk-OM5BVTVF.js → chunk-KHARSVPD.js} +2 -2
  18. package/dist/{chunk-TO5LX5VU.js → chunk-L2WZSYQ4.js} +2 -2
  19. package/dist/chunk-LV3LWVWI.js +7 -0
  20. package/dist/{chunk-W2R6UVZJ.js → chunk-LWLQZEG7.js} +2 -2
  21. package/dist/{chunk-FKWMYLSZ.js → chunk-OAP5CFEN.js} +2 -2
  22. package/dist/{chunk-4U62WRPL.js → chunk-OI7VYOYS.js} +15 -4
  23. package/dist/chunk-OI7VYOYS.js.map +1 -0
  24. package/dist/{chunk-ZYPEHPRM.js → chunk-PJAMCYKJ.js} +2 -2
  25. package/dist/{chunk-AQF22T74.js → chunk-Q5EBPILX.js} +3 -3
  26. package/dist/{chunk-5YC3SC34.js → chunk-QETXUEHY.js} +2 -2
  27. package/dist/{chunk-PSAXQXL5.js → chunk-RHZ7OTUR.js} +3 -3
  28. package/dist/{chunk-QP423I4T.js → chunk-RLP56UYX.js} +2 -2
  29. package/dist/{chunk-F4AT3BCP.js → chunk-RO6W6DUN.js} +4 -4
  30. package/dist/{chunk-FFZNRJ5Q.js → chunk-RQFYOMCK.js} +2 -2
  31. package/dist/{chunk-TSZWXRF7.js → chunk-T5SLVJCK.js} +26 -11
  32. package/dist/chunk-T5SLVJCK.js.map +1 -0
  33. package/dist/{chunk-7RLFZ6OB.js → chunk-U4QKZICX.js} +2 -2
  34. package/dist/{chunk-CCRTVIXF.js → chunk-UDZBQWWH.js} +7 -7
  35. package/dist/{chunk-HBHTXBA4.js → chunk-UFF3NTS3.js} +2 -2
  36. package/dist/{chunk-Y5I3F3YC.js → chunk-YMBWWR5K.js} +2 -2
  37. package/dist/{chunk-T7XKLZPC.js → chunk-ZR2AT5Y4.js} +5 -5
  38. package/dist/{cli-circuit-breaker-KRIR74SW.js → cli-circuit-breaker-BAV6CS55.js} +3 -3
  39. package/dist/cli.js +41 -41
  40. package/dist/{composite-router-VTPCCQQU.js → composite-router-ZBUAKNWH.js} +2 -2
  41. package/dist/{consensus-vote-44WT45UN.js → consensus-vote-LWFXKJMK.js} +17 -17
  42. package/dist/{context-retriever-ASWO5E6N.js → context-retriever-EUAU2AMR.js} +8 -8
  43. package/dist/{doctor-deep-WLVSUPFA.js → doctor-deep-ZHCMOZFP.js} +3 -3
  44. package/dist/{doctor-live-5L4RI4GW.js → doctor-live-BUHVK3DK.js} +9 -9
  45. package/dist/{expert-bridge-K4FSDGPL.js → expert-bridge-UPCLL7ND.js} +4 -4
  46. package/dist/{factory-X4PUAG26.js → factory-3OOZ2ZQP.js} +9 -9
  47. package/dist/{factory-DQWPXJHP.js → factory-6HNECKBF.js} +5 -5
  48. package/dist/{improvement-review-P7JBYDL6.js → improvement-review-GDIYQPNP.js} +6 -6
  49. package/dist/index.d.ts +41 -21
  50. package/dist/index.js +31 -31
  51. package/dist/{init-opencode-73YZUQQX.js → init-opencode-CKCCZOT3.js} +6 -6
  52. package/dist/issue-triage-4S5K7TSE.js +17 -0
  53. package/dist/{pr-reviewer-helpers-NRVB6RVY.js → pr-reviewer-helpers-RKAK33X2.js} +4 -4
  54. package/dist/{registry-command-O7TLGMNL.js → registry-command-3J5SNWG2.js} +2 -2
  55. package/dist/{repo-security-plan-OAOLRK5Z.js → repo-security-plan-VUA76IN3.js} +3 -3
  56. package/dist/{research-helpers-synthesize-J66KQW2N.js → research-helpers-synthesize-6EEGTTZY.js} +4 -4
  57. package/dist/{routing-memory-TLALXQEY.js → routing-memory-LLGBBX7P.js} +2 -2
  58. package/dist/{session-memory-DMXEXMOD.js → session-memory-FJOIX7BQ.js} +3 -3
  59. package/dist/{setup-config-THXHCRSH.js → setup-config-R26W2YIS.js} +3 -3
  60. package/dist/{setup-custom-api-EETAAEAD.js → setup-custom-api-MN6BPPK5.js} +4 -4
  61. package/dist/setup-data-dir-NXOVPIK7.js +29 -0
  62. package/dist/{tool-memory-RSRUWJFE.js → tool-memory-B6OUGSGS.js} +5 -5
  63. package/dist/{unified-registry-OHYTMXKA.js → unified-registry-4CXEC2UP.js} +10 -10
  64. package/dist/{weather-report-R5NAYRQK.js → weather-report-2MF7IEQ4.js} +2 -2
  65. package/package.json +2 -2
  66. package/dist/chunk-2OS7HTUM.js +0 -7
  67. package/dist/chunk-4U62WRPL.js.map +0 -1
  68. package/dist/chunk-OFUJNXH3.js.map +0 -1
  69. package/dist/chunk-TSZWXRF7.js.map +0 -1
  70. package/dist/issue-triage-6W5G6LC6.js +0 -17
  71. package/dist/setup-data-dir-Y4F4R2BJ.js +0 -29
  72. /package/dist/{child-mcp-config-IPF4QIVB.js.map → child-mcp-config-RNWGSHLP.js.map} +0 -0
  73. /package/dist/{chunk-PGUZPMT4.js.map → chunk-44TOYOLL.js.map} +0 -0
  74. /package/dist/{chunk-F33RCSOC.js.map → chunk-4EKFQECD.js.map} +0 -0
  75. /package/dist/{chunk-LW6FPSPN.js.map → chunk-5HQ64BQJ.js.map} +0 -0
  76. /package/dist/{chunk-EWKBHDAU.js.map → chunk-6RGAAA4U.js.map} +0 -0
  77. /package/dist/{chunk-6SPKOLVU.js.map → chunk-AYVIQAGJ.js.map} +0 -0
  78. /package/dist/{chunk-U5YJKJK2.js.map → chunk-B6HNAXBM.js.map} +0 -0
  79. /package/dist/{chunk-6MPT2NRF.js.map → chunk-D2WWKJMI.js.map} +0 -0
  80. /package/dist/{chunk-3MBGQAO2.js.map → chunk-DC2OJAIB.js.map} +0 -0
  81. /package/dist/{chunk-2XXKUAQS.js.map → chunk-F4WIX5UH.js.map} +0 -0
  82. /package/dist/{chunk-6LDUEA4I.js.map → chunk-FECYCZZR.js.map} +0 -0
  83. /package/dist/{chunk-JGBXLELL.js.map → chunk-I2FSX2XS.js.map} +0 -0
  84. /package/dist/{chunk-K6EHC227.js.map → chunk-JB3BG47N.js.map} +0 -0
  85. /package/dist/{chunk-UZULX2DZ.js.map → chunk-K7WPK63Q.js.map} +0 -0
  86. /package/dist/{chunk-OM5BVTVF.js.map → chunk-KHARSVPD.js.map} +0 -0
  87. /package/dist/{chunk-TO5LX5VU.js.map → chunk-L2WZSYQ4.js.map} +0 -0
  88. /package/dist/{chunk-2OS7HTUM.js.map → chunk-LV3LWVWI.js.map} +0 -0
  89. /package/dist/{chunk-W2R6UVZJ.js.map → chunk-LWLQZEG7.js.map} +0 -0
  90. /package/dist/{chunk-FKWMYLSZ.js.map → chunk-OAP5CFEN.js.map} +0 -0
  91. /package/dist/{chunk-ZYPEHPRM.js.map → chunk-PJAMCYKJ.js.map} +0 -0
  92. /package/dist/{chunk-AQF22T74.js.map → chunk-Q5EBPILX.js.map} +0 -0
  93. /package/dist/{chunk-5YC3SC34.js.map → chunk-QETXUEHY.js.map} +0 -0
  94. /package/dist/{chunk-PSAXQXL5.js.map → chunk-RHZ7OTUR.js.map} +0 -0
  95. /package/dist/{chunk-QP423I4T.js.map → chunk-RLP56UYX.js.map} +0 -0
  96. /package/dist/{chunk-F4AT3BCP.js.map → chunk-RO6W6DUN.js.map} +0 -0
  97. /package/dist/{chunk-FFZNRJ5Q.js.map → chunk-RQFYOMCK.js.map} +0 -0
  98. /package/dist/{chunk-7RLFZ6OB.js.map → chunk-U4QKZICX.js.map} +0 -0
  99. /package/dist/{chunk-CCRTVIXF.js.map → chunk-UDZBQWWH.js.map} +0 -0
  100. /package/dist/{chunk-HBHTXBA4.js.map → chunk-UFF3NTS3.js.map} +0 -0
  101. /package/dist/{chunk-Y5I3F3YC.js.map → chunk-YMBWWR5K.js.map} +0 -0
  102. /package/dist/{chunk-T7XKLZPC.js.map → chunk-ZR2AT5Y4.js.map} +0 -0
  103. /package/dist/{cli-circuit-breaker-KRIR74SW.js.map → cli-circuit-breaker-BAV6CS55.js.map} +0 -0
  104. /package/dist/{composite-router-VTPCCQQU.js.map → composite-router-ZBUAKNWH.js.map} +0 -0
  105. /package/dist/{consensus-vote-44WT45UN.js.map → consensus-vote-LWFXKJMK.js.map} +0 -0
  106. /package/dist/{context-retriever-ASWO5E6N.js.map → context-retriever-EUAU2AMR.js.map} +0 -0
  107. /package/dist/{doctor-deep-WLVSUPFA.js.map → doctor-deep-ZHCMOZFP.js.map} +0 -0
  108. /package/dist/{doctor-live-5L4RI4GW.js.map → doctor-live-BUHVK3DK.js.map} +0 -0
  109. /package/dist/{expert-bridge-K4FSDGPL.js.map → expert-bridge-UPCLL7ND.js.map} +0 -0
  110. /package/dist/{factory-DQWPXJHP.js.map → factory-3OOZ2ZQP.js.map} +0 -0
  111. /package/dist/{factory-X4PUAG26.js.map → factory-6HNECKBF.js.map} +0 -0
  112. /package/dist/{improvement-review-P7JBYDL6.js.map → improvement-review-GDIYQPNP.js.map} +0 -0
  113. /package/dist/{init-opencode-73YZUQQX.js.map → init-opencode-CKCCZOT3.js.map} +0 -0
  114. /package/dist/{issue-triage-6W5G6LC6.js.map → issue-triage-4S5K7TSE.js.map} +0 -0
  115. /package/dist/{pr-reviewer-helpers-NRVB6RVY.js.map → pr-reviewer-helpers-RKAK33X2.js.map} +0 -0
  116. /package/dist/{registry-command-O7TLGMNL.js.map → registry-command-3J5SNWG2.js.map} +0 -0
  117. /package/dist/{repo-security-plan-OAOLRK5Z.js.map → repo-security-plan-VUA76IN3.js.map} +0 -0
  118. /package/dist/{research-helpers-synthesize-J66KQW2N.js.map → research-helpers-synthesize-6EEGTTZY.js.map} +0 -0
  119. /package/dist/{routing-memory-TLALXQEY.js.map → routing-memory-LLGBBX7P.js.map} +0 -0
  120. /package/dist/{session-memory-DMXEXMOD.js.map → session-memory-FJOIX7BQ.js.map} +0 -0
  121. /package/dist/{setup-config-THXHCRSH.js.map → setup-config-R26W2YIS.js.map} +0 -0
  122. /package/dist/{setup-custom-api-EETAAEAD.js.map → setup-custom-api-MN6BPPK5.js.map} +0 -0
  123. /package/dist/{setup-data-dir-Y4F4R2BJ.js.map → setup-data-dir-NXOVPIK7.js.map} +0 -0
  124. /package/dist/{tool-memory-RSRUWJFE.js.map → tool-memory-B6OUGSGS.js.map} +0 -0
  125. /package/dist/{unified-registry-OHYTMXKA.js.map → unified-registry-4CXEC2UP.js.map} +0 -0
  126. /package/dist/{weather-report-R5NAYRQK.js.map → weather-report-2MF7IEQ4.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4HXPNLZS.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-3MBGQAO2.js";
6
+ } from "./chunk-DC2OJAIB.js";
7
7
  import "./chunk-ITCKXMOH.js";
8
8
  import "./chunk-MM223CVS.js";
9
9
  import "./chunk-ZPWHCABL.js";
@@ -62,4 +62,4 @@ export {
62
62
  generateMcpConfig,
63
63
  getDefaultAllowedTools
64
64
  };
65
- //# sourceMappingURL=child-mcp-config-IPF4QIVB.js.map
65
+ //# sourceMappingURL=child-mcp-config-RNWGSHLP.js.map
@@ -2,7 +2,7 @@ import {
2
2
  CACHE_TIMEOUTS,
3
3
  createLogger,
4
4
  getTimeProvider
5
- } from "./chunk-3MBGQAO2.js";
5
+ } from "./chunk-DC2OJAIB.js";
6
6
 
7
7
  // src/security/trust-types.ts
8
8
  import { z } from "zod";
@@ -565,4 +565,4 @@ export {
565
565
  resolveReputationGatingMode,
566
566
  gateWithReputation
567
567
  };
568
- //# sourceMappingURL=chunk-PGUZPMT4.js.map
568
+ //# sourceMappingURL=chunk-44TOYOLL.js.map
@@ -5,13 +5,13 @@ import {
5
5
  loadTechniquesRegistry,
6
6
  resolveInsideRoot,
7
7
  savePapersRegistry
8
- } from "./chunk-K6EHC227.js";
8
+ } from "./chunk-JB3BG47N.js";
9
9
  import {
10
10
  resolveToken
11
- } from "./chunk-5YC3SC34.js";
11
+ } from "./chunk-QETXUEHY.js";
12
12
  import {
13
13
  getToolMemory
14
- } from "./chunk-4U62WRPL.js";
14
+ } from "./chunk-OI7VYOYS.js";
15
15
  import {
16
16
  capitalizeWords,
17
17
  tokenizeFiltered,
@@ -37,7 +37,7 @@ import {
37
37
  getTimeProvider,
38
38
  ok,
39
39
  registerPersistentDistillerFactory
40
- } from "./chunk-3MBGQAO2.js";
40
+ } from "./chunk-DC2OJAIB.js";
41
41
  import {
42
42
  ensureLearningDir,
43
43
  getRulesFile
@@ -4132,4 +4132,4 @@ export {
4132
4132
  DEFAULT_CONTEXT_BUDGET_TOKENS,
4133
4133
  getContextPromptPrefix
4134
4134
  };
4135
- //# sourceMappingURL=chunk-F33RCSOC.js.map
4135
+ //# sourceMappingURL=chunk-4EKFQECD.js.map
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  readOpenAICompatEnv
3
- } from "./chunk-T7XKLZPC.js";
3
+ } from "./chunk-ZR2AT5Y4.js";
4
4
  import {
5
5
  allOf
6
6
  } from "./chunk-OQB3XC5O.js";
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-2OS7HTUM.js";
9
+ } from "./chunk-LV3LWVWI.js";
10
10
  import {
11
11
  capitalize
12
12
  } from "./chunk-6T3EPABN.js";
13
13
  import {
14
14
  createAllAdapters,
15
15
  probeCli
16
- } from "./chunk-UZULX2DZ.js";
16
+ } from "./chunk-K7WPK63Q.js";
17
17
  import {
18
18
  getNexusTmpDir
19
19
  } from "./chunk-4HXPNLZS.js";
@@ -28,7 +28,7 @@ import {
28
28
  ok,
29
29
  symbols,
30
30
  writeLine
31
- } from "./chunk-3MBGQAO2.js";
31
+ } from "./chunk-DC2OJAIB.js";
32
32
  import {
33
33
  getLearningDir,
34
34
  getOutcomesFile,
@@ -1201,13 +1201,13 @@ async function runDoctorFix(result) {
1201
1201
  writeLine2("\u2500".repeat(40));
1202
1202
  let fixCount = 0;
1203
1203
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1204
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-Y4F4R2BJ.js");
1204
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-NXOVPIK7.js");
1205
1205
  const outcome = describeDataDirFix2(initDataDirectories2());
1206
1206
  writeLine2(outcome.line);
1207
1207
  if (outcome.counted) fixCount++;
1208
1208
  }
1209
1209
  if (!result.configFile.found) {
1210
- const { runConfigInitSync } = await import("./setup-config-THXHCRSH.js");
1210
+ const { runConfigInitSync } = await import("./setup-config-R26W2YIS.js");
1211
1211
  const configResult = runConfigInitSync(process.cwd(), false, false);
1212
1212
  if (configResult.success && configResult.created) {
1213
1213
  writeLine2(`\u2713 Generated config: ${configResult.path}`);
@@ -1303,4 +1303,4 @@ export {
1303
1303
  startStdioServer,
1304
1304
  closeServer
1305
1305
  };
1306
- //# sourceMappingURL=chunk-LW6FPSPN.js.map
1306
+ //# sourceMappingURL=chunk-5HQ64BQJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-ZYPEHPRM.js";
3
+ } from "./chunk-PJAMCYKJ.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-DGWT7DXX.js";
@@ -21,10 +21,10 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-LW6FPSPN.js";
24
+ } from "./chunk-5HQ64BQJ.js";
25
25
  import {
26
26
  executeExpert
27
- } from "./chunk-CCRTVIXF.js";
27
+ } from "./chunk-UDZBQWWH.js";
28
28
  import {
29
29
  JobStatusSchema,
30
30
  VOTER_ROLES,
@@ -47,24 +47,24 @@ import {
47
47
  simulationDeniedResult,
48
48
  toJobSummary,
49
49
  writeJobCancelled
50
- } from "./chunk-6SPKOLVU.js";
50
+ } from "./chunk-AYVIQAGJ.js";
51
51
  import {
52
52
  allOf
53
53
  } from "./chunk-OQB3XC5O.js";
54
54
  import {
55
55
  normalizeTopicToCanonical,
56
56
  synthesizeResearch
57
- } from "./chunk-2XXKUAQS.js";
57
+ } from "./chunk-F4WIX5UH.js";
58
58
  import {
59
59
  IssueTriage
60
- } from "./chunk-JGBXLELL.js";
60
+ } from "./chunk-I2FSX2XS.js";
61
61
  import {
62
62
  resolveEnvMode,
63
63
  sanitizeInput
64
- } from "./chunk-PGUZPMT4.js";
64
+ } from "./chunk-44TOYOLL.js";
65
65
  import {
66
66
  withPrerequisite
67
- } from "./chunk-AQF22T74.js";
67
+ } from "./chunk-Q5EBPILX.js";
68
68
  import {
69
69
  NOOP_NOTIFIER,
70
70
  RateLimiter,
@@ -89,18 +89,18 @@ import {
89
89
  withAuditTrail,
90
90
  withProgressHeartbeat,
91
91
  wrapToolWithTimeout
92
- } from "./chunk-TSZWXRF7.js";
92
+ } from "./chunk-T5SLVJCK.js";
93
93
  import {
94
94
  createAuditTrail,
95
95
  createGraphAuditBridge,
96
96
  emitPipelinePolicyEvent
97
- } from "./chunk-U5YJKJK2.js";
97
+ } from "./chunk-B6HNAXBM.js";
98
98
  import {
99
99
  EventTopics,
100
100
  createEvent,
101
101
  getGlobalEventBus,
102
102
  getGlobalRegistry
103
- } from "./chunk-F4AT3BCP.js";
103
+ } from "./chunk-RO6W6DUN.js";
104
104
  import {
105
105
  IDENTIFIER_RE,
106
106
  LANG_VALUES,
@@ -133,29 +133,29 @@ import {
133
133
  parseRegistry,
134
134
  sourceExistsInRegistry,
135
135
  summarizeContextForPrompt
136
- } from "./chunk-F33RCSOC.js";
136
+ } from "./chunk-4EKFQECD.js";
137
137
  import {
138
138
  loadPapersRegistry,
139
139
  loadTechniquesRegistry,
140
140
  resolveInsideRoot
141
- } from "./chunk-K6EHC227.js";
141
+ } from "./chunk-JB3BG47N.js";
142
142
  import {
143
143
  getTokenEnvVars,
144
144
  resolveToken
145
- } from "./chunk-5YC3SC34.js";
145
+ } from "./chunk-QETXUEHY.js";
146
146
  import {
147
147
  DEFAULT_RELEVANCE_CONFIG,
148
148
  MemoryImportance,
149
149
  calculateTextJaccardSimilarity,
150
150
  getToolMemory
151
- } from "./chunk-4U62WRPL.js";
151
+ } from "./chunk-OI7VYOYS.js";
152
152
  import {
153
153
  STOPWORDS,
154
154
  truncateWithInfo
155
155
  } from "./chunk-6T3EPABN.js";
156
156
  import {
157
157
  createSessionMemory
158
- } from "./chunk-HBHTXBA4.js";
158
+ } from "./chunk-UFF3NTS3.js";
159
159
  import {
160
160
  BUILT_IN_EXPERTS,
161
161
  BuiltInExpertTypeSchema,
@@ -173,25 +173,25 @@ import {
173
173
  getAvailableClis,
174
174
  sleep,
175
175
  withTimeout
176
- } from "./chunk-UZULX2DZ.js";
176
+ } from "./chunk-K7WPK63Q.js";
177
177
  import {
178
178
  BaseAdapter,
179
179
  createStream,
180
180
  requireApiKey,
181
181
  validateApiKeyPresence
182
- } from "./chunk-FFZNRJ5Q.js";
182
+ } from "./chunk-RQFYOMCK.js";
183
183
  import {
184
184
  DEFAULTS
185
- } from "./chunk-Y5I3F3YC.js";
185
+ } from "./chunk-YMBWWR5K.js";
186
186
  import {
187
187
  getAvailabilityCache,
188
188
  getCliForModelId,
189
189
  resolveFallback
190
- } from "./chunk-OM5BVTVF.js";
190
+ } from "./chunk-KHARSVPD.js";
191
191
  import {
192
192
  generateHyphenId,
193
193
  generateUUID
194
- } from "./chunk-7RLFZ6OB.js";
194
+ } from "./chunk-U4QKZICX.js";
195
195
  import {
196
196
  AGENT_ROUTER_TIMEOUTS,
197
197
  API_TIMEOUTS,
@@ -297,7 +297,7 @@ import {
297
297
  selectStrategyByManifest,
298
298
  toExpertTaskAnalysisResult,
299
299
  withStep
300
- } from "./chunk-3MBGQAO2.js";
300
+ } from "./chunk-DC2OJAIB.js";
301
301
  import {
302
302
  ensureLearningDir,
303
303
  getMetaOutcomesFile,
@@ -29697,7 +29697,7 @@ function execIdFields(executionId) {
29697
29697
  async function populateUnifiedContextOnState(state, options) {
29698
29698
  const taskCandidate = state["task"];
29699
29699
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
29700
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-ASWO5E6N.js");
29700
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-EUAU2AMR.js");
29701
29701
  const category = inferTaskCategory2(taskCandidate);
29702
29702
  const executionId = options?.executionId;
29703
29703
  const execFields = execIdFields(executionId);
@@ -45577,7 +45577,7 @@ async function tryIssueTriage(task) {
45577
45577
  try {
45578
45578
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
45579
45579
  if (issueMatch === null) return null;
45580
- const { createIssueTriage } = await import("./issue-triage-6W5G6LC6.js");
45580
+ const { createIssueTriage } = await import("./issue-triage-4S5K7TSE.js");
45581
45581
  const triage = createIssueTriage();
45582
45582
  const owner = issueMatch[1] ?? "";
45583
45583
  const num = issueMatch[2] ?? "";
@@ -45605,7 +45605,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
45605
45605
  ]);
45606
45606
  async function classifyWithLLM(task) {
45607
45607
  try {
45608
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-K4FSDGPL.js");
45608
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-UPCLL7ND.js");
45609
45609
  const prompt = [
45610
45610
  "Classify this task into exactly one pipeline template.",
45611
45611
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -47296,7 +47296,7 @@ var memoryInitPromise = null;
47296
47296
  async function initPipelineMemory() {
47297
47297
  if (cachedMemory !== null) return cachedMemory;
47298
47298
  try {
47299
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-DMXEXMOD.js");
47299
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-FJOIX7BQ.js");
47300
47300
  const { getLearningDir } = await import("./learning-persistence-7N5SZHNX.js");
47301
47301
  const mem = createSessionMemory2(getLearningDir());
47302
47302
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -47358,7 +47358,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
47358
47358
  callRecord(routingMemoryCache);
47359
47359
  return;
47360
47360
  }
47361
- routingMemoryInitPromise ??= import("./routing-memory-TLALXQEY.js").then(({ createRoutingMemory }) => {
47361
+ routingMemoryInitPromise ??= import("./routing-memory-LLGBBX7P.js").then(({ createRoutingMemory }) => {
47362
47362
  routingMemoryCache ??= createRoutingMemory();
47363
47363
  return routingMemoryCache;
47364
47364
  }).catch((error) => {
@@ -47392,7 +47392,7 @@ ${text}` : "";
47392
47392
  }
47393
47393
  async function getWeatherContext() {
47394
47394
  try {
47395
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-R5NAYRQK.js");
47395
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-2MF7IEQ4.js");
47396
47396
  const report = generateWeatherReport2({ includeAdaptive: true });
47397
47397
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
47398
47398
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -47410,7 +47410,7 @@ ${lines}
47410
47410
  }
47411
47411
  async function getMemoryContext(task) {
47412
47412
  try {
47413
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-DMXEXMOD.js");
47413
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-FJOIX7BQ.js");
47414
47414
  const { getLearningDir } = await import("./learning-persistence-7N5SZHNX.js");
47415
47415
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
47416
47416
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -47529,7 +47529,7 @@ ${contextBlock}`;
47529
47529
  const strategy = config.votingStrategy ?? "higher_order";
47530
47530
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47531
47531
  try {
47532
- const { executeVoting } = await import("./consensus-vote-44WT45UN.js");
47532
+ const { executeVoting } = await import("./consensus-vote-LWFXKJMK.js");
47533
47533
  const votingResult = await executeVoting(
47534
47534
  {
47535
47535
  proposal: buildVoteProposal(plan, research),
@@ -47958,7 +47958,7 @@ async function searchCodebaseForTask(task) {
47958
47958
  }
47959
47959
  async function queryResearchRegistry(task) {
47960
47960
  try {
47961
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-J66KQW2N.js");
47961
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-6EEGTTZY.js");
47962
47962
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
47963
47963
  if (topic === void 0) return null;
47964
47964
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -48029,7 +48029,7 @@ function createScanStageWrapper() {
48029
48029
  try {
48030
48030
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
48031
48031
  if (slug !== void 0) {
48032
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-OAOLRK5Z.js");
48032
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-VUA76IN3.js");
48033
48033
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
48034
48034
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
48035
48035
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -48068,10 +48068,6 @@ function createAuditStageRegistry() {
48068
48068
  ]);
48069
48069
  }
48070
48070
 
48071
- // src/mcp/tools/pr-review-tool.ts
48072
- import { z as z102 } from "zod";
48073
- import { randomUUID as randomUUID13 } from "node:crypto";
48074
-
48075
48071
  // src/mcp/tools/pr-review-findings.ts
48076
48072
  import { parse as parseYaml3 } from "yaml";
48077
48073
  function isFindingVerified(gate) {
@@ -48152,6 +48148,73 @@ var FINDINGS_FORMAT_INSTRUCTIONS = `If you have one or more findings (claims tha
48152
48148
 
48153
48149
  A finding only triggers request_changes if ALL FOUR gate checks are 'passed' AND named_assertion is substantive (>10 chars, naming a concrete failure). Findings missing any of those surface as informational only \u2014 they do not block the merge. This is the #2225 verification gate; the 2026-04-25 audit found a 100% false-positive rate when this gate was not enforced.`;
48154
48150
 
48151
+ // src/mcp/tools/pr-review-proposal.ts
48152
+ function buildPrReviewProposal(input, removedBeforeThisCall = 0) {
48153
+ const sanitizeResult = sanitizeToolInput({
48154
+ prTitle: input.prTitle,
48155
+ prDescription: input.prDescription,
48156
+ prDiff: input.prDiff,
48157
+ repoContext: input.repoContext
48158
+ });
48159
+ const safe = sanitizeResult.sanitized;
48160
+ const parts = [];
48161
+ parts.push(`# Pull Request Review
48162
+ `);
48163
+ const totalRemoved = sanitizeResult.commentsRemoved + removedBeforeThisCall;
48164
+ if (totalRemoved > 0) {
48165
+ parts.push(
48166
+ `> **Note:** ${String(totalRemoved)} HTML comment(s) were removed from the untrusted fields below before you saw them (#5258). Comments are invisible in rendered markdown, so they are stripped rather than trusted. This is routine \u2014 GitHub's default PR template contains one \u2014 and is not by itself evidence of an attack.
48167
+ `
48168
+ );
48169
+ }
48170
+ parts.push(`**Title:** ${safe.prTitle}
48171
+ `);
48172
+ if (input.baseRef !== void 0 && input.headRef !== void 0) {
48173
+ parts.push(`**Branches:** ${input.headRef} \u2192 ${input.baseRef}
48174
+ `);
48175
+ }
48176
+ if (safe.repoContext !== void 0 && safe.repoContext !== "") {
48177
+ parts.push(`
48178
+ **Repo context:**
48179
+ ${safe.repoContext}
48180
+ `);
48181
+ }
48182
+ if (safe.prDescription !== void 0 && safe.prDescription !== "") {
48183
+ parts.push(`
48184
+ **Description:**
48185
+ ${safe.prDescription}
48186
+ `);
48187
+ }
48188
+ parts.push(`
48189
+ ## Diff
48190
+
48191
+ \`\`\`diff
48192
+ ${safe.prDiff}
48193
+ \`\`\`
48194
+ `);
48195
+ parts.push(`
48196
+ ## Your task
48197
+ `);
48198
+ parts.push(`Review this PR from your role's perspective. Decide: should it be merged as-is?
48199
+ `);
48200
+ parts.push(`- **APPROVE** if the diff is correct, complete, and aligned with your role.
48201
+ `);
48202
+ parts.push(
48203
+ `- **REJECT** (= "request changes") if there is at least one concrete defect, missing requirement, or violation that justifies blocking the merge.
48204
+ `
48205
+ );
48206
+ parts.push(`- **ABSTAIN** if the diff is outside your role's concerns.
48207
+ `);
48208
+ parts.push(`
48209
+ ${FINDINGS_FORMAT_INSTRUCTIONS}
48210
+ `);
48211
+ return parts.join("");
48212
+ }
48213
+
48214
+ // src/mcp/tools/pr-review-tool.ts
48215
+ import { z as z102 } from "zod";
48216
+ import { randomUUID as randomUUID13 } from "node:crypto";
48217
+
48155
48218
  // src/audit/reviewed-diff-hash.ts
48156
48219
  import * as crypto2 from "node:crypto";
48157
48220
  var MAX_REVIEWED_DIFF_BYTES = 5e4;
@@ -48833,66 +48896,6 @@ function absoluteQuorumApprove(reviews, valid) {
48833
48896
  }
48834
48897
  return { decision: "approve", verified: true };
48835
48898
  }
48836
- function buildPrReviewProposal(input) {
48837
- const sanitizeResult = sanitizeToolInput({
48838
- prTitle: input.prTitle,
48839
- prDescription: input.prDescription,
48840
- prDiff: input.prDiff,
48841
- repoContext: input.repoContext
48842
- });
48843
- const safe = sanitizeResult.sanitized;
48844
- const parts = [];
48845
- parts.push(`# Pull Request Review
48846
- `);
48847
- if (sanitizeResult.commentsRemoved > 0) {
48848
- parts.push(
48849
- `> **Note:** ${String(sanitizeResult.commentsRemoved)} HTML comment(s) were removed from the untrusted fields below before you saw them (#5258). Comments are invisible in rendered markdown, so they are stripped rather than trusted. This is routine \u2014 GitHub's default PR template contains one \u2014 and is not by itself evidence of an attack.
48850
- `
48851
- );
48852
- }
48853
- parts.push(`**Title:** ${safe.prTitle}
48854
- `);
48855
- if (input.baseRef !== void 0 && input.headRef !== void 0) {
48856
- parts.push(`**Branches:** ${input.headRef} \u2192 ${input.baseRef}
48857
- `);
48858
- }
48859
- if (safe.repoContext !== void 0 && safe.repoContext !== "") {
48860
- parts.push(`
48861
- **Repo context:**
48862
- ${safe.repoContext}
48863
- `);
48864
- }
48865
- if (safe.prDescription !== void 0 && safe.prDescription !== "") {
48866
- parts.push(`
48867
- **Description:**
48868
- ${safe.prDescription}
48869
- `);
48870
- }
48871
- parts.push(`
48872
- ## Diff
48873
-
48874
- \`\`\`diff
48875
- ${safe.prDiff}
48876
- \`\`\`
48877
- `);
48878
- parts.push(`
48879
- ## Your task
48880
- `);
48881
- parts.push(`Review this PR from your role's perspective. Decide: should it be merged as-is?
48882
- `);
48883
- parts.push(`- **APPROVE** if the diff is correct, complete, and aligned with your role.
48884
- `);
48885
- parts.push(
48886
- `- **REJECT** (= "request changes") if there is at least one concrete defect, missing requirement, or violation that justifies blocking the merge.
48887
- `
48888
- );
48889
- parts.push(`- **ABSTAIN** if the diff is outside your role's concerns.
48890
- `);
48891
- parts.push(`
48892
- ${FINDINGS_FORMAT_INSTRUCTIONS}
48893
- `);
48894
- return parts.join("");
48895
- }
48896
48899
  function resolveAggregate(reviews, input, errorCount, coverage, logger58) {
48897
48900
  const preGate = aggregatePrDecisions(reviews, input.errorPolicy);
48898
48901
  if (preGate.reason !== void 0) {
@@ -48910,7 +48913,7 @@ function resolveAggregate(reviews, input, errorCount, coverage, logger58) {
48910
48913
  }
48911
48914
  return aggregate;
48912
48915
  }
48913
- function preparePanelProposal(input, logger58) {
48916
+ function preparePanelProposal(input, logger58, removedBeforeThisCall = 0) {
48914
48917
  const { coverage, packedDiff, note } = packDiffForReview(input.prDiff, MAX_DIFF_LENGTH);
48915
48918
  const body = coverage === void 0 ? input : { ...input, prDiff: packedDiff };
48916
48919
  if (coverage?.partial === true) {
@@ -48918,24 +48921,11 @@ function preparePanelProposal(input, logger58) {
48918
48921
  `pr_review diff over budget \u2014 reviewed ${String(coverage.reviewedFiles)} of ${String(coverage.totalFiles)} files, dropped ${String(coverage.droppedFiles.length)}`
48919
48922
  );
48920
48923
  }
48921
- return { proposal: note + buildPrReviewProposal(body), coverage };
48924
+ return { proposal: note + buildPrReviewProposal(body, removedBeforeThisCall), coverage };
48922
48925
  }
48923
- async function executePrReviewBody(input, logger58, gatewayAdapters) {
48924
- const start = Date.now();
48925
- const { proposal, coverage } = preparePanelProposal(input, logger58);
48926
- const voteResults = await collectRealVotes({
48927
- roles: PR_REVIEW_ROLES,
48928
- proposal,
48929
- simulate: input.simulate,
48930
- logger: logger58,
48931
- ...gatewayAdapters !== void 0 && { gatewayAdapters }
48932
- });
48933
- const reviews = voteResults.map(toPrReviewVote);
48934
- const counts = summarizeReviews(reviews);
48935
- const aggregate = resolveAggregate(reviews, input, counts.errorCount, coverage, logger58);
48936
- let costSummary;
48926
+ function rollUpDecisionCost(voteResults, logger58) {
48937
48927
  try {
48938
- costSummary = recordDecisionCost({
48928
+ return recordDecisionCost({
48939
48929
  decisionId: `pr-${randomUUID13().slice(0, 8)}`,
48940
48930
  gate: "pr_review",
48941
48931
  votes: voteResults
@@ -48944,7 +48934,24 @@ async function executePrReviewBody(input, logger58, gatewayAdapters) {
48944
48934
  logger58.warn("Per-decision cost rollup failed (non-fatal)", {
48945
48935
  error: getErrorMessage(costError)
48946
48936
  });
48937
+ return void 0;
48947
48938
  }
48939
+ }
48940
+ async function executePrReviewBody(input, logger58, opts = {}) {
48941
+ const start = Date.now();
48942
+ const { gatewayAdapters: adapters, removedBeforeThisCall: removed = 0 } = opts;
48943
+ const { proposal, coverage } = preparePanelProposal(input, logger58, removed);
48944
+ const voteResults = await collectRealVotes({
48945
+ roles: PR_REVIEW_ROLES,
48946
+ proposal,
48947
+ simulate: input.simulate,
48948
+ logger: logger58,
48949
+ ...adapters !== void 0 && { gatewayAdapters: adapters }
48950
+ });
48951
+ const reviews = voteResults.map(toPrReviewVote);
48952
+ const counts = summarizeReviews(reviews);
48953
+ const aggregate = resolveAggregate(reviews, input, counts.errorCount, coverage, logger58);
48954
+ const costSummary = rollUpDecisionCost(voteResults, logger58);
48948
48955
  const recordOutcome3 = persistReviewRecord({
48949
48956
  // #4459: `input.prDiff` is opaque MCP input — it passed the unified-diff
48950
48957
  // shape gate (#4451), but nothing here establishes it is the PR's real diff.
@@ -48969,6 +48976,7 @@ async function executePrReviewBody(input, logger58, gatewayAdapters) {
48969
48976
  return toolSuccess(JSON.stringify(response, null, 2));
48970
48977
  }
48971
48978
  function makePrReviewHandler(gatewayAdapters) {
48979
+ const adapterOpt = gatewayAdapters !== void 0 ? { gatewayAdapters } : {};
48972
48980
  return async function prReviewHandler(args, ctx) {
48973
48981
  const parsed = PrReviewInputSchema.safeParse(args);
48974
48982
  if (!parsed.success) {
@@ -48988,11 +48996,17 @@ function makePrReviewHandler(gatewayAdapters) {
48988
48996
  toolName: "pr_review",
48989
48997
  input,
48990
48998
  freshJobId: () => `pr-${randomUUID13()}`,
48991
- run: () => executePrReviewBody(input, ctx.logger, gatewayAdapters),
48999
+ run: () => executePrReviewBody(input, ctx.logger, {
49000
+ ...adapterOpt,
49001
+ removedBeforeThisCall: ctx.sanitization.commentsRemoved
49002
+ }),
48992
49003
  logger: ctx.logger
48993
49004
  });
48994
49005
  }
48995
- return await executePrReviewBody(input, ctx.logger, gatewayAdapters);
49006
+ return await executePrReviewBody(input, ctx.logger, {
49007
+ ...adapterOpt,
49008
+ removedBeforeThisCall: ctx.sanitization.commentsRemoved
49009
+ });
48996
49010
  } catch (error) {
48997
49011
  return toolStructuredError({
48998
49012
  errorCategory: "internal",
@@ -51186,7 +51200,7 @@ var GitHubTaskTracker = class {
51186
51200
  cachedProvider = null;
51187
51201
  async getProvider() {
51188
51202
  if (this.cachedProvider !== null) return this.cachedProvider;
51189
- const { createScmProvider } = await import("./factory-DQWPXJHP.js");
51203
+ const { createScmProvider } = await import("./factory-6HNECKBF.js");
51190
51204
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
51191
51205
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
51192
51206
  this.cachedProvider = result.value;
@@ -52101,7 +52115,7 @@ async function probeSource(source, includeModelIds) {
52101
52115
  }
52102
52116
  }
52103
52117
  async function defaultSources(includeOpenRouter) {
52104
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-X4PUAG26.js");
52118
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-3OOZ2ZQP.js");
52105
52119
  const adapters = createAllAdapters2();
52106
52120
  return buildDefaultModelSources(adapters, { includeOpenRouter });
52107
52121
  }
@@ -56129,12 +56143,12 @@ export {
56129
56143
  registerPipelineTool,
56130
56144
  registerRunTool,
56131
56145
  registerListAvailableModelsTool,
56146
+ buildPrReviewProposal,
56132
56147
  PR_REVIEW_ROLES,
56133
56148
  MAX_DIFF_LENGTH,
56134
56149
  PrReviewInputSchema,
56135
56150
  mapVoteDecisionToPrDecision,
56136
56151
  aggregatePrDecisions,
56137
- buildPrReviewProposal,
56138
56152
  registerPrReviewTool,
56139
56153
  registerSupplyChainTradeoffPanelTool,
56140
56154
  createAnnotationsProxy,
@@ -56172,4 +56186,4 @@ export {
56172
56186
  shutdownFeedbackSubscriber,
56173
56187
  createEventBusBridge
56174
56188
  };
56175
- //# sourceMappingURL=chunk-OFUJNXH3.js.map
56189
+ //# sourceMappingURL=chunk-5IBBBAK4.js.map