nexus-agents 2.141.3 → 2.141.4

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 (119) hide show
  1. package/dist/{child-mcp-config-HSSPERWQ.js → child-mcp-config-MF3VQ3EU.js} +2 -2
  2. package/dist/{chunk-UQWMRV32.js → chunk-42IWBFSQ.js} +2 -2
  3. package/dist/{chunk-LOU3BPOF.js → chunk-44VJMRRM.js} +2 -2
  4. package/dist/{chunk-56D3JL22.js → chunk-4TT75SCG.js} +5 -5
  5. package/dist/{chunk-IZ67B4KO.js → chunk-AREFLH3S.js} +3 -3
  6. package/dist/{chunk-XIWSP2SH.js → chunk-AWOU2524.js} +7 -7
  7. package/dist/{chunk-STXQPQID.js → chunk-B6VRJBDI.js} +2 -2
  8. package/dist/{chunk-XSMR75AO.js → chunk-E2M2E5ED.js} +3 -3
  9. package/dist/{chunk-TQ7AL32B.js → chunk-EX3TD7DG.js} +4 -4
  10. package/dist/{chunk-3IMOTUTL.js → chunk-F2TQNJ2O.js} +2 -2
  11. package/dist/{chunk-H5JKSEWN.js → chunk-FNGKM5PL.js} +21 -12
  12. package/dist/chunk-FNGKM5PL.js.map +1 -0
  13. package/dist/{chunk-VZ5BL4YN.js → chunk-FVZ72V4X.js} +5 -5
  14. package/dist/{chunk-4HJKH36S.js → chunk-GEGV6DBO.js} +2 -2
  15. package/dist/{chunk-PP2N2FSW.js → chunk-HZEQYJP3.js} +4 -4
  16. package/dist/{chunk-RM2OMDF5.js → chunk-IY5BVF7P.js} +4 -4
  17. package/dist/{chunk-GKRUQ5SP.js → chunk-J2KMYVWA.js} +2 -2
  18. package/dist/{chunk-ZRD5N3KT.js → chunk-JEPN7EHZ.js} +2 -2
  19. package/dist/{chunk-VLDPG7BV.js → chunk-JQZ5R3EM.js} +2 -2
  20. package/dist/{chunk-FEHMCCKN.js → chunk-LEUP55YB.js} +2 -2
  21. package/dist/{chunk-MAHOP5ND.js → chunk-LWFJLJUS.js} +19 -2
  22. package/dist/{chunk-MAHOP5ND.js.map → chunk-LWFJLJUS.js.map} +1 -1
  23. package/dist/{chunk-FXCK7OGY.js → chunk-OJNGOC6V.js} +2 -2
  24. package/dist/{chunk-LWVXWMC3.js → chunk-OUULPDQ4.js} +33 -33
  25. package/dist/{chunk-5R7SHZFF.js → chunk-Q4UU2W6L.js} +3 -3
  26. package/dist/{chunk-VRDLTARY.js → chunk-R4YCNXN2.js} +4 -4
  27. package/dist/{chunk-3EZE7EO2.js → chunk-RPTEVESB.js} +11 -6
  28. package/dist/chunk-RPTEVESB.js.map +1 -0
  29. package/dist/{chunk-XRLF55YJ.js → chunk-SCPAYR65.js} +3 -3
  30. package/dist/{chunk-RZGDXXZN.js → chunk-SOCIRTAC.js} +3 -3
  31. package/dist/{chunk-UJQVBV55.js → chunk-SUGO2OSD.js} +2 -2
  32. package/dist/{chunk-2M5UOHC7.js → chunk-UUEK5FP6.js} +2 -2
  33. package/dist/{chunk-HCCLNL3P.js → chunk-V2GQUJ3X.js} +8 -8
  34. package/dist/{chunk-H7D5N2MR.js → chunk-WCAQ3T6H.js} +2 -2
  35. package/dist/{chunk-MCXEO4GD.js → chunk-Y7Z7H66M.js} +2 -2
  36. package/dist/{chunk-X43AQNAA.js → chunk-YJROHCFY.js} +7 -7
  37. package/dist/{chunk-UDNAW5MR.js → chunk-ZRRL3YB6.js} +4 -4
  38. package/dist/{cli-circuit-breaker-J6PUMDH7.js → cli-circuit-breaker-MK5PJIKO.js} +4 -4
  39. package/dist/cli.js +40 -40
  40. package/dist/{composite-router-42BBSYGE.js → composite-router-6EPXTZVL.js} +2 -2
  41. package/dist/{consensus-vote-KWJO34AW.js → consensus-vote-EZX4S5MB.js} +14 -14
  42. package/dist/{context-retriever-PSICCEJH.js → context-retriever-33WBFUYR.js} +8 -8
  43. package/dist/{doctor-deep-N55YSO3X.js → doctor-deep-TQJYDMNX.js} +3 -3
  44. package/dist/{expert-bridge-UUPXRZPT.js → expert-bridge-Y5NH22W2.js} +4 -4
  45. package/dist/{factory-QXYXDYBO.js → factory-75OMPTCR.js} +8 -8
  46. package/dist/{factory-KN7SKXTJ.js → factory-WOOGZ5NX.js} +5 -5
  47. package/dist/{improvement-review-OCN6HG6T.js → improvement-review-K7YYYZCJ.js} +4 -4
  48. package/dist/index.js +29 -29
  49. package/dist/{init-opencode-KXFVKS4O.js → init-opencode-BON5PKCI.js} +6 -6
  50. package/dist/{issue-triage-VTO3EHHY.js → issue-triage-44OGWBDA.js} +5 -5
  51. package/dist/{pr-reviewer-helpers-ZD6PGCVH.js → pr-reviewer-helpers-JFGF6GBV.js} +4 -4
  52. package/dist/{registry-command-7UMZQMRK.js → registry-command-KKNG6NX3.js} +2 -2
  53. package/dist/{repo-security-plan-KQPXLESS.js → repo-security-plan-5JEWCW42.js} +3 -3
  54. package/dist/{research-helpers-synthesize-YD22ZGBJ.js → research-helpers-synthesize-ERWILFW6.js} +4 -4
  55. package/dist/{routing-memory-27IZLNGJ.js → routing-memory-BEKRIRCI.js} +2 -2
  56. package/dist/{session-memory-HBUJ2HAL.js → session-memory-QJRW7C4R.js} +3 -3
  57. package/dist/{setup-command-BZTY7DSA.js → setup-command-QSZJ2HBJ.js} +11 -11
  58. package/dist/{setup-config-2FICCYW6.js → setup-config-NTN7ADST.js} +3 -3
  59. package/dist/{setup-custom-api-SJ2UZKRR.js → setup-custom-api-EVL6X7SH.js} +3 -3
  60. package/dist/{tool-memory-EMUTXAND.js → tool-memory-OU3V23TU.js} +5 -5
  61. package/dist/{unified-registry-D3DZ3TNC.js → unified-registry-IPZEPTFZ.js} +9 -9
  62. package/dist/{weather-report-TCIO64NT.js → weather-report-44EUMUVB.js} +2 -2
  63. package/package.json +1 -1
  64. package/dist/chunk-3EZE7EO2.js.map +0 -1
  65. package/dist/chunk-H5JKSEWN.js.map +0 -1
  66. /package/dist/{child-mcp-config-HSSPERWQ.js.map → child-mcp-config-MF3VQ3EU.js.map} +0 -0
  67. /package/dist/{chunk-UQWMRV32.js.map → chunk-42IWBFSQ.js.map} +0 -0
  68. /package/dist/{chunk-LOU3BPOF.js.map → chunk-44VJMRRM.js.map} +0 -0
  69. /package/dist/{chunk-56D3JL22.js.map → chunk-4TT75SCG.js.map} +0 -0
  70. /package/dist/{chunk-IZ67B4KO.js.map → chunk-AREFLH3S.js.map} +0 -0
  71. /package/dist/{chunk-XIWSP2SH.js.map → chunk-AWOU2524.js.map} +0 -0
  72. /package/dist/{chunk-STXQPQID.js.map → chunk-B6VRJBDI.js.map} +0 -0
  73. /package/dist/{chunk-XSMR75AO.js.map → chunk-E2M2E5ED.js.map} +0 -0
  74. /package/dist/{chunk-TQ7AL32B.js.map → chunk-EX3TD7DG.js.map} +0 -0
  75. /package/dist/{chunk-3IMOTUTL.js.map → chunk-F2TQNJ2O.js.map} +0 -0
  76. /package/dist/{chunk-VZ5BL4YN.js.map → chunk-FVZ72V4X.js.map} +0 -0
  77. /package/dist/{chunk-4HJKH36S.js.map → chunk-GEGV6DBO.js.map} +0 -0
  78. /package/dist/{chunk-PP2N2FSW.js.map → chunk-HZEQYJP3.js.map} +0 -0
  79. /package/dist/{chunk-RM2OMDF5.js.map → chunk-IY5BVF7P.js.map} +0 -0
  80. /package/dist/{chunk-GKRUQ5SP.js.map → chunk-J2KMYVWA.js.map} +0 -0
  81. /package/dist/{chunk-ZRD5N3KT.js.map → chunk-JEPN7EHZ.js.map} +0 -0
  82. /package/dist/{chunk-VLDPG7BV.js.map → chunk-JQZ5R3EM.js.map} +0 -0
  83. /package/dist/{chunk-FEHMCCKN.js.map → chunk-LEUP55YB.js.map} +0 -0
  84. /package/dist/{chunk-FXCK7OGY.js.map → chunk-OJNGOC6V.js.map} +0 -0
  85. /package/dist/{chunk-LWVXWMC3.js.map → chunk-OUULPDQ4.js.map} +0 -0
  86. /package/dist/{chunk-5R7SHZFF.js.map → chunk-Q4UU2W6L.js.map} +0 -0
  87. /package/dist/{chunk-VRDLTARY.js.map → chunk-R4YCNXN2.js.map} +0 -0
  88. /package/dist/{chunk-XRLF55YJ.js.map → chunk-SCPAYR65.js.map} +0 -0
  89. /package/dist/{chunk-RZGDXXZN.js.map → chunk-SOCIRTAC.js.map} +0 -0
  90. /package/dist/{chunk-UJQVBV55.js.map → chunk-SUGO2OSD.js.map} +0 -0
  91. /package/dist/{chunk-2M5UOHC7.js.map → chunk-UUEK5FP6.js.map} +0 -0
  92. /package/dist/{chunk-HCCLNL3P.js.map → chunk-V2GQUJ3X.js.map} +0 -0
  93. /package/dist/{chunk-H7D5N2MR.js.map → chunk-WCAQ3T6H.js.map} +0 -0
  94. /package/dist/{chunk-MCXEO4GD.js.map → chunk-Y7Z7H66M.js.map} +0 -0
  95. /package/dist/{chunk-X43AQNAA.js.map → chunk-YJROHCFY.js.map} +0 -0
  96. /package/dist/{chunk-UDNAW5MR.js.map → chunk-ZRRL3YB6.js.map} +0 -0
  97. /package/dist/{cli-circuit-breaker-J6PUMDH7.js.map → cli-circuit-breaker-MK5PJIKO.js.map} +0 -0
  98. /package/dist/{composite-router-42BBSYGE.js.map → composite-router-6EPXTZVL.js.map} +0 -0
  99. /package/dist/{consensus-vote-KWJO34AW.js.map → consensus-vote-EZX4S5MB.js.map} +0 -0
  100. /package/dist/{context-retriever-PSICCEJH.js.map → context-retriever-33WBFUYR.js.map} +0 -0
  101. /package/dist/{doctor-deep-N55YSO3X.js.map → doctor-deep-TQJYDMNX.js.map} +0 -0
  102. /package/dist/{expert-bridge-UUPXRZPT.js.map → expert-bridge-Y5NH22W2.js.map} +0 -0
  103. /package/dist/{factory-KN7SKXTJ.js.map → factory-75OMPTCR.js.map} +0 -0
  104. /package/dist/{factory-QXYXDYBO.js.map → factory-WOOGZ5NX.js.map} +0 -0
  105. /package/dist/{improvement-review-OCN6HG6T.js.map → improvement-review-K7YYYZCJ.js.map} +0 -0
  106. /package/dist/{init-opencode-KXFVKS4O.js.map → init-opencode-BON5PKCI.js.map} +0 -0
  107. /package/dist/{issue-triage-VTO3EHHY.js.map → issue-triage-44OGWBDA.js.map} +0 -0
  108. /package/dist/{pr-reviewer-helpers-ZD6PGCVH.js.map → pr-reviewer-helpers-JFGF6GBV.js.map} +0 -0
  109. /package/dist/{registry-command-7UMZQMRK.js.map → registry-command-KKNG6NX3.js.map} +0 -0
  110. /package/dist/{repo-security-plan-KQPXLESS.js.map → repo-security-plan-5JEWCW42.js.map} +0 -0
  111. /package/dist/{research-helpers-synthesize-YD22ZGBJ.js.map → research-helpers-synthesize-ERWILFW6.js.map} +0 -0
  112. /package/dist/{routing-memory-27IZLNGJ.js.map → routing-memory-BEKRIRCI.js.map} +0 -0
  113. /package/dist/{session-memory-HBUJ2HAL.js.map → session-memory-QJRW7C4R.js.map} +0 -0
  114. /package/dist/{setup-command-BZTY7DSA.js.map → setup-command-QSZJ2HBJ.js.map} +0 -0
  115. /package/dist/{setup-config-2FICCYW6.js.map → setup-config-NTN7ADST.js.map} +0 -0
  116. /package/dist/{setup-custom-api-SJ2UZKRR.js.map → setup-custom-api-EVL6X7SH.js.map} +0 -0
  117. /package/dist/{tool-memory-EMUTXAND.js.map → tool-memory-OU3V23TU.js.map} +0 -0
  118. /package/dist/{unified-registry-D3DZ3TNC.js.map → unified-registry-IPZEPTFZ.js.map} +0 -0
  119. /package/dist/{weather-report-TCIO64NT.js.map → weather-report-44EUMUVB.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-VLDPG7BV.js";
3
+ } from "./chunk-JQZ5R3EM.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-HFOQKCD2.js";
@@ -18,10 +18,10 @@ import {
18
18
  DEFAULT_TASK_TTL_MS,
19
19
  DEFAULT_TOOL_RATE_LIMITS,
20
20
  clampTaskTtl
21
- } from "./chunk-XIWSP2SH.js";
21
+ } from "./chunk-AWOU2524.js";
22
22
  import {
23
23
  executeExpert
24
- } from "./chunk-X43AQNAA.js";
24
+ } from "./chunk-YJROHCFY.js";
25
25
  import {
26
26
  JobStatusSchema,
27
27
  collectRealVotes,
@@ -40,24 +40,24 @@ import {
40
40
  toJobSummary,
41
41
  warnIfSimulatedOutsideTests,
42
42
  writeJobCancelled
43
- } from "./chunk-HCCLNL3P.js";
43
+ } from "./chunk-V2GQUJ3X.js";
44
44
  import {
45
45
  normalizeTopicToCanonical,
46
46
  synthesizeResearch
47
- } from "./chunk-XRLF55YJ.js";
47
+ } from "./chunk-SCPAYR65.js";
48
48
  import {
49
49
  IssueTriage,
50
50
  createAuditTrail,
51
51
  createGraphAuditBridge,
52
52
  emitPipelinePolicyEvent
53
- } from "./chunk-UDNAW5MR.js";
53
+ } from "./chunk-ZRRL3YB6.js";
54
54
  import {
55
55
  resolveEnvMode,
56
56
  sanitizeInput
57
- } from "./chunk-4HJKH36S.js";
57
+ } from "./chunk-GEGV6DBO.js";
58
58
  import {
59
59
  withPrerequisite
60
- } from "./chunk-IZ67B4KO.js";
60
+ } from "./chunk-AREFLH3S.js";
61
61
  import {
62
62
  NOOP_NOTIFIER,
63
63
  RateLimiter,
@@ -79,7 +79,7 @@ import {
79
79
  withAccessPolicy,
80
80
  withProgressHeartbeat,
81
81
  wrapToolWithTimeout
82
- } from "./chunk-GKRUQ5SP.js";
82
+ } from "./chunk-J2KMYVWA.js";
83
83
  import {
84
84
  addResearchPaper,
85
85
  addSourceToRegistry,
@@ -107,15 +107,15 @@ import {
107
107
  parseRegistry,
108
108
  sourceExistsInRegistry,
109
109
  summarizeContextForPrompt
110
- } from "./chunk-56D3JL22.js";
110
+ } from "./chunk-4TT75SCG.js";
111
111
  import {
112
112
  getTokenEnvVars,
113
113
  resolveToken
114
- } from "./chunk-ZRD5N3KT.js";
114
+ } from "./chunk-JEPN7EHZ.js";
115
115
  import {
116
116
  loadPapersRegistry,
117
117
  loadTechniquesRegistry
118
- } from "./chunk-FXCK7OGY.js";
118
+ } from "./chunk-OJNGOC6V.js";
119
119
  import {
120
120
  resolveInsideRoot
121
121
  } from "./chunk-NUBSJGQZ.js";
