nexus-agents 3.0.0 → 3.1.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 (120) hide show
  1. package/dist/{child-mcp-config-ZW5PFQEJ.js → child-mcp-config-IGZEHG37.js} +2 -2
  2. package/dist/{chunk-BFDUELKY.js → chunk-25TDC2C4.js} +2 -2
  3. package/dist/{chunk-IKFUFHEG.js → chunk-2WRW3MWB.js} +3 -3
  4. package/dist/{chunk-7T5LHZLI.js → chunk-344IEWHJ.js} +2 -2
  5. package/dist/{chunk-KDZCQPLH.js → chunk-43YJRZZW.js} +2 -2
  6. package/dist/{chunk-HHV6DOS4.js → chunk-47WSUCLS.js} +3 -3
  7. package/dist/{chunk-4LLIXFC2.js → chunk-4AF6CP7P.js} +4 -4
  8. package/dist/{chunk-DYIDH4YE.js → chunk-5UFRDLQT.js} +13 -11
  9. package/dist/chunk-5UFRDLQT.js.map +1 -0
  10. package/dist/{chunk-NO6GYQAS.js → chunk-A5QBZ5EC.js} +8 -8
  11. package/dist/{chunk-UU6NLFCT.js → chunk-ATNHVLKJ.js} +225 -6
  12. package/dist/chunk-ATNHVLKJ.js.map +1 -0
  13. package/dist/{chunk-NNYEQJGE.js → chunk-D33VCEA6.js} +5 -5
  14. package/dist/{chunk-2UKQZKVD.js → chunk-DITV4B6I.js} +138 -118
  15. package/dist/{chunk-2UKQZKVD.js.map → chunk-DITV4B6I.js.map} +1 -1
  16. package/dist/{chunk-6H7U2JU4.js → chunk-E6JME6SQ.js} +2 -2
  17. package/dist/{chunk-D3SA4NDV.js → chunk-EL62KWUE.js} +7 -7
  18. package/dist/{chunk-3JH24XIY.js → chunk-ENZ3IWEM.js} +2 -2
  19. package/dist/{chunk-2J4J5QKD.js → chunk-F47KBREM.js} +2 -2
  20. package/dist/{chunk-XOA7Y63G.js → chunk-GMJUXSLK.js} +5 -5
  21. package/dist/{chunk-6BQNRHIH.js → chunk-GQ5LHJD2.js} +2 -2
  22. package/dist/{chunk-4QAYK6FB.js → chunk-GTU2GK4H.js} +4 -4
  23. package/dist/{chunk-MCICMFFK.js → chunk-HEZ6VTMO.js} +2 -2
  24. package/dist/{chunk-6ZFBEINO.js → chunk-LHOMRQTU.js} +5 -5
  25. package/dist/{chunk-MHGARBUZ.js → chunk-NGFG5TIB.js} +2 -2
  26. package/dist/{chunk-HEQSO64K.js → chunk-NSIPB65X.js} +8 -8
  27. package/dist/{chunk-JKGYQG6V.js → chunk-OKVCJFZM.js} +2 -2
  28. package/dist/{chunk-IEJUO5RB.js → chunk-OVAO5IMR.js} +2 -2
  29. package/dist/{chunk-V55IINXG.js → chunk-QRZPGTZN.js} +2 -2
  30. package/dist/{chunk-SVTHQ7DA.js → chunk-QZINUMKA.js} +5 -5
  31. package/dist/{chunk-JHJV7CYZ.js → chunk-RHO52DBX.js} +2 -2
  32. package/dist/{chunk-KAP2ANOE.js → chunk-T6HI32EC.js} +2 -2
  33. package/dist/{chunk-WSNUM6MS.js → chunk-TIQXKIIA.js} +2 -2
  34. package/dist/{chunk-7YGC7EHO.js → chunk-UBHTXZR6.js} +4 -4
  35. package/dist/{chunk-3VRG7I7N.js → chunk-VV7KSMMR.js} +3 -3
  36. package/dist/{chunk-6A33GEM2.js → chunk-Z2VEERCP.js} +3 -3
  37. package/dist/{chunk-54MDYWNI.js → chunk-ZBTEOM3T.js} +2 -2
  38. package/dist/{cli-circuit-breaker-HLZ72N2A.js → cli-circuit-breaker-FTN4E7PN.js} +3 -3
  39. package/dist/cli.js +40 -40
  40. package/dist/{composite-router-KM4TDC75.js → composite-router-AHUNMSEQ.js} +2 -2
  41. package/dist/{consensus-vote-VFOLUM6M.js → consensus-vote-6GL7NIDU.js} +16 -16
  42. package/dist/{context-retriever-ZVFRYEDL.js → context-retriever-UDERFG2L.js} +8 -8
  43. package/dist/{doctor-deep-ZERKQVLV.js → doctor-deep-XZX7RNDG.js} +3 -3
  44. package/dist/{expert-bridge-MMBE2ZPR.js → expert-bridge-NIYLN24L.js} +4 -4
  45. package/dist/{factory-VIB7NIV2.js → factory-2VYANO2Z.js} +5 -5
  46. package/dist/{factory-7EMZS6OF.js → factory-KDNW4GTS.js} +9 -9
  47. package/dist/{improvement-review-ABUGIKOC.js → improvement-review-Z3BEZS73.js} +5 -5
  48. package/dist/index.d.ts +3 -1
  49. package/dist/index.js +30 -30
  50. package/dist/{init-opencode-GETRPKA4.js → init-opencode-3ENXQJKC.js} +6 -6
  51. package/dist/{issue-triage-O6Z2CTJM.js → issue-triage-3YWM3P2C.js} +6 -6
  52. package/dist/{pr-reviewer-helpers-DRQXZBDH.js → pr-reviewer-helpers-CVMB2PRH.js} +4 -4
  53. package/dist/{registry-command-YAIEP7WM.js → registry-command-XPA6LFHZ.js} +2 -2
  54. package/dist/{repo-security-plan-4BYFJZUQ.js → repo-security-plan-NUMTKVMR.js} +3 -3
  55. package/dist/{research-helpers-synthesize-O3UTWKGT.js → research-helpers-synthesize-EHDMCB6P.js} +4 -4
  56. package/dist/{routing-memory-GFCQT2FW.js → routing-memory-3XURCXXF.js} +2 -2
  57. package/dist/{session-memory-Y7WMBRAR.js → session-memory-QISTJJOX.js} +3 -3
  58. package/dist/{setup-command-XUVMMHPF.js → setup-command-5BQNBFMK.js} +14 -14
  59. package/dist/{setup-config-2ABBUEG6.js → setup-config-D6V7HW6W.js} +3 -3
  60. package/dist/{setup-custom-api-GNWOBZ4I.js → setup-custom-api-U2EUVTPO.js} +4 -4
  61. package/dist/{tool-memory-MCPXNF6X.js → tool-memory-BR7N6EB6.js} +5 -5
  62. package/dist/{unified-registry-6YQEVB6A.js → unified-registry-K4DRV5PF.js} +10 -10
  63. package/dist/{weather-report-3EDM3NPV.js → weather-report-22DR27KY.js} +2 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-DYIDH4YE.js.map +0 -1
  66. package/dist/chunk-UU6NLFCT.js.map +0 -1
  67. /package/dist/{child-mcp-config-ZW5PFQEJ.js.map → child-mcp-config-IGZEHG37.js.map} +0 -0
  68. /package/dist/{chunk-BFDUELKY.js.map → chunk-25TDC2C4.js.map} +0 -0
  69. /package/dist/{chunk-IKFUFHEG.js.map → chunk-2WRW3MWB.js.map} +0 -0
  70. /package/dist/{chunk-7T5LHZLI.js.map → chunk-344IEWHJ.js.map} +0 -0
  71. /package/dist/{chunk-KDZCQPLH.js.map → chunk-43YJRZZW.js.map} +0 -0
  72. /package/dist/{chunk-HHV6DOS4.js.map → chunk-47WSUCLS.js.map} +0 -0
  73. /package/dist/{chunk-4LLIXFC2.js.map → chunk-4AF6CP7P.js.map} +0 -0
  74. /package/dist/{chunk-NO6GYQAS.js.map → chunk-A5QBZ5EC.js.map} +0 -0
  75. /package/dist/{chunk-NNYEQJGE.js.map → chunk-D33VCEA6.js.map} +0 -0
  76. /package/dist/{chunk-6H7U2JU4.js.map → chunk-E6JME6SQ.js.map} +0 -0
  77. /package/dist/{chunk-D3SA4NDV.js.map → chunk-EL62KWUE.js.map} +0 -0
  78. /package/dist/{chunk-3JH24XIY.js.map → chunk-ENZ3IWEM.js.map} +0 -0
  79. /package/dist/{chunk-2J4J5QKD.js.map → chunk-F47KBREM.js.map} +0 -0
  80. /package/dist/{chunk-XOA7Y63G.js.map → chunk-GMJUXSLK.js.map} +0 -0
  81. /package/dist/{chunk-6BQNRHIH.js.map → chunk-GQ5LHJD2.js.map} +0 -0
  82. /package/dist/{chunk-4QAYK6FB.js.map → chunk-GTU2GK4H.js.map} +0 -0
  83. /package/dist/{chunk-MCICMFFK.js.map → chunk-HEZ6VTMO.js.map} +0 -0
  84. /package/dist/{chunk-6ZFBEINO.js.map → chunk-LHOMRQTU.js.map} +0 -0
  85. /package/dist/{chunk-MHGARBUZ.js.map → chunk-NGFG5TIB.js.map} +0 -0
  86. /package/dist/{chunk-HEQSO64K.js.map → chunk-NSIPB65X.js.map} +0 -0
  87. /package/dist/{chunk-JKGYQG6V.js.map → chunk-OKVCJFZM.js.map} +0 -0
  88. /package/dist/{chunk-IEJUO5RB.js.map → chunk-OVAO5IMR.js.map} +0 -0
  89. /package/dist/{chunk-V55IINXG.js.map → chunk-QRZPGTZN.js.map} +0 -0
  90. /package/dist/{chunk-SVTHQ7DA.js.map → chunk-QZINUMKA.js.map} +0 -0
  91. /package/dist/{chunk-JHJV7CYZ.js.map → chunk-RHO52DBX.js.map} +0 -0
  92. /package/dist/{chunk-KAP2ANOE.js.map → chunk-T6HI32EC.js.map} +0 -0
  93. /package/dist/{chunk-WSNUM6MS.js.map → chunk-TIQXKIIA.js.map} +0 -0
  94. /package/dist/{chunk-7YGC7EHO.js.map → chunk-UBHTXZR6.js.map} +0 -0
  95. /package/dist/{chunk-3VRG7I7N.js.map → chunk-VV7KSMMR.js.map} +0 -0
  96. /package/dist/{chunk-6A33GEM2.js.map → chunk-Z2VEERCP.js.map} +0 -0
  97. /package/dist/{chunk-54MDYWNI.js.map → chunk-ZBTEOM3T.js.map} +0 -0
  98. /package/dist/{cli-circuit-breaker-HLZ72N2A.js.map → cli-circuit-breaker-FTN4E7PN.js.map} +0 -0
  99. /package/dist/{composite-router-KM4TDC75.js.map → composite-router-AHUNMSEQ.js.map} +0 -0
  100. /package/dist/{consensus-vote-VFOLUM6M.js.map → consensus-vote-6GL7NIDU.js.map} +0 -0
  101. /package/dist/{context-retriever-ZVFRYEDL.js.map → context-retriever-UDERFG2L.js.map} +0 -0
  102. /package/dist/{doctor-deep-ZERKQVLV.js.map → doctor-deep-XZX7RNDG.js.map} +0 -0
  103. /package/dist/{expert-bridge-MMBE2ZPR.js.map → expert-bridge-NIYLN24L.js.map} +0 -0
  104. /package/dist/{factory-7EMZS6OF.js.map → factory-2VYANO2Z.js.map} +0 -0
  105. /package/dist/{factory-VIB7NIV2.js.map → factory-KDNW4GTS.js.map} +0 -0
  106. /package/dist/{improvement-review-ABUGIKOC.js.map → improvement-review-Z3BEZS73.js.map} +0 -0
  107. /package/dist/{init-opencode-GETRPKA4.js.map → init-opencode-3ENXQJKC.js.map} +0 -0
  108. /package/dist/{issue-triage-O6Z2CTJM.js.map → issue-triage-3YWM3P2C.js.map} +0 -0
  109. /package/dist/{pr-reviewer-helpers-DRQXZBDH.js.map → pr-reviewer-helpers-CVMB2PRH.js.map} +0 -0
  110. /package/dist/{registry-command-YAIEP7WM.js.map → registry-command-XPA6LFHZ.js.map} +0 -0
  111. /package/dist/{repo-security-plan-4BYFJZUQ.js.map → repo-security-plan-NUMTKVMR.js.map} +0 -0
  112. /package/dist/{research-helpers-synthesize-O3UTWKGT.js.map → research-helpers-synthesize-EHDMCB6P.js.map} +0 -0
  113. /package/dist/{routing-memory-GFCQT2FW.js.map → routing-memory-3XURCXXF.js.map} +0 -0
  114. /package/dist/{session-memory-Y7WMBRAR.js.map → session-memory-QISTJJOX.js.map} +0 -0
  115. /package/dist/{setup-command-XUVMMHPF.js.map → setup-command-5BQNBFMK.js.map} +0 -0
  116. /package/dist/{setup-config-2ABBUEG6.js.map → setup-config-D6V7HW6W.js.map} +0 -0
  117. /package/dist/{setup-custom-api-GNWOBZ4I.js.map → setup-custom-api-U2EUVTPO.js.map} +0 -0
  118. /package/dist/{tool-memory-MCPXNF6X.js.map → tool-memory-BR7N6EB6.js.map} +0 -0
  119. /package/dist/{unified-registry-6YQEVB6A.js.map → unified-registry-K4DRV5PF.js.map} +0 -0
  120. /package/dist/{weather-report-3EDM3NPV.js.map → weather-report-22DR27KY.js.map} +0 -0
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  resolveToken
3
- } from "./chunk-KAP2ANOE.js";
3
+ } from "./chunk-T6HI32EC.js";
4
4
  import {
5
5
  REGISTRY_PATH,
6
6
  getProjectRoot,
7
7
  loadPapersRegistry,
8
8
  loadTechniquesRegistry,
9
9
  savePapersRegistry
10
- } from "./chunk-6H7U2JU4.js";
10
+ } from "./chunk-E6JME6SQ.js";
11
11
  import {
12
12
  resolveInsideRoot
13
13
  } from "./chunk-NUBSJGQZ.js";