@@ -124,14 +124,14 @@ import {
124
124
  MemoryImportance,
125
125
  calculateTextJaccardSimilarity,
126
126
  getToolMemory
127
- } from "./chunk-VRDLTARY.js";
127
+ } from "./chunk-R4YCNXN2.js";
128
128
  import {
129
129
  STOPWORDS,
130
130
  truncateWithInfo
131
131
  } from "./chunk-6T3EPABN.js";
132
132
  import {
133
133
  createSessionMemory
134
- } from "./chunk-STXQPQID.js";
134
+ } from "./chunk-B6VRJBDI.js";
135
135
  import {
136
136
  BUILT_IN_EXPERTS,
137
137
  BuiltInExpertTypeSchema,
@@ -146,7 +146,7 @@ import {
146
146
  createEvent,
147
147
  getGlobalEventBus,
148
148
  getGlobalRegistry
149
- } from "./chunk-TQ7AL32B.js";
149
+ } from "./chunk-EX3TD7DG.js";
150
150
  import {
151
151
  CliDetectionCache,
152
152
  asRecord,
@@ -154,19 +154,19 @@ import {
154
154
  getAvailableClis,
155
155
  sleep,
156
156
  withTimeout
157
- } from "./chunk-H5JKSEWN.js";
157
+ } from "./chunk-FNGKM5PL.js";
158
158
  import {
159
159
  DEFAULTS
160
- } from "./chunk-H7D5N2MR.js";
160
+ } from "./chunk-WCAQ3T6H.js";
161
161
  import {
162
162
  getAvailabilityCache,
163
163
  getCliForModelId,
164
164
  resolveFallback
165
- } from "./chunk-3IMOTUTL.js";
165
+ } from "./chunk-F2TQNJ2O.js";
166
166
  import {
167
167
  generateHyphenId,
168
168
  generateUUID
169
- } from "./chunk-LOU3BPOF.js";
169
+ } from "./chunk-44VJMRRM.js";
170
170
  import {
171
171
  AGENT_ROUTER_TIMEOUTS,
172
172
  API_TIMEOUTS,
@@ -258,7 +258,7 @@ import {
258
258
  selectStrategyByManifest,
259
259
  toExpertTaskAnalysisResult,
260
260
  withStep
261
- } from "./chunk-5R7SHZFF.js";
261
+ } from "./chunk-Q4UU2W6L.js";
262
262
  import {
263
263
  ensureLearningDir,
264
264
  getMetaOutcomesFile,
@@ -26293,7 +26293,7 @@ function execIdFields(executionId) {
26293
26293
  async function populateUnifiedContextOnState(state, options) {
26294
26294
  const taskCandidate = state["task"];
26295
26295
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
26296
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-PSICCEJH.js");
26296
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-33WBFUYR.js");
26297
26297
  const category = inferTaskCategory2(taskCandidate);
26298
26298
  const executionId = options?.executionId;
26299
26299
  const execFields = execIdFields(executionId);
@@ -41361,7 +41361,7 @@ async function tryIssueTriage(task) {
41361
41361
  try {
41362
41362
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
41363
41363
  if (issueMatch === null) return null;
41364
- const { createIssueTriage } = await import("./issue-triage-VTO3EHHY.js");
41364
+ const { createIssueTriage } = await import("./issue-triage-44OGWBDA.js");
41365
41365
  const triage = createIssueTriage();
41366
41366
  const owner = issueMatch[1] ?? "";
41367
41367
  const num = issueMatch[2] ?? "";
@@ -41389,7 +41389,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
41389
41389
  ]);
41390
41390
  async function classifyWithLLM(task) {
41391
41391
  try {
41392
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-UUPXRZPT.js");
41392
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-Y5NH22W2.js");
41393
41393
  const prompt = [
41394
41394
  "Classify this task into exactly one pipeline template.",
41395
41395
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -43155,7 +43155,7 @@ var memoryInitPromise = null;
43155
43155
  async function initPipelineMemory() {
43156
43156
  if (cachedMemory !== null) return cachedMemory;
43157
43157
  try {
43158
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-HBUJ2HAL.js");
43158
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-QJRW7C4R.js");
43159
43159
  const { getLearningDir } = await import("./learning-persistence-M3OTCCNI.js");
43160
43160
  const mem = createSessionMemory2(getLearningDir());
43161
43161
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -43217,7 +43217,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
43217
43217
  callRecord(routingMemoryCache);
43218
43218
  return;
43219
43219
  }
43220
- routingMemoryInitPromise ??= import("./routing-memory-27IZLNGJ.js").then(({ createRoutingMemory }) => {
43220
+ routingMemoryInitPromise ??= import("./routing-memory-BEKRIRCI.js").then(({ createRoutingMemory }) => {
43221
43221
  routingMemoryCache ??= createRoutingMemory();
43222
43222
  return routingMemoryCache;
43223
43223
  }).catch((error) => {
@@ -43251,7 +43251,7 @@ ${text}` : "";
43251
43251
  }
43252
43252
  async function getWeatherContext() {
43253
43253
  try {
43254
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-TCIO64NT.js");
43254
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-44EUMUVB.js");
43255
43255
  const report = generateWeatherReport2({ includeAdaptive: true });
43256
43256
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
43257
43257
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -43269,7 +43269,7 @@ ${lines}
43269
43269
  }
43270
43270
  async function getMemoryContext(task) {
43271
43271
  try {
43272
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-HBUJ2HAL.js");
43272
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-QJRW7C4R.js");
43273
43273
  const { getLearningDir } = await import("./learning-persistence-M3OTCCNI.js");
43274
43274
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
43275
43275
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -43381,7 +43381,7 @@ ${contextBlock}`;
43381
43381
  const strategy = config.votingStrategy ?? "higher_order";
43382
43382
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
43383
43383
  try {
43384
- const { executeVoting } = await import("./consensus-vote-KWJO34AW.js");
43384
+ const { executeVoting } = await import("./consensus-vote-EZX4S5MB.js");
43385
43385
  const votingResult = await executeVoting(
43386
43386
  {
43387
43387
  proposal: buildVoteProposal(plan, research),
@@ -43818,7 +43818,7 @@ async function searchCodebaseForTask(task) {
43818
43818
  }
43819
43819
  async function queryResearchRegistry(task) {
43820
43820
  try {
43821
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-YD22ZGBJ.js");
43821
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-ERWILFW6.js");
43822
43822
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
43823
43823
  if (topic === void 0) return null;
43824
43824
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -43889,7 +43889,7 @@ function createScanStageWrapper() {
43889
43889
  try {
43890
43890
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
43891
43891
  if (slug !== void 0) {
43892
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-KQPXLESS.js");
43892
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-5JEWCW42.js");
43893
43893
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
43894
43894
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
43895
43895
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -46327,7 +46327,7 @@ var GitHubTaskTracker = class {
46327
46327
  cachedProvider = null;
46328
46328
  async getProvider() {
46329
46329
  if (this.cachedProvider !== null) return this.cachedProvider;
46330
- const { createScmProvider } = await import("./factory-KN7SKXTJ.js");
46330
+ const { createScmProvider } = await import("./factory-WOOGZ5NX.js");
46331
46331
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
46332
46332
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
46333
46333
  this.cachedProvider = result.value;
@@ -47100,7 +47100,7 @@ async function probeSource(source, includeModelIds) {
47100
47100
  }
47101
47101
  }
47102
47102
  async function defaultSources(includeOpenRouter) {
47103
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-QXYXDYBO.js");
47103
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-75OMPTCR.js");
47104
47104
  const adapters = createAllAdapters2();
47105
47105
  return buildDefaultModelSources(adapters, { includeOpenRouter });
47106
47106
  }
@@ -51163,4 +51163,4 @@ export {
51163
51163
  shutdownFeedbackSubscriber,
51164
51164
  createEventBusBridge
51165
51165
  };
51166
- //# sourceMappingURL=chunk-LWVXWMC3.js.map
51166
+ //# sourceMappingURL=chunk-OUULPDQ4.js.map
@@ -2341,7 +2341,7 @@ function setDefaultRegistry(registry) {
2341
2341
  }
2342
2342
  async function reloadDefaultRegistry() {
2343
2343
  globalRegistry = buildDefaultRegistry();
2344
- const { resetGlobalRegistry } = await import("./unified-registry-D3DZ3TNC.js");
2344
+ const { resetGlobalRegistry } = await import("./unified-registry-IPZEPTFZ.js");
2345
2345
  resetGlobalRegistry();
2346
2346
  return globalRegistry;
2347
2347
  }
@@ -13609,7 +13609,7 @@ var CompositeRouter = class _CompositeRouter {
13609
13609
  */
13610
13610
  async consultUnifiedContext(task) {
13611
13611
  try {
13612
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-PSICCEJH.js");
13612
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-33WBFUYR.js");
13613
13613
  const ctx = await getContextForTask({
13614
13614
  task: task.content,
13615
13615
  category: inferTaskCategory(task.content),
@@ -15112,4 +15112,4 @@ export {
15112
15112
  AgentCapability,
15113
15113
  OrchestratorError
15114
15114
  };
15115
- //# sourceMappingURL=chunk-5R7SHZFF.js.map
15115
+ //# sourceMappingURL=chunk-Q4UU2W6L.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-6T3EPABN.js";
6
6
  import {
7
7
  SessionMemory
8
- } from "./chunk-STXQPQID.js";
8
+ } from "./chunk-B6VRJBDI.js";
9
9
  import {
10
10
  StatsOnlyAdapter,
11
11
  ensureSharedMemoryRegistry
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-KSQSWEFH.js";
16
16
  import {
17
17
  generateId
18
- } from "./chunk-LOU3BPOF.js";
18
+ } from "./chunk-44VJMRRM.js";
19
19
  import {
20
20
  ErrorCode,
21
21
  NexusError,
@@ -28,7 +28,7 @@ import {
28
28
  getTimeProvider,
29
29
  ok,
30
30
  setSharedMobiMemDbPathResolver
31
- } from "./chunk-5R7SHZFF.js";
31
+ } from "./chunk-Q4UU2W6L.js";
32
32
  import {
33
33
  nexusDataPath
34
34
  } from "./chunk-DHVMSIT5.js";
@@ -5552,4 +5552,4 @@ export {
5552
5552
  reinitializeMemoryBackends,
5553
5553
  ToolMemoryManager
5554
5554
  };
5555
- //# sourceMappingURL=chunk-VRDLTARY.js.map
5555
+ //# sourceMappingURL=chunk-R4YCNXN2.js.map
@@ -3,15 +3,16 @@ import {
3
3
  createStream,
4
4
  requireApiKey,
5
5
  temperatureUnsupportedForModel,
6
- validateApiKeyPresence
7
- } from "./chunk-MAHOP5ND.js";
6
+ validateApiKeyPresence,
7
+ warnTemperatureDropped
8
+ } from "./chunk-LWFJLJUS.js";
8
9
  import {
9
10
  ModelCapability,
10
11
  err,
11
12
  getCliModelName,
12
13
  getTokenEstimator,
13
14
  ok
14
- } from "./chunk-5R7SHZFF.js";
15
+ } from "./chunk-Q4UU2W6L.js";
15
16
 
16
17
  // src/adapters/openai-types.ts
17
18
  var OPENAI_MODELS = {
@@ -487,8 +488,12 @@ var OpenAIAdapter = class extends BaseAdapter {
487
488
  * Adds optional parameters to the request.
488
489
  */
489
490
  addOptionalParams(params, request) {
490
- if (request.temperature !== void 0 && !temperatureUnsupportedForModel(this.resolvedModelId)) {
491
- params.temperature = request.temperature;
491
+ if (request.temperature !== void 0) {
492
+ if (temperatureUnsupportedForModel(this.resolvedModelId)) {
493
+ warnTemperatureDropped(this.resolvedModelId);
494
+ } else {
495
+ params.temperature = request.temperature;
496
+ }
492
497
  }
493
498
  if (request.stop !== void 0 && request.stop.length > 0) {
494
499
  params.stop = request.stop;
@@ -602,4 +607,4 @@ export {
602
607
  OpenAIAdapter,
603
608
  createOpenAIAdapter
604
609
  };
605
- //# sourceMappingURL=chunk-3EZE7EO2.js.map
610
+ //# sourceMappingURL=chunk-RPTEVESB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/openai-types.ts","../src/adapters/openai-adapter.ts","../src/adapters/openai-mappers.ts"],"sourcesContent":["/**\n * nexus-agents/adapters - OpenAI Type Helpers\n *\n * Type definitions and constants for the OpenAI direct-API SDK adapter.\n *\n * **Architectural boundary (#2200 Child 3):** these constants do NOT live\n * in `config/in-tree-data.ts`. The canonical registry's `cliName`\n * dimension targets CLI tools (`claude` / `gemini` / `codex` / `opencode`)\n * — there is no `openai` CLI binary. Adding `'openai'` to the CLI_NAMES\n * enum would force a fifth case in 4+ exhaustive switches across the\n * codebase, violating the semantic of \"CLI tool name.\"\n *\n * The OpenAI direct adapter is conceptually different from CLI adapters:\n * it talks to the OpenAI HTTPS API directly, not via a subprocess CLI.\n * Its model identifiers are OpenAI's own (`gpt-4o-2024-11-20`,\n * `gpt-3.5-turbo-0125`, etc.) — these are upstream API constants, not\n * versions WE chose. They drift only when OpenAI ships new dated releases.\n *\n * This file is the single source of truth for OpenAI direct-API model\n * identifiers. The model-string drift fitness-guard (#2199) treats it as\n * a documented architectural exception in the allowlist.\n */\n\nimport type { ModelCapability } from '../core/index.js';\nimport { ModelCapability as MC } from '../core/index.js';\nimport { getCliModelName } from '../config/model-config-helpers.js';\n\n/**\n * Supported OpenAI direct-API model identifiers (OpenAI's own dated names).\n *\n * GPT_5_2_CODEX derives from the canonical registry (codex-5.2's cliModelName)\n * because it overlaps with the Codex CLI; the rest are pure-API constants.\n */\nexport const OPENAI_MODELS = {\n GPT_5_2: 'gpt-5.2',\n GPT_5_2_INSTANT: 'gpt-5.2-chat-latest',\n GPT_5_2_PRO: 'gpt-5.2-pro',\n GPT_5_2_CODEX: getCliModelName('codex-5.2'),\n GPT_4O: 'gpt-4o-2024-11-20',\n GPT_4O_MINI: 'gpt-4o-mini-2024-07-18',\n GPT_4_TURBO: 'gpt-4-turbo-2024-04-09',\n GPT_35_TURBO: 'gpt-3.5-turbo-0125',\n} as const;\n\n/**\n * User-friendly OpenAI aliases → dated model identifiers.\n *\n * Identity-only mappings (e.g., `'gpt-5.2-pro' → 'gpt-5.2-pro'`) were\n * removed in #2200 Child 3 — `resolveModelId` already passes unknown ids\n * through unchanged via `?? modelId`. Only entries that translate a\n * shorthand into a dated version remain.\n */\nexport const OPENAI_MODEL_ALIASES: Record<string, string> = {\n 'gpt-5.2-instant': OPENAI_MODELS.GPT_5_2_INSTANT,\n 'gpt-4o': OPENAI_MODELS.GPT_4O,\n 'gpt-4o-mini': OPENAI_MODELS.GPT_4O_MINI,\n 'gpt-4-turbo': OPENAI_MODELS.GPT_4_TURBO,\n 'gpt-3.5-turbo': OPENAI_MODELS.GPT_35_TURBO,\n} as const;\n\n/**\n * Configuration specific to OpenAIAdapter.\n */\nexport interface OpenAIAdapterConfig {\n /** Model ID (e.g., 'gpt-4o' or full model identifier) */\n modelId: string;\n /** API key for OpenAI API (required) */\n apiKey: string;\n /** Base URL for API (optional, defaults to OpenAI's API) */\n baseUrl?: string;\n /** Request timeout in milliseconds (optional) */\n timeout?: number;\n /** Maximum retries for failed requests (optional) */\n maxRetries?: number;\n /** Organization ID (optional) */\n organization?: string;\n}\n\n// Note: Token estimation moved to core/token-estimator.ts (unified TokenEstimator)\n\n/**\n * Default maximum tokens for OpenAI models.\n */\nexport const DEFAULT_MAX_TOKENS = 4096;\n\n/**\n * Tool call type for extracting function info.\n */\nexport interface FunctionToolCall {\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * Type guard for function tool calls.\n * Note: typeof null === 'object' is true, so we need to check tc !== null\n */\nexport function isFunctionToolCall(toolCall: unknown): toolCall is FunctionToolCall {\n if (typeof toolCall !== 'object' || toolCall === null) {\n return false;\n }\n const tc = toolCall as Record<string, unknown>;\n return tc['type'] === 'function' && typeof tc['function'] === 'object' && tc['function'] !== null;\n}\n\n/**\n * Resolves model alias to full model identifier.\n */\nexport function resolveModelId(modelId: string): string {\n return OPENAI_MODEL_ALIASES[modelId] ?? modelId;\n}\n\n/**\n * Determines capabilities based on model ID.\n */\nexport function getModelCapabilities(modelId: string): readonly ModelCapability[] {\n const capabilities: ModelCapability[] = [MC.COMPLETION, MC.STREAMING, MC.TOOL_USE];\n\n const resolvedId = resolveModelId(modelId);\n\n // Vision is available on GPT-4o, GPT-4-turbo, and GPT-5.2 models\n if (\n resolvedId.includes('gpt-4o') ||\n resolvedId.includes('gpt-4-turbo') ||\n resolvedId.includes('gpt-5.2')\n ) {\n capabilities.push(MC.VISION);\n }\n\n // Extended thinking is available on GPT-5.2 models\n if (resolvedId.includes('gpt-5.2')) {\n capabilities.push(MC.EXTENDED_THINKING);\n }\n\n return capabilities;\n}\n","/**\n * nexus-agents/adapters - OpenAI Model Adapter\n *\n * Adapter for OpenAI models (GPT-4o, GPT-4-turbo, GPT-3.5-turbo).\n * Implements the IModelAdapter interface with streaming support, rate limiting,\n * and proper error handling.\n *\n * Verified 2026-01-03: openai@6.15.0 is current stable\n * (Source: npm registry)\n */\n\nimport OpenAI, { APIError } from 'openai';\nimport type { ChatCompletionMessageParam, ChatCompletion } from 'openai/resources/chat/completions';\nimport type {\n Result,\n CompletionRequest,\n CompletionResponse,\n ModelMetadata,\n StreamChunk,\n TokenUsage,\n} from '../core/index.js';\nimport { ok, err, ModelError, ConfigError, getTokenEstimator } from '../core/index.js';\nimport {\n BaseAdapter,\n type BaseAdapterConfig,\n requireApiKey,\n validateApiKeyPresence,\n} from './base-adapter.js';\nimport { createStream } from './streaming.js';\nimport {\n DEFAULT_MAX_TOKENS,\n resolveModelId,\n getModelCapabilities,\n type OpenAIAdapterConfig,\n} from './openai-types.js';\nimport {\n temperatureUnsupportedForModel,\n warnTemperatureDropped,\n} from '../config/temperature-support.js';\nimport {\n mapMessage,\n mapTool,\n mapStopReason,\n mapChoiceToContentBlocks,\n mapResponseUsage,\n mapStreamChunk,\n} from './openai-mappers.js';\n\n// Re-export types and constants for public API\nexport { OPENAI_MODELS, OPENAI_MODEL_ALIASES, type OpenAIAdapterConfig } from './openai-types.js';\n\n/**\n * OpenAI model adapter.\n *\n * Provides a unified interface for interacting with OpenAI's GPT models.\n * Supports completion, streaming, tool use, and vision capabilities.\n *\n * @example\n * ```typescript\n * const adapter = new OpenAIAdapter({\n * modelId: 'gpt-4o',\n * apiKey: process.env.OPENAI_API_KEY,\n * });\n *\n * const result = await adapter.complete({\n * messages: [{ role: 'user', content: 'Hello!' }],\n * maxTokens: 1024,\n * });\n *\n * if (result.ok) {\n * console.log(result.value.content);\n * }\n * ```\n */\n\n/**\n * Compose a diagnostic string from an OpenAI SDK `APIError`'s real fields\n * (#4047). The SDK's `.message` alone can be as useless as\n * `\"400 status code (no body)\"` for an OpenAI-compatible gateway; this pulls the\n * HTTP status, structured error fields, and the raw body so the actual rejection\n * reason is visible.\n */\n/** Typed structural view of the OpenAI SDK `APIError` fields we read (the SDK's\n * generic `APIError<any,…>` otherwise leaks `any`). */\ninterface ApiErrorView {\n readonly status?: number | null;\n readonly type?: string | null;\n readonly code?: string | null;\n readonly param?: string | null;\n readonly requestID?: string | null;\n readonly error?: unknown;\n readonly message?: string;\n}\n\n/** `key=value` tag, or `''` when the value is absent. */\nfunction kvTag(key: string, val: string | number | null | undefined): string {\n return val === null || val === undefined || val === '' ? '' : `${key}=${String(val)}`;\n}\n\nfunction describeOpenAIApiError(v: ApiErrorView): string {\n const tags = [\n `HTTP ${String(v.status ?? 'unknown')}`,\n kvTag('type', v.type),\n kvTag('code', v.code),\n kvTag('param', v.param),\n kvTag('request_id', v.requestID),\n ].filter((t) => t !== '');\n let body = '';\n if (v.error !== undefined && v.error !== null) {\n try {\n const raw = JSON.stringify(v.error);\n body = ` body=${raw.length > MAX_ERROR_BODY_CHARS ? `${raw.slice(0, MAX_ERROR_BODY_CHARS)}…` : raw}`;\n } catch {\n body = ' body=<unserializable>';\n }\n }\n return `${tags.join(' ')}: ${v.message ?? ''}${body}`;\n}\n\n/** Cap the surfaced gateway error body so a huge response can't bloat logs/messages. */\nconst MAX_ERROR_BODY_CHARS = 600;\n\nexport class OpenAIAdapter extends BaseAdapter {\n private readonly client: OpenAI;\n private readonly resolvedModelId: string;\n\n /**\n * Creates a new OpenAIAdapter instance.\n *\n * @param config - OpenAI adapter configuration\n * @throws {ConfigError} If API key is missing\n */\n constructor(config: OpenAIAdapterConfig) {\n const resolvedModelId = resolveModelId(config.modelId);\n\n // Build baseConfig conditionally to satisfy exactOptionalPropertyTypes\n const baseConfig: BaseAdapterConfig = {\n providerId: 'openai',\n modelId: resolvedModelId,\n capabilities: getModelCapabilities(config.modelId),\n apiKey: config.apiKey,\n };\n\n // Only set optional properties if defined\n if (config.baseUrl !== undefined) {\n baseConfig.baseUrl = config.baseUrl;\n }\n if (config.timeout !== undefined) {\n baseConfig.timeout = config.timeout;\n }\n if (config.maxRetries !== undefined) {\n baseConfig.maxRetries = config.maxRetries;\n }\n\n super(baseConfig);\n\n this.resolvedModelId = resolvedModelId;\n\n // Validate API key presence\n requireApiKey(config.apiKey, 'OpenAI', config.modelId);\n\n this.client = this.createClient(config);\n }\n\n /**\n * Creates the OpenAI client with configuration.\n */\n private createClient(config: OpenAIAdapterConfig): OpenAI {\n const clientOptions: ConstructorParameters<typeof OpenAI>[0] = {\n apiKey: config.apiKey,\n maxRetries: config.maxRetries ?? 2,\n };\n\n if (config.baseUrl !== undefined) {\n clientOptions.baseURL = config.baseUrl;\n }\n if (config.timeout !== undefined) {\n clientOptions.timeout = config.timeout;\n }\n if (config.organization !== undefined) {\n clientOptions.organization = config.organization;\n }\n\n return new OpenAI(clientOptions);\n }\n\n /**\n * Validates adapter configuration.\n * Extends base validation with OpenAI-specific checks.\n */\n override validateConfig(): Result<void, ConfigError> {\n const baseResult = super.validateConfig();\n if (!baseResult.ok) {\n return baseResult;\n }\n\n // Validate API key is present\n const keyResult = validateApiKeyPresence(this.config.apiKey, this.providerId, this.modelId);\n if (!keyResult.ok) return keyResult;\n\n return ok(undefined);\n }\n\n /**\n * Send a completion request to OpenAI.\n *\n * @param request - The completion request\n * @returns Result with response or ModelError\n */\n async complete(request: CompletionRequest): Promise<Result<CompletionResponse, ModelError>> {\n this.logRequest(request);\n\n try {\n const response = await this.executeCompletion(request);\n this.logResponse(response);\n return ok(response);\n } catch (error) {\n return err(this.transformError(error));\n }\n }\n\n /**\n * Surface an OpenAI / OpenAI-compatible gateway's REAL HTTP status + response\n * body in the error (#4047). The OpenAI SDK's default message collapses a\n * gateway rejection to e.g. `\"400 status code (no body)\"`, which hides WHY a\n * litellm-style gateway rejected a request — exactly the wall hit when\n * diagnosing degraded voter panels on a custom gateway. We re-message with the\n * status/type/code/param/request-id/body. Error-code routing is unchanged: we\n * classify on the ORIGINAL signal (`status`/`code`/`message`) via a clean probe\n * error, so the diagnostic `request_id`/`body` can't pollute the message-\n * substring classifier, then re-message the result with the full detail.\n * Applies to direct OpenAI and the compat gateway alike.\n */\n protected override transformError(error: unknown): ModelError {\n if (error instanceof APIError) {\n const v = error as ApiErrorView;\n // Classify on the original SDK message + status/code only.\n const probe: Error & { status?: number | undefined; code?: string | null | undefined } =\n new Error(typeof v.message === 'string' ? v.message : '');\n probe.status = typeof v.status === 'number' ? v.status : undefined;\n probe.code = v.code ?? undefined;\n probe.cause = error;\n const classified = super.transformError(probe);\n // Surface the full diagnostic detail in the final message (code/cause kept).\n classified.message = `${this.providerId}/${this.modelId}: ${describeOpenAIApiError(v)}`;\n return classified;\n }\n return super.transformError(error);\n }\n\n /**\n * Stream a completion request from OpenAI.\n *\n * @param request - The completion request\n * @yields StreamChunk objects as they arrive\n */\n async *stream(request: CompletionRequest): AsyncIterable<StreamChunk> {\n this.logRequest(request);\n\n const [controller, iterable] = createStream<StreamChunk>();\n\n // Start streaming in the background\n this.executeStream(request, controller).catch((error: unknown) => {\n const modelError = this.transformError(error);\n controller.error(modelError);\n });\n\n yield* iterable;\n }\n\n /**\n * Count tokens in text using OpenAI-specific estimation.\n *\n * @param text - Text to count tokens for\n * @returns Approximate token count\n */\n override countTokens(text: string): Promise<number> {\n // Use unified TokenEstimator with OpenAI-specific ratio (~4 chars/token)\n return Promise.resolve(getTokenEstimator().estimateText(text, 'openai'));\n }\n\n /**\n * Executes the completion request against the OpenAI API.\n */\n private async executeCompletion(request: CompletionRequest): Promise<CompletionResponse> {\n const params = this.buildRequestParams(request);\n // #3036: forward AbortSignal into the OpenAI SDK so withWatchdog\n // timeouts cancel the HTTP request instead of leaking it past the\n // Promise.race boundary. Branch on signal presence — vitest 4\n // toHaveBeenCalledWith treats `(params, undefined)` as a distinct\n // call shape from `(params)`.\n const response =\n request.signal !== undefined\n ? await this.client.chat.completions.create(params, { signal: request.signal })\n : await this.client.chat.completions.create(params);\n return this.mapResponse(response);\n }\n\n /**\n * Executes streaming completion and pushes chunks to the controller.\n */\n private async executeStream(\n request: CompletionRequest,\n controller: {\n push: (chunk: StreamChunk) => Result<void, Error>;\n complete: () => void;\n error: (error: Error) => void;\n }\n ): Promise<void> {\n try {\n const params = this.buildRequestParams(request);\n const stream = await this.client.chat.completions.create({ ...params, stream: true });\n\n let contentIndex = 0;\n let hasStarted = false;\n\n for await (const chunk of stream) {\n const mappedChunks = mapStreamChunk(chunk, contentIndex, hasStarted);\n\n for (const mappedChunk of mappedChunks) {\n if (mappedChunk.type === 'message_start') {\n hasStarted = true;\n }\n if (mappedChunk.type === 'content_block_start') {\n contentIndex++;\n }\n controller.push(mappedChunk);\n }\n }\n\n controller.complete();\n } catch (error) {\n const modelError = this.transformError(error);\n controller.error(modelError);\n }\n }\n\n /**\n * Builds OpenAI API request parameters from our CompletionRequest.\n */\n private buildRequestParams(\n request: CompletionRequest\n ): OpenAI.Chat.ChatCompletionCreateParamsNonStreaming {\n const messages = this.buildMessages(request);\n\n const params: OpenAI.Chat.ChatCompletionCreateParamsNonStreaming = {\n model: this.resolvedModelId,\n messages,\n max_completion_tokens: request.maxTokens ?? DEFAULT_MAX_TOKENS,\n };\n\n this.addOptionalParams(params, request);\n return params;\n }\n\n /**\n * Builds the messages array for the request.\n */\n private buildMessages(request: CompletionRequest): ChatCompletionMessageParam[] {\n const messages: ChatCompletionMessageParam[] = [];\n\n // Add system prompt if provided explicitly\n if (request.systemPrompt !== undefined && request.systemPrompt !== '') {\n messages.push({ role: 'system', content: request.systemPrompt });\n }\n\n // Map and add all messages (filtering out system if already added via systemPrompt)\n for (const msg of request.messages) {\n if (msg.role === 'system' && request.systemPrompt !== undefined) {\n continue;\n }\n messages.push(mapMessage(msg));\n }\n\n return messages;\n }\n\n /**\n * Adds optional parameters to the request.\n */\n private addOptionalParams(\n params: OpenAI.Chat.ChatCompletionCreateParamsNonStreaming,\n request: CompletionRequest\n ): void {\n // #4061: a gateway routing to a Claude model after Opus 4.6 rejects any\n // non-1.0 temperature with a 400. Omit the param for those models so a\n // gateway-routed voter panel (default 0.3) does not 400. Non-Claude gateway\n // models (gpt-*, etc.) are unaffected. NOTE: a gateway that injects its OWN\n // default temperature when the field is absent is outside our control — our\n // contract is only to not SEND a value the target model rejects.\n if (request.temperature !== undefined) {\n if (temperatureUnsupportedForModel(this.resolvedModelId)) {\n warnTemperatureDropped(this.resolvedModelId);\n } else {\n params.temperature = request.temperature;\n }\n }\n\n if (request.stop !== undefined && request.stop.length > 0) {\n params.stop = request.stop;\n }\n\n if (request.tools !== undefined && request.tools.length > 0) {\n params.tools = request.tools.map(mapTool);\n }\n\n this.addResponseFormat(params, request);\n }\n\n /**\n * Adds response format to the request if specified.\n */\n private addResponseFormat(\n params: OpenAI.Chat.ChatCompletionCreateParamsNonStreaming,\n request: CompletionRequest\n ): void {\n if (request.responseFormat === undefined) {\n return;\n }\n\n if (request.responseFormat.type === 'json_object') {\n params.response_format = { type: 'json_object' };\n } else if (request.responseFormat.type === 'json_schema') {\n params.response_format = {\n type: 'json_schema',\n json_schema: {\n name: 'response',\n schema: request.responseFormat.schema,\n },\n };\n }\n }\n\n /**\n * Maps OpenAI API response to our CompletionResponse format.\n */\n private mapResponse(response: ChatCompletion): CompletionResponse {\n const firstChoice = response.choices[0];\n\n // Handle case where no choices are returned\n if (firstChoice === undefined) {\n return this.createEmptyResponse(response);\n }\n\n const content = mapChoiceToContentBlocks(firstChoice);\n const usage: TokenUsage = mapResponseUsage(response);\n\n return {\n content,\n usage,\n stopReason: mapStopReason(firstChoice.finish_reason),\n model: response.model,\n };\n }\n\n /**\n * Creates an empty response when no choices are returned.\n */\n private createEmptyResponse(response: ChatCompletion): CompletionResponse {\n return {\n content: [{ type: 'text', text: '' }],\n usage: mapResponseUsage(response),\n stopReason: 'end_turn',\n model: response.model,\n };\n }\n\n /**\n * (#2529) List models served by this OpenAI-compatible endpoint.\n *\n * Wraps `GET /v1/models`. Result is cached for `LIST_MODELS_TTL_MS`\n * so identity resolution doesn't round-trip on every adapter.\n * Concurrent callers share the in-flight promise.\n *\n * Throws on non-2xx so the harness-side identity resolver knows to\n * fall back to modelId parsing — silent empty-list returns would be\n * indistinguishable from \"this gateway has no models\", which a\n * misconfigured endpoint shouldn't be allowed to claim.\n */\n async listModels(): Promise<readonly ModelMetadata[]> {\n const now = Date.now();\n if (this.modelsCache !== null && now - this.modelsCache.fetchedAt < LIST_MODELS_TTL_MS) {\n return this.modelsCache.value;\n }\n if (this.modelsInFlight !== null) {\n return this.modelsInFlight;\n }\n const inFlight = this.fetchModels();\n this.modelsInFlight = inFlight;\n try {\n const value = await inFlight;\n this.modelsCache = { value, fetchedAt: Date.now() };\n return value;\n } finally {\n this.modelsInFlight = null;\n }\n }\n\n private modelsCache: { value: readonly ModelMetadata[]; fetchedAt: number } | null = null;\n private modelsInFlight: Promise<readonly ModelMetadata[]> | null = null;\n\n private async fetchModels(): Promise<readonly ModelMetadata[]> {\n const list = await this.client.models.list();\n return list.data.map((m): ModelMetadata => {\n const meta: ModelMetadata = { id: m.id };\n if (typeof m.owned_by === 'string') {\n return { ...meta, ownedBy: m.owned_by, createdAt: m.created };\n }\n if (typeof m.created === 'number') {\n return { ...meta, createdAt: m.created };\n }\n return meta;\n });\n }\n}\n\nconst LIST_MODELS_TTL_MS = 5 * 60 * 1000;\n\n/**\n * Creates an OpenAIAdapter with the specified configuration.\n * Factory function for cleaner API.\n *\n * @param config - OpenAI adapter configuration\n * @returns A configured OpenAIAdapter instance\n *\n * @example\n * ```typescript\n * const adapter = createOpenAIAdapter({\n * modelId: 'gpt-4o',\n * apiKey: process.env.OPENAI_API_KEY!,\n * });\n * ```\n */\nexport function createOpenAIAdapter(config: OpenAIAdapterConfig): OpenAIAdapter {\n return new OpenAIAdapter(config);\n}\n","/**\n * nexus-agents/adapters - OpenAI Message Mappers\n *\n * Functions for mapping between Nexus and OpenAI message formats.\n */\n\nimport type OpenAI from 'openai';\nimport type {\n ChatCompletionMessageParam,\n ChatCompletionTool,\n ChatCompletion,\n ChatCompletionChunk,\n} from 'openai/resources/chat/completions';\nimport type {\n ContentBlock,\n Message,\n ToolDefinition,\n TokenUsage,\n StopReason,\n StreamChunk,\n} from '../core/index.js';\nimport { isFunctionToolCall } from './openai-types.js';\n\n/**\n * Maps OpenAI finish reasons to our StopReason type.\n */\nexport function mapStopReason(openaiReason: string | null | undefined): StopReason {\n switch (openaiReason) {\n case 'stop':\n return 'end_turn';\n case 'length':\n return 'max_tokens';\n case 'tool_calls':\n case 'function_call':\n return 'tool_use';\n case 'content_filter':\n return 'end_turn';\n default:\n return 'end_turn';\n }\n}\n\n/**\n * Maps OpenAI choice to our ContentBlock array.\n */\nexport function mapChoiceToContentBlocks(choice: ChatCompletion.Choice): ContentBlock[] {\n const blocks: ContentBlock[] = [];\n const message = choice.message;\n\n // Add text content if present\n if (message.content !== null && message.content !== '') {\n blocks.push({ type: 'text', text: message.content });\n }\n\n // Add tool calls if present\n if (message.tool_calls !== undefined && message.tool_calls.length > 0) {\n for (const toolCall of message.tool_calls) {\n if (isFunctionToolCall(toolCall)) {\n let parsedInput: unknown;\n try {\n parsedInput = JSON.parse(toolCall.function.arguments) as unknown;\n } catch {\n parsedInput = { _raw: toolCall.function.arguments };\n }\n blocks.push({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.function.name,\n input: parsedInput,\n });\n }\n }\n }\n\n // If no content at all, return empty text block\n if (blocks.length === 0) {\n blocks.push({ type: 'text', text: '' });\n }\n\n return blocks;\n}\n\n/**\n * Maps our Message format to OpenAI's ChatCompletionMessageParam format.\n */\nexport function mapMessage(message: Message): ChatCompletionMessageParam {\n // Handle system messages\n if (message.role === 'system') {\n return mapSystemMessage(message);\n }\n\n // Handle user messages\n if (message.role === 'user') {\n return mapUserMessage(message);\n }\n\n // Handle assistant messages\n return mapAssistantMessage(message);\n}\n\n/**\n * Maps a system message.\n */\nfunction mapSystemMessage(message: Message): ChatCompletionMessageParam {\n const content =\n typeof message.content === 'string'\n ? message.content\n : message.content\n .filter((b): b is { type: 'text'; text: string } => b.type === 'text')\n .map((b) => b.text)\n .join('\\n');\n return { role: 'system', content };\n}\n\n/**\n * Maps a user message.\n */\nfunction mapUserMessage(message: Message): ChatCompletionMessageParam {\n if (typeof message.content === 'string') {\n return { role: 'user', content: message.content };\n }\n\n // Check for tool results - these need special handling\n const toolResults = message.content.filter(\n (b): b is { type: 'tool_result'; tool_use_id: string; content: string; is_error?: boolean } =>\n b.type === 'tool_result'\n );\n\n if (toolResults.length > 0) {\n // Return first tool result as a tool message\n const firstResult = toolResults[0];\n if (firstResult !== undefined) {\n return {\n role: 'tool',\n tool_call_id: firstResult.tool_use_id,\n content: firstResult.content,\n };\n }\n }\n\n // Map to user message with content array\n const content = message.content.map((block) => {\n if (block.type === 'text') {\n return { type: 'text' as const, text: block.text };\n }\n if (block.type === 'image') {\n return {\n type: 'image_url' as const,\n image_url: {\n url: `data:${block.source.media_type};base64,${block.source.data}`,\n },\n };\n }\n // Fallback for other types\n return { type: 'text' as const, text: '' };\n });\n\n return { role: 'user', content };\n}\n\n/**\n * Maps an assistant message.\n */\nfunction mapAssistantMessage(message: Message): ChatCompletionMessageParam {\n if (typeof message.content === 'string') {\n return { role: 'assistant', content: message.content };\n }\n\n // Check for tool uses in assistant message\n const toolUses = message.content.filter(\n (b): b is { type: 'tool_use'; id: string; name: string; input: unknown } =>\n b.type === 'tool_use'\n );\n\n const textContent = message.content\n .filter((b): b is { type: 'text'; text: string } => b.type === 'text')\n .map((b) => b.text)\n .join('');\n\n if (toolUses.length > 0) {\n const assistantMessage: ChatCompletionMessageParam = {\n role: 'assistant',\n content: textContent !== '' ? textContent : null,\n tool_calls: toolUses.map((tool) => ({\n id: tool.id,\n type: 'function' as const,\n function: {\n name: tool.name,\n arguments: JSON.stringify(tool.input),\n },\n })),\n };\n return assistantMessage;\n }\n\n return { role: 'assistant', content: textContent };\n}\n\n/**\n * Maps our ToolDefinition to OpenAI's tool format.\n */\nexport function mapTool(tool: ToolDefinition): ChatCompletionTool {\n return {\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n };\n}\n\n/**\n * Maps OpenAI API response to our CompletionResponse format.\n */\nexport function mapResponseUsage(response: ChatCompletion): TokenUsage {\n return {\n inputTokens: response.usage?.prompt_tokens ?? 0,\n outputTokens: response.usage?.completion_tokens ?? 0,\n totalTokens: response.usage?.total_tokens ?? 0,\n };\n}\n\n/**\n * Maps content delta from stream chunk.\n */\nfunction mapContentDelta(\n delta: OpenAI.Chat.ChatCompletionChunk.Choice.Delta,\n currentIndex: number,\n hasStarted: boolean\n): StreamChunk[] {\n const chunks: StreamChunk[] = [];\n\n if (delta.content !== undefined && delta.content !== null && delta.content !== '') {\n // Start content block if this is the first content\n if (currentIndex === 0 && !hasStarted) {\n chunks.push({\n type: 'content_block_start',\n index: 0,\n contentBlock: { type: 'text', text: '' },\n });\n }\n\n chunks.push({\n type: 'content_block_delta',\n index: currentIndex,\n delta: { type: 'text_delta', text: delta.content },\n });\n }\n\n return chunks;\n}\n\n/**\n * Maps tool calls from stream chunk delta.\n */\nfunction mapToolCallsDelta(delta: OpenAI.Chat.ChatCompletionChunk.Choice.Delta): StreamChunk[] {\n const chunks: StreamChunk[] = [];\n\n if (delta.tool_calls !== undefined && delta.tool_calls.length > 0) {\n for (const toolCall of delta.tool_calls) {\n if (toolCall.function?.name !== undefined) {\n chunks.push({\n type: 'content_block_start',\n index: toolCall.index,\n contentBlock: {\n type: 'tool_use',\n id: toolCall.id ?? '',\n name: toolCall.function.name,\n input: {},\n },\n });\n }\n }\n }\n\n return chunks;\n}\n\n/**\n * Maps finish reason from stream chunk.\n */\nfunction mapFinishChunks(\n choice: ChatCompletionChunk.Choice,\n chunk: ChatCompletionChunk,\n currentIndex: number\n): StreamChunk[] {\n const chunks: StreamChunk[] = [];\n\n if (choice.finish_reason !== null) {\n // End current content block\n chunks.push({\n type: 'content_block_stop',\n index: currentIndex,\n });\n\n // Emit message_delta with stop reason\n chunks.push({\n type: 'message_delta',\n delta: { stop_reason: mapStopReason(choice.finish_reason) },\n usage: {\n inputTokens: 0,\n outputTokens: chunk.usage?.completion_tokens ?? 0,\n totalTokens: chunk.usage?.total_tokens ?? 0,\n },\n });\n\n // Emit message_stop\n chunks.push({ type: 'message_stop' });\n }\n\n return chunks;\n}\n\n/**\n * Maps OpenAI stream chunks to our StreamChunk format.\n */\nexport function mapStreamChunk(\n chunk: ChatCompletionChunk,\n currentIndex: number,\n hasStarted: boolean\n): StreamChunk[] {\n const chunks: StreamChunk[] = [];\n const choice = chunk.choices[0];\n\n // Emit message_start on first chunk\n if (!hasStarted) {\n chunks.push({\n type: 'message_start',\n message: { model: chunk.model },\n });\n }\n\n if (choice === undefined) {\n return chunks;\n }\n\n const delta = choice.delta;\n\n // Map content delta\n chunks.push(...mapContentDelta(delta, currentIndex, hasStarted));\n\n // Map tool calls\n chunks.push(...mapToolCallsDelta(delta));\n\n // Map finish reason\n chunks.push(...mapFinishChunks(choice, chunk, currentIndex));\n\n return chunks;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiCO,IAAM,gBAAgB;AAAA,EAC3B,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,eAAe,gBAAgB,WAAW;AAAA,EAC1C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAChB;AAUO,IAAM,uBAA+C;AAAA,EAC1D,mBAAmB,cAAc;AAAA,EACjC,UAAU,cAAc;AAAA,EACxB,eAAe,cAAc;AAAA,EAC7B,eAAe,cAAc;AAAA,EAC7B,iBAAiB,cAAc;AACjC;AAyBO,IAAM,qBAAqB;AAkB3B,SAAS,mBAAmB,UAAiD;AAClF,MAAI,OAAO,aAAa,YAAY,aAAa,MAAM;AACrD,WAAO;AAAA,EACT;AACA,QAAM,KAAK;AACX,SAAO,GAAG,MAAM,MAAM,cAAc,OAAO,GAAG,UAAU,MAAM,YAAY,GAAG,UAAU,MAAM;AAC/F;AAKO,SAAS,eAAe,SAAyB;AACtD,SAAO,qBAAqB,OAAO,KAAK;AAC1C;AAKO,SAAS,qBAAqB,SAA6C;AAChF,QAAM,eAAkC,CAAC,gBAAG,YAAY,gBAAG,WAAW,gBAAG,QAAQ;AAEjF,QAAM,aAAa,eAAe,OAAO;AAGzC,MACE,WAAW,SAAS,QAAQ,KAC5B,WAAW,SAAS,aAAa,KACjC,WAAW,SAAS,SAAS,GAC7B;AACA,iBAAa,KAAK,gBAAG,MAAM;AAAA,EAC7B;AAGA,MAAI,WAAW,SAAS,SAAS,GAAG;AAClC,iBAAa,KAAK,gBAAG,iBAAiB;AAAA,EACxC;AAEA,SAAO;AACT;;;AChIA,OAAO,UAAU,gBAAgB;;;ACe1B,SAAS,cAAc,cAAqD;AACjF,UAAQ,cAAc;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAKO,SAAS,yBAAyB,QAA+C;AACtF,QAAM,SAAyB,CAAC;AAChC,QAAM,UAAU,OAAO;AAGvB,MAAI,QAAQ,YAAY,QAAQ,QAAQ,YAAY,IAAI;AACtD,WAAO,KAAK,EAAE,MAAM,QAAQ,MAAM,QAAQ,QAAQ,CAAC;AAAA,EACrD;AAGA,MAAI,QAAQ,eAAe,UAAa,QAAQ,WAAW,SAAS,GAAG;AACrE,eAAW,YAAY,QAAQ,YAAY;AACzC,UAAI,mBAAmB,QAAQ,GAAG;AAChC,YAAI;AACJ,YAAI;AACF,wBAAc,KAAK,MAAM,SAAS,SAAS,SAAS;AAAA,QACtD,QAAQ;AACN,wBAAc,EAAE,MAAM,SAAS,SAAS,UAAU;AAAA,QACpD;AACA,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,IAAI,SAAS;AAAA,UACb,MAAM,SAAS,SAAS;AAAA,UACxB,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAGA,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,KAAK,EAAE,MAAM,QAAQ,MAAM,GAAG,CAAC;AAAA,EACxC;AAEA,SAAO;AACT;AAKO,SAAS,WAAW,SAA8C;AAEvE,MAAI,QAAQ,SAAS,UAAU;AAC7B,WAAO,iBAAiB,OAAO;AAAA,EACjC;AAGA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,WAAO,eAAe,OAAO;AAAA,EAC/B;AAGA,SAAO,oBAAoB,OAAO;AACpC;AAKA,SAAS,iBAAiB,SAA8C;AACtE,QAAM,UACJ,OAAO,QAAQ,YAAY,WACvB,QAAQ,UACR,QAAQ,QACL,OAAO,CAAC,MAA2C,EAAE,SAAS,MAAM,EACpE,IAAI,CAAC,MAAM,EAAE,IAAI,EACjB,KAAK,IAAI;AAClB,SAAO,EAAE,MAAM,UAAU,QAAQ;AACnC;AAKA,SAAS,eAAe,SAA8C;AACpE,MAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,WAAO,EAAE,MAAM,QAAQ,SAAS,QAAQ,QAAQ;AAAA,EAClD;AAGA,QAAM,cAAc,QAAQ,QAAQ;AAAA,IAClC,CAAC,MACC,EAAE,SAAS;AAAA,EACf;AAEA,MAAI,YAAY,SAAS,GAAG;AAE1B,UAAM,cAAc,YAAY,CAAC;AACjC,QAAI,gBAAgB,QAAW;AAC7B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,cAAc,YAAY;AAAA,QAC1B,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAGA,QAAM,UAAU,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAC7C,QAAI,MAAM,SAAS,QAAQ;AACzB,aAAO,EAAE,MAAM,QAAiB,MAAM,MAAM,KAAK;AAAA,IACnD;AACA,QAAI,MAAM,SAAS,SAAS;AAC1B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,UACT,KAAK,QAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,OAAO,IAAI;AAAA,QAClE;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,MAAM,QAAiB,MAAM,GAAG;AAAA,EAC3C,CAAC;AAED,SAAO,EAAE,MAAM,QAAQ,QAAQ;AACjC;AAKA,SAAS,oBAAoB,SAA8C;AACzE,MAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,WAAO,EAAE,MAAM,aAAa,SAAS,QAAQ,QAAQ;AAAA,EACvD;AAGA,QAAM,WAAW,QAAQ,QAAQ;AAAA,IAC/B,CAAC,MACC,EAAE,SAAS;AAAA,EACf;AAEA,QAAM,cAAc,QAAQ,QACzB,OAAO,CAAC,MAA2C,EAAE,SAAS,MAAM,EACpE,IAAI,CAAC,MAAM,EAAE,IAAI,EACjB,KAAK,EAAE;AAEV,MAAI,SAAS,SAAS,GAAG;AACvB,UAAM,mBAA+C;AAAA,MACnD,MAAM;AAAA,MACN,SAAS,gBAAgB,KAAK,cAAc;AAAA,MAC5C,YAAY,SAAS,IAAI,CAAC,UAAU;AAAA,QAClC,IAAI,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA,UACR,MAAM,KAAK;AAAA,UACX,WAAW,KAAK,UAAU,KAAK,KAAK;AAAA,QACtC;AAAA,MACF,EAAE;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,MAAM,aAAa,SAAS,YAAY;AACnD;AAKO,SAAS,QAAQ,MAA0C;AAChE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,IACnB;AAAA,EACF;AACF;AAKO,SAAS,iBAAiB,UAAsC;AACrE,SAAO;AAAA,IACL,aAAa,SAAS,OAAO,iBAAiB;AAAA,IAC9C,cAAc,SAAS,OAAO,qBAAqB;AAAA,IACnD,aAAa,SAAS,OAAO,gBAAgB;AAAA,EAC/C;AACF;AAKA,SAAS,gBACP,OACA,cACA,YACe;AACf,QAAM,SAAwB,CAAC;AAE/B,MAAI,MAAM,YAAY,UAAa,MAAM,YAAY,QAAQ,MAAM,YAAY,IAAI;AAEjF,QAAI,iBAAiB,KAAK,CAAC,YAAY;AACrC,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cAAc,EAAE,MAAM,QAAQ,MAAM,GAAG;AAAA,MACzC,CAAC;AAAA,IACH;AAEA,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,EAAE,MAAM,cAAc,MAAM,MAAM,QAAQ;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAKA,SAAS,kBAAkB,OAAoE;AAC7F,QAAM,SAAwB,CAAC;AAE/B,MAAI,MAAM,eAAe,UAAa,MAAM,WAAW,SAAS,GAAG;AACjE,eAAW,YAAY,MAAM,YAAY;AACvC,UAAI,SAAS,UAAU,SAAS,QAAW;AACzC,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,OAAO,SAAS;AAAA,UAChB,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,IAAI,SAAS,MAAM;AAAA,YACnB,MAAM,SAAS,SAAS;AAAA,YACxB,OAAO,CAAC;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAKA,SAAS,gBACP,QACA,OACA,cACe;AACf,QAAM,SAAwB,CAAC;AAE/B,MAAI,OAAO,kBAAkB,MAAM;AAEjC,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAGD,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,OAAO,EAAE,aAAa,cAAc,OAAO,aAAa,EAAE;AAAA,MAC1D,OAAO;AAAA,QACL,aAAa;AAAA,QACb,cAAc,MAAM,OAAO,qBAAqB;AAAA,QAChD,aAAa,MAAM,OAAO,gBAAgB;AAAA,MAC5C;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AAAA,EACtC;AAEA,SAAO;AACT;AAKO,SAAS,eACd,OACA,cACA,YACe;AACf,QAAM,SAAwB,CAAC;AAC/B,QAAM,SAAS,MAAM,QAAQ,CAAC;AAG9B,MAAI,CAAC,YAAY;AACf,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS,EAAE,OAAO,MAAM,MAAM;AAAA,IAChC,CAAC;AAAA,EACH;AAEA,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,OAAO;AAGrB,SAAO,KAAK,GAAG,gBAAgB,OAAO,cAAc,UAAU,CAAC;AAG/D,SAAO,KAAK,GAAG,kBAAkB,KAAK,CAAC;AAGvC,SAAO,KAAK,GAAG,gBAAgB,QAAQ,OAAO,YAAY,CAAC;AAE3D,SAAO;AACT;;;AD9PA,SAAS,MAAM,KAAa,KAAiD;AAC3E,SAAO,QAAQ,QAAQ,QAAQ,UAAa,QAAQ,KAAK,KAAK,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC;AACrF;AAEA,SAAS,uBAAuB,GAAyB;AACvD,QAAM,OAAO;AAAA,IACX,QAAQ,OAAO,EAAE,UAAU,SAAS,CAAC;AAAA,IACrC,MAAM,QAAQ,EAAE,IAAI;AAAA,IACpB,MAAM,QAAQ,EAAE,IAAI;AAAA,IACpB,MAAM,SAAS,EAAE,KAAK;AAAA,IACtB,MAAM,cAAc,EAAE,SAAS;AAAA,EACjC,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE;AACxB,MAAI,OAAO;AACX,MAAI,EAAE,UAAU,UAAa,EAAE,UAAU,MAAM;AAC7C,QAAI;AACF,YAAM,MAAM,KAAK,UAAU,EAAE,KAAK;AAClC,aAAO,SAAS,IAAI,SAAS,uBAAuB,GAAG,IAAI,MAAM,GAAG,oBAAoB,CAAC,WAAM,GAAG;AAAA,IACpG,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,GAAG,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;AACrD;AAGA,IAAM,uBAAuB;AAEtB,IAAM,gBAAN,cAA4B,YAAY;AAAA,EAC5B;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjB,YAAY,QAA6B;AACvC,UAAM,kBAAkB,eAAe,OAAO,OAAO;AAGrD,UAAM,aAAgC;AAAA,MACpC,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,cAAc,qBAAqB,OAAO,OAAO;AAAA,MACjD,QAAQ,OAAO;AAAA,IACjB;AAGA,QAAI,OAAO,YAAY,QAAW;AAChC,iBAAW,UAAU,OAAO;AAAA,IAC9B;AACA,QAAI,OAAO,YAAY,QAAW;AAChC,iBAAW,UAAU,OAAO;AAAA,IAC9B;AACA,QAAI,OAAO,eAAe,QAAW;AACnC,iBAAW,aAAa,OAAO;AAAA,IACjC;AAEA,UAAM,UAAU;AAEhB,SAAK,kBAAkB;AAGvB,kBAAc,OAAO,QAAQ,UAAU,OAAO,OAAO;AAErD,SAAK,SAAS,KAAK,aAAa,MAAM;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKQ,aAAa,QAAqC;AACxD,UAAM,gBAAyD;AAAA,MAC7D,QAAQ,OAAO;AAAA,MACf,YAAY,OAAO,cAAc;AAAA,IACnC;AAEA,QAAI,OAAO,YAAY,QAAW;AAChC,oBAAc,UAAU,OAAO;AAAA,IACjC;AACA,QAAI,OAAO,YAAY,QAAW;AAChC,oBAAc,UAAU,OAAO;AAAA,IACjC;AACA,QAAI,OAAO,iBAAiB,QAAW;AACrC,oBAAc,eAAe,OAAO;AAAA,IACtC;AAEA,WAAO,IAAI,OAAO,aAAa;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMS,iBAA4C;AACnD,UAAM,aAAa,MAAM,eAAe;AACxC,QAAI,CAAC,WAAW,IAAI;AAClB,aAAO;AAAA,IACT;AAGA,UAAM,YAAY,uBAAuB,KAAK,OAAO,QAAQ,KAAK,YAAY,KAAK,OAAO;AAC1F,QAAI,CAAC,UAAU,GAAI,QAAO;AAE1B,WAAO,GAAG,MAAS;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,SAAS,SAA6E;AAC1F,SAAK,WAAW,OAAO;AAEvB,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,kBAAkB,OAAO;AACrD,WAAK,YAAY,QAAQ;AACzB,aAAO,GAAG,QAAQ;AAAA,IACpB,SAAS,OAAO;AACd,aAAO,IAAI,KAAK,eAAe,KAAK,CAAC;AAAA,IACvC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcmB,eAAe,OAA4B;AAC5D,QAAI,iBAAiB,UAAU;AAC7B,YAAM,IAAI;AAEV,YAAM,QACJ,IAAI,MAAM,OAAO,EAAE,YAAY,WAAW,EAAE,UAAU,EAAE;AAC1D,YAAM,SAAS,OAAO,EAAE,WAAW,WAAW,EAAE,SAAS;AACzD,YAAM,OAAO,EAAE,QAAQ;AACvB,YAAM,QAAQ;AACd,YAAM,aAAa,MAAM,eAAe,KAAK;AAE7C,iBAAW,UAAU,GAAG,KAAK,UAAU,IAAI,KAAK,OAAO,KAAK,uBAAuB,CAAC,CAAC;AACrF,aAAO;AAAA,IACT;AACA,WAAO,MAAM,eAAe,KAAK;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,OAAO,SAAwD;AACpE,SAAK,WAAW,OAAO;AAEvB,UAAM,CAAC,YAAY,QAAQ,IAAI,aAA0B;AAGzD,SAAK,cAAc,SAAS,UAAU,EAAE,MAAM,CAAC,UAAmB;AAChE,YAAM,aAAa,KAAK,eAAe,KAAK;AAC5C,iBAAW,MAAM,UAAU;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQS,YAAY,MAA+B;AAElD,WAAO,QAAQ,QAAQ,kBAAkB,EAAE,aAAa,MAAM,QAAQ,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAkB,SAAyD;AACvF,UAAM,SAAS,KAAK,mBAAmB,OAAO;AAM9C,UAAM,WACJ,QAAQ,WAAW,SACf,MAAM,KAAK,OAAO,KAAK,YAAY,OAAO,QAAQ,EAAE,QAAQ,QAAQ,OAAO,CAAC,IAC5E,MAAM,KAAK,OAAO,KAAK,YAAY,OAAO,MAAM;AACtD,WAAO,KAAK,YAAY,QAAQ;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,cACZ,SACA,YAKe;AACf,QAAI;AACF,YAAM,SAAS,KAAK,mBAAmB,OAAO;AAC9C,YAAM,SAAS,MAAM,KAAK,OAAO,KAAK,YAAY,OAAO,EAAE,GAAG,QAAQ,QAAQ,KAAK,CAAC;AAEpF,UAAI,eAAe;AACnB,UAAI,aAAa;AAEjB,uBAAiB,SAAS,QAAQ;AAChC,cAAM,eAAe,eAAe,OAAO,cAAc,UAAU;AAEnE,mBAAW,eAAe,cAAc;AACtC,cAAI,YAAY,SAAS,iBAAiB;AACxC,yBAAa;AAAA,UACf;AACA,cAAI,YAAY,SAAS,uBAAuB;AAC9C;AAAA,UACF;AACA,qBAAW,KAAK,WAAW;AAAA,QAC7B;AAAA,MACF;AAEA,iBAAW,SAAS;AAAA,IACtB,SAAS,OAAO;AACd,YAAM,aAAa,KAAK,eAAe,KAAK;AAC5C,iBAAW,MAAM,UAAU;AAAA,IAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,mBACN,SACoD;AACpD,UAAM,WAAW,KAAK,cAAc,OAAO;AAE3C,UAAM,SAA6D;AAAA,MACjE,OAAO,KAAK;AAAA,MACZ;AAAA,MACA,uBAAuB,QAAQ,aAAa;AAAA,IAC9C;AAEA,SAAK,kBAAkB,QAAQ,OAAO;AACtC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc,SAA0D;AAC9E,UAAM,WAAyC,CAAC;AAGhD,QAAI,QAAQ,iBAAiB,UAAa,QAAQ,iBAAiB,IAAI;AACrE,eAAS,KAAK,EAAE,MAAM,UAAU,SAAS,QAAQ,aAAa,CAAC;AAAA,IACjE;AAGA,eAAW,OAAO,QAAQ,UAAU;AAClC,UAAI,IAAI,SAAS,YAAY,QAAQ,iBAAiB,QAAW;AAC/D;AAAA,MACF;AACA,eAAS,KAAK,WAAW,GAAG,CAAC;AAAA,IAC/B;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,kBACN,QACA,SACM;AAON,QAAI,QAAQ,gBAAgB,QAAW;AACrC,UAAI,+BAA+B,KAAK,eAAe,GAAG;AACxD,+BAAuB,KAAK,eAAe;AAAA,MAC7C,OAAO;AACL,eAAO,cAAc,QAAQ;AAAA,MAC/B;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,UAAa,QAAQ,KAAK,SAAS,GAAG;AACzD,aAAO,OAAO,QAAQ;AAAA,IACxB;AAEA,QAAI,QAAQ,UAAU,UAAa,QAAQ,MAAM,SAAS,GAAG;AAC3D,aAAO,QAAQ,QAAQ,MAAM,IAAI,OAAO;AAAA,IAC1C;AAEA,SAAK,kBAAkB,QAAQ,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKQ,kBACN,QACA,SACM;AACN,QAAI,QAAQ,mBAAmB,QAAW;AACxC;AAAA,IACF;AAEA,QAAI,QAAQ,eAAe,SAAS,eAAe;AACjD,aAAO,kBAAkB,EAAE,MAAM,cAAc;AAAA,IACjD,WAAW,QAAQ,eAAe,SAAS,eAAe;AACxD,aAAO,kBAAkB;AAAA,QACvB,MAAM;AAAA,QACN,aAAa;AAAA,UACX,MAAM;AAAA,UACN,QAAQ,QAAQ,eAAe;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,YAAY,UAA8C;AAChE,UAAM,cAAc,SAAS,QAAQ,CAAC;AAGtC,QAAI,gBAAgB,QAAW;AAC7B,aAAO,KAAK,oBAAoB,QAAQ;AAAA,IAC1C;AAEA,UAAM,UAAU,yBAAyB,WAAW;AACpD,UAAM,QAAoB,iBAAiB,QAAQ;AAEnD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,cAAc,YAAY,aAAa;AAAA,MACnD,OAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB,UAA8C;AACxE,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,GAAG,CAAC;AAAA,MACpC,OAAO,iBAAiB,QAAQ;AAAA,MAChC,YAAY;AAAA,MACZ,OAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,aAAgD;AACpD,UAAM,MAAM,KAAK,IAAI;AACrB,QAAI,KAAK,gBAAgB,QAAQ,MAAM,KAAK,YAAY,YAAY,oBAAoB;AACtF,aAAO,KAAK,YAAY;AAAA,IAC1B;AACA,QAAI,KAAK,mBAAmB,MAAM;AAChC,aAAO,KAAK;AAAA,IACd;AACA,UAAM,WAAW,KAAK,YAAY;AAClC,SAAK,iBAAiB;AACtB,QAAI;AACF,YAAM,QAAQ,MAAM;AACpB,WAAK,cAAc,EAAE,OAAO,WAAW,KAAK,IAAI,EAAE;AAClD,aAAO;AAAA,IACT,UAAE;AACA,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,cAA6E;AAAA,EAC7E,iBAA2D;AAAA,EAEnE,MAAc,cAAiD;AAC7D,UAAM,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK;AAC3C,WAAO,KAAK,KAAK,IAAI,CAAC,MAAqB;AACzC,YAAM,OAAsB,EAAE,IAAI,EAAE,GAAG;AACvC,UAAI,OAAO,EAAE,aAAa,UAAU;AAClC,eAAO,EAAE,GAAG,MAAM,SAAS,EAAE,UAAU,WAAW,EAAE,QAAQ;AAAA,MAC9D;AACA,UAAI,OAAO,EAAE,YAAY,UAAU;AACjC,eAAO,EAAE,GAAG,MAAM,WAAW,EAAE,QAAQ;AAAA,MACzC;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAEA,IAAM,qBAAqB,IAAI,KAAK;AAiB7B,SAAS,oBAAoB,QAA4C;AAC9E,SAAO,IAAI,cAAc,MAAM;AACjC;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  loadPapersRegistry
3
- } from "./chunk-FXCK7OGY.js";
3
+ } from "./chunk-OJNGOC6V.js";
4
4
  import {
5
5
  getErrorMessage
6
- } from "./chunk-5R7SHZFF.js";
6
+ } from "./chunk-Q4UU2W6L.js";
7
7
 
8
8
  // src/cli/research-helpers-synthesize.ts
9
9
  import { z } from "zod";
@@ -876,4 +876,4 @@ export {
876
876
  AttributedInsightSchema,
877
877
  synthesizeResearch
878
878
  };
879
- //# sourceMappingURL=chunk-XRLF55YJ.js.map
879
+ //# sourceMappingURL=chunk-SCPAYR65.js.map
@@ -2,14 +2,14 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-UQWMRV32.js";
5
+ } from "./chunk-42IWBFSQ.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getFallbackChainForCategory,
10
10
  getTimeProvider,
11
11
  ok
12
- } from "./chunk-5R7SHZFF.js";
12
+ } from "./chunk-Q4UU2W6L.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-RZGDXXZN.js.map
155
+ //# sourceMappingURL=chunk-SOCIRTAC.js.map
@@ -4,7 +4,7 @@ import {
4
4
  err,
5
5
  getErrorMessage,
6
6
  ok
7
- } from "./chunk-5R7SHZFF.js";
7
+ } from "./chunk-Q4UU2W6L.js";
8
8
 
9
9
  // src/scm/types.ts
10
10
  var ScmError = class extends Error {
@@ -263,4 +263,4 @@ export {
263
263
  ScmError,
264
264
  GitHubProvider
265
265
  };
266
- //# sourceMappingURL=chunk-UJQVBV55.js.map
266
+ //# sourceMappingURL=chunk-SUGO2OSD.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-5R7SHZFF.js";
5
+ } from "./chunk-Q4UU2W6L.js";
6
6
 
7
7
  // src/cli/doctor-deep.ts
8
8
  var CLI_NAMES = ["claude", "gemini", "codex", "opencode"];
@@ -106,4 +106,4 @@ export {
106
106
  runDeepDiagnostics,
107
107
  formatDeepDiagnostics
108
108
  };
109
- //# sourceMappingURL=chunk-2M5UOHC7.js.map
109
+ //# sourceMappingURL=chunk-UUEK5FP6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  computeCostUSD
3
- } from "./chunk-MCXEO4GD.js";
3
+ } from "./chunk-Y7Z7H66M.js";
4
4
  import {
5
5
  DEFAULT_CONSENSUS_CONFIG,
6
6
  DEFAULT_INCREMENTAL_QUORUM_CONFIG,
@@ -18,20 +18,20 @@ import {
18
18
  toolSuccess,
19
19
  withProgressHeartbeat,
20
20
  wrapToolWithTimeout
21
- } from "./chunk-GKRUQ5SP.js";
21
+ } from "./chunk-J2KMYVWA.js";
22
22
  import {
23
23
  getToolMemory
24
- } from "./chunk-VRDLTARY.js";
24
+ } from "./chunk-R4YCNXN2.js";
25
25
  import {
26
26
  createEvent,
27
27
  getGlobalRegistry
28
- } from "./chunk-TQ7AL32B.js";
28
+ } from "./chunk-EX3TD7DG.js";
29
29
  import {
30
30
  authRemediation,
31
31
  delay,
32
32
  getAvailableClis,
33
33
  withTimeout
34
- } from "./chunk-H5JKSEWN.js";
34
+ } from "./chunk-FNGKM5PL.js";
35
35
  import {
36
36
  AgentError,
37
37
  CLI_NAMES,
@@ -59,7 +59,7 @@ import {
59
59
  registerPersistentOutcomeStoreFactory,
60
60
  resolveClassGuardMs,
61
61
  resolveVoteTimeout
62
- } from "./chunk-5R7SHZFF.js";
62
+ } from "./chunk-Q4UU2W6L.js";
63
63
  import {
64
64
  ensureLearningDir,
65
65
  getOutcomesFile
@@ -5655,7 +5655,7 @@ async function processVotesWithCascade(engineVotes, opts) {
5655
5655
  var CONTRARIAN_ESCALATION_THRESHOLD = 0.8;
5656
5656
  async function runContrarianCheck(proposal, log) {
5657
5657
  try {
5658
- const { executeExpert } = await import("./expert-bridge-UUPXRZPT.js");
5658
+ const { executeExpert } = await import("./expert-bridge-Y5NH22W2.js");
5659
5659
  const prompt = [
5660
5660
  "You are a contrarian analyst. Your job is to find reasons this proposal should be REJECTED.",
5661
5661
  "Look for: YAGNI (not needed), MISALIGNED (wrong tech/architecture), SECURITY_RISK, SCOPE_CREEP.",
@@ -6134,4 +6134,4 @@ export {
6134
6134
  CONSENSUS_VOTE_OUTPUT_SCHEMA,
6135
6135
  registerConsensusVoteTool
6136
6136
  };
6137
- //# sourceMappingURL=chunk-HCCLNL3P.js.map
6137
+ //# sourceMappingURL=chunk-V2GQUJ3X.js.map
@@ -15,7 +15,7 @@ import {
15
15
  createLogger,
16
16
  err,
17
17
  ok
18
- } from "./chunk-5R7SHZFF.js";
18
+ } from "./chunk-Q4UU2W6L.js";
19
19
 
20
20
  // src/adapters/sdk/types.ts
21
21
  var PROVIDER_ENV_KEYS = {
@@ -396,4 +396,4 @@ export {
396
396
  CUSTOM_API_DEFAULT_MODEL,
397
397
  DEFAULTS
398
398
  };
399
- //# sourceMappingURL=chunk-H7D5N2MR.js.map
399
+ //# sourceMappingURL=chunk-WCAQ3T6H.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  lookupInTreeCapability
3
- } from "./chunk-5R7SHZFF.js";
3
+ } from "./chunk-Q4UU2W6L.js";
4
4
  import {
5
5
  getNexusDataDir
6
6
  } from "./chunk-DHVMSIT5.js";
@@ -123,4 +123,4 @@ export {
123
123
  loadUsageEvents,
124
124
  rollupByModel
125
125
  };
126
- //# sourceMappingURL=chunk-MCXEO4GD.js.map
126
+ //# sourceMappingURL=chunk-Y7Z7H66M.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  resolveCliSlot
3
- } from "./chunk-3IMOTUTL.js";
3
+ } from "./chunk-F2TQNJ2O.js";
4
4
  import {
5
5
  createLogger,
6
6
  getTimeProvider,
7
7
  isRateLimitText
8
- } from "./chunk-5R7SHZFF.js";
8
+ } from "./chunk-Q4UU2W6L.js";
9
9
 
10
10
  // src/pipeline/expert-bridge.ts
11
11
  function resolveCliFromModelString(model) {
@@ -21,7 +21,7 @@ async function getMcpConfigPath() {
21
21
  if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
22
22
  mcpConfigInitPromise ??= (async () => {
23
23
  try {
24
- const { generateMcpConfig } = await import("./child-mcp-config-HSSPERWQ.js");
24
+ const { generateMcpConfig } = await import("./child-mcp-config-MF3VQ3EU.js");
25
25
  const config = await generateMcpConfig();
26
26
  cachedMcpConfigPath = config.configPath;
27
27
  cachedMcpConfigCleanup = config.cleanup;
@@ -93,8 +93,8 @@ var routerInitPromise = null;
93
93
  async function getRouter() {
94
94
  if (cachedRouter !== null) return cachedRouter;
95
95
  routerInitPromise ??= (async () => {
96
- const { createAllAdapters } = await import("./factory-QXYXDYBO.js");
97
- const { createCompositeRouter } = await import("./composite-router-42BBSYGE.js");
96
+ const { createAllAdapters } = await import("./factory-75OMPTCR.js");
97
+ const { createCompositeRouter } = await import("./composite-router-6EPXTZVL.js");
98
98
  const adapters = createAllAdapters();
99
99
  if (adapters.size === 0) {
100
100
  routerInitPromise = null;
@@ -102,7 +102,7 @@ async function getRouter() {
102
102
  }
103
103
  cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
104
104
  try {
105
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-J6PUMDH7.js");
105
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-MK5PJIKO.js");
106
106
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
107
107
  } catch (error) {
108
108
  const msg = error instanceof Error ? error.message : String(error);
@@ -213,4 +213,4 @@ export {
213
213
  tokenSplitFromUsage,
214
214
  executeExpert
215
215
  };
216
- //# sourceMappingURL=chunk-X43AQNAA.js.map
216
+ //# sourceMappingURL=chunk-YJROHCFY.js.map