14
14
  import {
15
15
  getToolMemory
16
- } from "./chunk-4QAYK6FB.js";
16
+ } from "./chunk-GTU2GK4H.js";
17
17
  import {
18
18
  capitalizeWords,
19
19
  truncateSentence
@@ -38,7 +38,7 @@ import {
38
38
  getTimeProvider,
39
39
  ok,
40
40
  registerPersistentDistillerFactory
41
- } from "./chunk-UU6NLFCT.js";
41
+ } from "./chunk-ATNHVLKJ.js";
42
42
  import {
43
43
  ensureLearningDir,
44
44
  getRulesFile
@@ -4090,4 +4090,4 @@ export {
4090
4090
  DEFAULT_CONTEXT_BUDGET_TOKENS,
4091
4091
  getContextPromptPrefix
4092
4092
  };
4093
- //# sourceMappingURL=chunk-NNYEQJGE.js.map
4093
+ //# sourceMappingURL=chunk-D33VCEA6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-3JH24XIY.js";
3
+ } from "./chunk-ENZ3IWEM.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-HFOQKCD2.js";
@@ -21,10 +21,10 @@ import {
21
21
  DEFAULT_TASK_TTL_MS,
22
22
  DEFAULT_TOOL_RATE_LIMITS,
23
23
  clampTaskTtl
24
- } from "./chunk-HEQSO64K.js";
24
+ } from "./chunk-NSIPB65X.js";
25
25
  import {
26
26
  executeExpert
27
- } from "./chunk-D3SA4NDV.js";
27
+ } from "./chunk-EL62KWUE.js";
28
28
  import {
29
29
  JobStatusSchema,
30
30
  abortJob,
@@ -45,21 +45,21 @@ import {
45
45
  simulationDeniedResult,
46
46
  toJobSummary,
47
47
  writeJobCancelled
48
- } from "./chunk-DYIDH4YE.js";
48
+ } from "./chunk-5UFRDLQT.js";
49
49
  import {
50
50
  normalizeTopicToCanonical,
51
51
  synthesizeResearch
52
- } from "./chunk-6A33GEM2.js";
52
+ } from "./chunk-Z2VEERCP.js";
53
53
  import {
54
54
  IssueTriage
55
- } from "./chunk-SVTHQ7DA.js";
55
+ } from "./chunk-QZINUMKA.js";
56
56
  import {
57
57
  resolveEnvMode,
58
58
  sanitizeInput
59
- } from "./chunk-WSNUM6MS.js";
59
+ } from "./chunk-TIQXKIIA.js";
60
60
  import {
61
61
  withPrerequisite
62
- } from "./chunk-HHV6DOS4.js";
62
+ } from "./chunk-47WSUCLS.js";
63
63
  import {
64
64
  NOOP_NOTIFIER,
65
65
  RateLimiter,
@@ -82,18 +82,18 @@ import {
82
82
  withAuditTrail,
83
83
  withProgressHeartbeat,
84
84
  wrapToolWithTimeout
85
- } from "./chunk-3VRG7I7N.js";
85
+ } from "./chunk-VV7KSMMR.js";
86
86
  import {
87
87
  createAuditTrail,
88
88
  createGraphAuditBridge,
89
89
  emitPipelinePolicyEvent
90
- } from "./chunk-2J4J5QKD.js";
90
+ } from "./chunk-F47KBREM.js";
91
91
  import {
92
92
  EventTopics,
93
93
  createEvent,
94
94
  getGlobalEventBus,
95
95
  getGlobalRegistry
96
- } from "./chunk-4LLIXFC2.js";
96
+ } from "./chunk-4AF6CP7P.js";
97
97
  import {
98
98
  IDENTIFIER_RE,
99
99
  LANG_VALUES,
@@ -126,15 +126,15 @@ import {
126
126
  parseRegistry,
127
127
  sourceExistsInRegistry,
128
128
  summarizeContextForPrompt
129
- } from "./chunk-NNYEQJGE.js";
129
+ } from "./chunk-D33VCEA6.js";
130
130
  import {
131
131
  getTokenEnvVars,
132
132
  resolveToken
133
- } from "./chunk-KAP2ANOE.js";
133
+ } from "./chunk-T6HI32EC.js";
134
134
  import {
135
135
  loadPapersRegistry,
136
136
  loadTechniquesRegistry
137
- } from "./chunk-6H7U2JU4.js";
137
+ } from "./chunk-E6JME6SQ.js";
138
138
  import {
139
139
  resolveInsideRoot
140
140
  } from "./chunk-NUBSJGQZ.js";
@@ -143,14 +143,14 @@ import {
143
143
  MemoryImportance,
144
144
  calculateTextJaccardSimilarity,
145
145
  getToolMemory
146
- } from "./chunk-4QAYK6FB.js";
146
+ } from "./chunk-GTU2GK4H.js";
147
147
  import {
148
148
  STOPWORDS,
149
149
  truncateWithInfo
150
150
  } from "./chunk-6T3EPABN.js";
151
151
  import {
152
152
  createSessionMemory
153
- } from "./chunk-V55IINXG.js";
153
+ } from "./chunk-QRZPGTZN.js";
154
154
  import {
155
155
  BUILT_IN_EXPERTS,
156
156
  BuiltInExpertTypeSchema,
@@ -168,25 +168,25 @@ import {
168
168
  getAvailableClis,
169
169
  sleep,
170
170
  withTimeout
171
- } from "./chunk-NO6GYQAS.js";
171
+ } from "./chunk-A5QBZ5EC.js";
172
172
  import {
173
173
  BaseAdapter,
174
174
  createStream,
175
175
  requireApiKey,
176
176
  validateApiKeyPresence
177
- } from "./chunk-MCICMFFK.js";
177
+ } from "./chunk-HEZ6VTMO.js";
178
178
  import {
179
179
  DEFAULTS
180
- } from "./chunk-MHGARBUZ.js";
180
+ } from "./chunk-NGFG5TIB.js";
181
181
  import {
182
182
  getAvailabilityCache,
183
183
  getCliForModelId,
184
184
  resolveFallback
185
- } from "./chunk-JHJV7CYZ.js";
185
+ } from "./chunk-RHO52DBX.js";
186
186
  import {
187
187
  generateHyphenId,
188
188
  generateUUID
189
- } from "./chunk-BFDUELKY.js";
189
+ } from "./chunk-25TDC2C4.js";
190
190
  import {
191
191
  AGENT_ROUTER_TIMEOUTS,
192
192
  API_TIMEOUTS,
@@ -283,7 +283,7 @@ import {
283
283
  selectStrategyByManifest,
284
284
  toExpertTaskAnalysisResult,
285
285
  withStep
286
- } from "./chunk-UU6NLFCT.js";
286
+ } from "./chunk-ATNHVLKJ.js";
287
287
  import {
288
288
  ensureLearningDir,
289
289
  getMetaOutcomesFile,
@@ -28353,7 +28353,7 @@ function execIdFields(executionId) {
28353
28353
  async function populateUnifiedContextOnState(state, options) {
28354
28354
  const taskCandidate = state["task"];
28355
28355
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
28356
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-ZVFRYEDL.js");
28356
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-UDERFG2L.js");
28357
28357
  const category = inferTaskCategory2(taskCandidate);
28358
28358
  const executionId = options?.executionId;
28359
28359
  const execFields = execIdFields(executionId);
@@ -43889,7 +43889,7 @@ async function tryIssueTriage(task) {
43889
43889
  try {
43890
43890
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
43891
43891
  if (issueMatch === null) return null;
43892
- const { createIssueTriage } = await import("./issue-triage-O6Z2CTJM.js");
43892
+ const { createIssueTriage } = await import("./issue-triage-3YWM3P2C.js");
43893
43893
  const triage = createIssueTriage();
43894
43894
  const owner = issueMatch[1] ?? "";
43895
43895
  const num = issueMatch[2] ?? "";
@@ -43917,7 +43917,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
43917
43917
  ]);
43918
43918
  async function classifyWithLLM(task) {
43919
43919
  try {
43920
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-MMBE2ZPR.js");
43920
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-NIYLN24L.js");
43921
43921
  const prompt = [
43922
43922
  "Classify this task into exactly one pipeline template.",
43923
43923
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -45558,7 +45558,7 @@ var memoryInitPromise = null;
45558
45558
  async function initPipelineMemory() {
45559
45559
  if (cachedMemory !== null) return cachedMemory;
45560
45560
  try {
45561
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-Y7WMBRAR.js");
45561
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-QISTJJOX.js");
45562
45562
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45563
45563
  const mem = createSessionMemory2(getLearningDir());
45564
45564
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -45620,7 +45620,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
45620
45620
  callRecord(routingMemoryCache);
45621
45621
  return;
45622
45622
  }
45623
- routingMemoryInitPromise ??= import("./routing-memory-GFCQT2FW.js").then(({ createRoutingMemory }) => {
45623
+ routingMemoryInitPromise ??= import("./routing-memory-3XURCXXF.js").then(({ createRoutingMemory }) => {
45624
45624
  routingMemoryCache ??= createRoutingMemory();
45625
45625
  return routingMemoryCache;
45626
45626
  }).catch((error) => {
@@ -45654,7 +45654,7 @@ ${text}` : "";
45654
45654
  }
45655
45655
  async function getWeatherContext() {
45656
45656
  try {
45657
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-3EDM3NPV.js");
45657
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-22DR27KY.js");
45658
45658
  const report = generateWeatherReport2({ includeAdaptive: true });
45659
45659
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
45660
45660
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -45672,7 +45672,7 @@ ${lines}
45672
45672
  }
45673
45673
  async function getMemoryContext(task) {
45674
45674
  try {
45675
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-Y7WMBRAR.js");
45675
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-QISTJJOX.js");
45676
45676
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45677
45677
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
45678
45678
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -45787,7 +45787,7 @@ ${contextBlock}`;
45787
45787
  const strategy = config.votingStrategy ?? "higher_order";
45788
45788
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
45789
45789
  try {
45790
- const { executeVoting } = await import("./consensus-vote-VFOLUM6M.js");
45790
+ const { executeVoting } = await import("./consensus-vote-6GL7NIDU.js");
45791
45791
  const votingResult = await executeVoting(
45792
45792
  {
45793
45793
  proposal: buildVoteProposal(plan, research),
@@ -46228,7 +46228,7 @@ async function searchCodebaseForTask(task) {
46228
46228
  }
46229
46229
  async function queryResearchRegistry(task) {
46230
46230
  try {
46231
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-O3UTWKGT.js");
46231
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-EHDMCB6P.js");
46232
46232
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
46233
46233
  if (topic === void 0) return null;
46234
46234
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -46299,7 +46299,7 @@ function createScanStageWrapper() {
46299
46299
  try {
46300
46300
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
46301
46301
  if (slug !== void 0) {
46302
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-4BYFJZUQ.js");
46302
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-NUMTKVMR.js");
46303
46303
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
46304
46304
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
46305
46305
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -46668,87 +46668,6 @@ function persistPrReviewRecord(opts) {
46668
46668
  }
46669
46669
  }
46670
46670
 
46671
- // src/mcp/tools/pr-review-record-producer.ts
46672
- function buildAndPersist(prNumber, baseSha, args) {
46673
- const { input, aggregate, counts, reviewCount, logger: logger58, coverage } = args;
46674
- const coverageSuffix = coverage?.partial === true ? ` [partial coverage: ${String(coverage.reviewedFiles)}/${String(coverage.totalFiles)} files reviewed, dropped: ${coverage.droppedFiles.join(", ")}]` : "";
46675
- if (reviewedDiffWasTruncated(input.prDiff)) {
46676
- logger58.warn(
46677
- "Reviewed diff exceeds the hash byte cap; content past it is unbound in reviewedDiffHash",
46678
- { prNumber }
46679
- );
46680
- }
46681
- const record = persistPrReviewRecord({
46682
- prNumber,
46683
- baseSha,
46684
- reviewedDiffHash: computeReviewedDiffHash(input.prDiff),
46685
- verdict: aggregate.decision,
46686
- verified: aggregate.verified,
46687
- voteCounts: {
46688
- approve: counts.approveCount,
46689
- request_changes: counts.requestChangesCount,
46690
- abstain: counts.abstainCount,
46691
- error: counts.errorCount,
46692
- total: reviewCount
46693
- },
46694
- summary: `${aggregate.decision} (${String(counts.approveCount)} approve / ${String(counts.requestChangesCount)} request_changes / ${String(counts.abstainCount)} abstain) \u2014 ${input.prTitle}${coverageSuffix}`,
46695
- // #4278: lets a caller (e.g. an MCP server whose cwd has no `.git`
46696
- // ancestor) say where the repo is, so the record isn't silently dropped.
46697
- ...input.repoPath !== void 0 ? { repoPathOverride: input.repoPath } : {},
46698
- logger: logger58
46699
- });
46700
- if (record === void 0) {
46701
- return {
46702
- persisted: false,
46703
- reason: "write-failed",
46704
- detail: "Audit record could not be written: the records path was unresolved or the append failed (see server logs for the underlying cause)."
46705
- };
46706
- }
46707
- return {
46708
- persisted: true,
46709
- prNumber: record.prNumber,
46710
- baseSha: record.baseSha,
46711
- reviewedDiffHash: record.reviewedDiffHash,
46712
- sequence: record.sequence
46713
- };
46714
- }
46715
- function persistReviewRecord(args) {
46716
- const { input } = args;
46717
- if (input.prNumber === void 0 || input.baseSha === void 0) {
46718
- return {
46719
- persisted: false,
46720
- reason: "binding-inputs-absent",
46721
- detail: "No audit record written: supply both prNumber and baseSha to persist an Option-C governor-review record bound to {prNumber, baseSha, reviewedDiffHash}."
46722
- };
46723
- }
46724
- if (input.simulate) {
46725
- return {
46726
- persisted: false,
46727
- reason: "simulated",
46728
- detail: "No audit record written: the review used simulated voters, and a committed governance record must not be seeded from non-live output (mirrors #2319)."
46729
- };
46730
- }
46731
- const { counts } = args;
46732
- if (counts.approveCount + counts.requestChangesCount + counts.abstainCount === 0) {
46733
- return {
46734
- persisted: false,
46735
- reason: "no-live-votes",
46736
- detail: "No audit record written: every voter errored, so the aggregate verdict reflects no live review. A committed governor-review record must not be seeded from a failed panel (the pr_review analogue of no_quorum, #4053)."
46737
- };
46738
- }
46739
- try {
46740
- return buildAndPersist(input.prNumber, input.baseSha, args);
46741
- } catch (error) {
46742
- const detail = error instanceof Error ? error.message : String(error);
46743
- args.logger.warn("Audit-record persistence threw (non-fatal)", { detail });
46744
- return {
46745
- persisted: false,
46746
- reason: "write-failed",
46747
- detail: `Audit record persistence raised: ${detail}`
46748
- };
46749
- }
46750
- }
46751
-
46752
46671
  // src/mcp/tools/pr-review-diff-budget.ts
46753
46672
  var SENSITIVE_PATH_PATTERNS = Object.freeze([
46754
46673
  "auth",
@@ -46811,6 +46730,16 @@ function truncateWithMarker(file, budget) {
46811
46730
  const prefix = Buffer.from(file.text, "utf-8").subarray(0, room).toString("utf-8");
46812
46731
  return prefix + marker;
46813
46732
  }
46733
+ var GIT_FILE_HEADER = /^diff --git /m;
46734
+ var HUNK_HEADER = /^@@ .* @@/m;
46735
+ var OLD_FILE_HEADER = /^--- /m;
46736
+ var NEW_FILE_HEADER = /^\+\+\+ /m;
46737
+ var BODY_LINE = /^[+-]/m;
46738
+ function looksLikeUnifiedDiff(text) {
46739
+ if (GIT_FILE_HEADER.test(text)) return true;
46740
+ if (HUNK_HEADER.test(text) && BODY_LINE.test(text)) return true;
46741
+ return OLD_FILE_HEADER.test(text) && NEW_FILE_HEADER.test(text);
46742
+ }
46814
46743
  function securityFirstPack(files, budget) {
46815
46744
  const sensitive = files.filter((f) => isSensitivePath(f.path));
46816
46745
  const rest = files.filter((f) => !isSensitivePath(f.path));
@@ -46876,6 +46805,95 @@ function applyPartialCoverageGate(aggregate, coverage) {
46876
46805
  return aggregate;
46877
46806
  }
46878
46807
 
46808
+ // src/mcp/tools/pr-review-record-producer.ts
46809
+ function buildAndPersist(prNumber, baseSha, args) {
46810
+ const { input, aggregate, counts, reviewCount, logger: logger58, coverage } = args;
46811
+ const coverageSuffix = coverage?.partial === true ? ` [partial coverage: ${String(coverage.reviewedFiles)}/${String(coverage.totalFiles)} files reviewed, dropped: ${coverage.droppedFiles.join(", ")}]` : "";
46812
+ if (reviewedDiffWasTruncated(input.prDiff)) {
46813
+ logger58.warn(
46814
+ "Reviewed diff exceeds the hash byte cap; content past it is unbound in reviewedDiffHash",
46815
+ { prNumber }
46816
+ );
46817
+ }
46818
+ const record = persistPrReviewRecord({
46819
+ prNumber,
46820
+ baseSha,
46821
+ reviewedDiffHash: computeReviewedDiffHash(input.prDiff),
46822
+ verdict: aggregate.decision,
46823
+ verified: aggregate.verified,
46824
+ voteCounts: {
46825
+ approve: counts.approveCount,
46826
+ request_changes: counts.requestChangesCount,
46827
+ abstain: counts.abstainCount,
46828
+ error: counts.errorCount,
46829
+ total: reviewCount
46830
+ },
46831
+ summary: `${aggregate.decision} (${String(counts.approveCount)} approve / ${String(counts.requestChangesCount)} request_changes / ${String(counts.abstainCount)} abstain) \u2014 ${input.prTitle}${coverageSuffix}`,
46832
+ // #4278: lets a caller (e.g. an MCP server whose cwd has no `.git`
46833
+ // ancestor) say where the repo is, so the record isn't silently dropped.
46834
+ ...input.repoPath !== void 0 ? { repoPathOverride: input.repoPath } : {},
46835
+ logger: logger58
46836
+ });
46837
+ if (record === void 0) {
46838
+ return {
46839
+ persisted: false,
46840
+ reason: "write-failed",
46841
+ detail: "Audit record could not be written: the records path was unresolved or the append failed (see server logs for the underlying cause)."
46842
+ };
46843
+ }
46844
+ return {
46845
+ persisted: true,
46846
+ prNumber: record.prNumber,
46847
+ baseSha: record.baseSha,
46848
+ reviewedDiffHash: record.reviewedDiffHash,
46849
+ sequence: record.sequence
46850
+ };
46851
+ }
46852
+ function refuseToPersist(args) {
46853
+ const { input, counts } = args;
46854
+ const refuse = (reason, detail) => ({ ok: false, outcome: { persisted: false, reason, detail } });
46855
+ if (input.prNumber === void 0 || input.baseSha === void 0) {
46856
+ return refuse(
46857
+ "binding-inputs-absent",
46858
+ "No audit record written: supply both prNumber and baseSha to persist an Option-C governor-review record bound to {prNumber, baseSha, reviewedDiffHash}."
46859
+ );
46860
+ }
46861
+ if (!looksLikeUnifiedDiff(input.prDiff)) {
46862
+ return refuse(
46863
+ "diff-not-unified",
46864
+ "No audit record written: prDiff is not a unified diff, so the review did not examine code and reviewedDiffHash would hash non-diff text \u2014 a record indistinguishable from a real one (#4451)."
46865
+ );
46866
+ }
46867
+ if (input.simulate) {
46868
+ return refuse(
46869
+ "simulated",
46870
+ "No audit record written: the review used simulated voters, and a committed governance record must not be seeded from non-live output (mirrors #2319)."
46871
+ );
46872
+ }
46873
+ if (counts.approveCount + counts.requestChangesCount + counts.abstainCount === 0) {
46874
+ return refuse(
46875
+ "no-live-votes",
46876
+ "No audit record written: every voter errored, so the aggregate verdict reflects no live review. A committed governor-review record must not be seeded from a failed panel (the pr_review analogue of no_quorum, #4053)."
46877
+ );
46878
+ }
46879
+ return { ok: true, prNumber: input.prNumber, baseSha: input.baseSha };
46880
+ }
46881
+ function persistReviewRecord(args) {
46882
+ const gate = refuseToPersist(args);
46883
+ if (!gate.ok) return gate.outcome;
46884
+ try {
46885
+ return buildAndPersist(gate.prNumber, gate.baseSha, args);
46886
+ } catch (error) {
46887
+ const detail = error instanceof Error ? error.message : String(error);
46888
+ args.logger.warn("Audit-record persistence threw (non-fatal)", { detail });
46889
+ return {
46890
+ persisted: false,
46891
+ reason: "write-failed",
46892
+ detail: `Audit record persistence raised: ${detail}`
46893
+ };
46894
+ }
46895
+ }
46896
+
46879
46897
  // src/mcp/tools/pr-review-result-mapping.ts
46880
46898
  function resolveFindings(result) {
46881
46899
  const raw = result.vote.findings;
@@ -46931,8 +46949,10 @@ var PR_REVIEW_ASYNC_HINT = "A pr_review run fans out to 5 live LLM voters and ca
46931
46949
  var PrReviewInputSchema = z93.object({
46932
46950
  prTitle: z93.string().min(1).max(500).describe("PR title"),
46933
46951
  prDescription: z93.string().max(MAX_DESCRIPTION_LENGTH).optional().describe("PR body / description"),
46934
- prDiff: z93.string().min(1).max(MAX_DIFF_INPUT_LENGTH).describe(
46935
- `Unified diff text (max ${String(MAX_DIFF_INPUT_LENGTH)} chars). No need to truncate before calling: diffs over ${String(MAX_DIFF_LENGTH)} chars are security-prioritized and PARTIALLY reviewed (lowest-priority whole files dropped; coverage reported on the response, and a partial review can block but never verified-approve).`
46952
+ prDiff: z93.string().min(1).max(MAX_DIFF_INPUT_LENGTH).refine(looksLikeUnifiedDiff, {
46953
+ message: "prDiff must be a unified diff (expected a `diff --git`, `---`/`+++`, or `@@ \u2026 @@` line). Prose descriptions of a change are rejected: a review of a summary is not a review of the code, and would be recorded as though it were (#4451)."
46954
+ }).describe(
46955
+ `Unified diff text (max ${String(MAX_DIFF_INPUT_LENGTH)} chars). REQUIRED SHAPE (#4451): must contain a \`diff --git\` header, an \`@@ \u2026 @@\` hunk header backed by +/- lines, or a \`---\`/\`+++\` header pair \u2014 a prose summary of the change is REJECTED, because reviewing a summary is not reviewing the code and would be recorded as though it were. (Stated here because Zod refinements do not survive JSON-schema generation, so this constraint is otherwise invisible to clients.) No need to truncate before calling: diffs over ${String(MAX_DIFF_LENGTH)} chars are security-prioritized and PARTIALLY reviewed (lowest-priority whole files dropped; coverage reported on the response, and a partial review can block but never verified-approve).`
46936
46956
  ),
46937
46957
  repoContext: z93.string().max(MAX_REPO_CONTEXT_LENGTH).optional().describe(
46938
46958
  `Optional one-paragraph repo context (architecture, conventions; max ${String(MAX_REPO_CONTEXT_LENGTH)} chars; trim before calling)`
@@ -49284,7 +49304,7 @@ var GitHubTaskTracker = class {
49284
49304
  cachedProvider = null;
49285
49305
  async getProvider() {
49286
49306
  if (this.cachedProvider !== null) return this.cachedProvider;
49287
- const { createScmProvider } = await import("./factory-VIB7NIV2.js");
49307
+ const { createScmProvider } = await import("./factory-2VYANO2Z.js");
49288
49308
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
49289
49309
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
49290
49310
  this.cachedProvider = result.value;
@@ -50126,7 +50146,7 @@ async function probeSource(source, includeModelIds) {
50126
50146
  }
50127
50147
  }
50128
50148
  async function defaultSources(includeOpenRouter) {
50129
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-7EMZS6OF.js");
50149
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-KDNW4GTS.js");
50130
50150
  const adapters = createAllAdapters2();
50131
50151
  return buildDefaultModelSources(adapters, { includeOpenRouter });
50132
50152
  }
@@ -54146,4 +54166,4 @@ export {
54146
54166
  shutdownFeedbackSubscriber,
54147
54167
  createEventBusBridge
54148
54168
  };
54149
- //# sourceMappingURL=chunk-2UKQZKVD.js.map
54169
+ //# sourceMappingURL=chunk-DITV4B6I.js.map