nexus-agents 8.52.0 → 8.52.2

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 (134) hide show
  1. package/dist/{ast-rule-runner-OMARWHWE.js → ast-rule-runner-PELERN3O.js} +3 -3
  2. package/dist/{child-mcp-config-TTPPGI47.js → child-mcp-config-RYQSABJT.js} +2 -2
  3. package/dist/{chunk-DEVIH4AT.js → chunk-2WCWSJES.js} +5 -5
  4. package/dist/{chunk-XC6CDASQ.js → chunk-33RHZITC.js} +2 -2
  5. package/dist/{chunk-PT36V4VS.js → chunk-3JFRPAYE.js} +4 -4
  6. package/dist/{chunk-MGQROE5U.js → chunk-3PLSFD3D.js} +2 -2
  7. package/dist/{chunk-ZXRSBMNL.js → chunk-54YTICHC.js} +2 -2
  8. package/dist/{chunk-F5JVNA4I.js → chunk-5EEP73OA.js} +2 -2
  9. package/dist/{chunk-FTDEM664.js → chunk-6WLN4WLY.js} +3 -3
  10. package/dist/{chunk-RVWAMRVN.js → chunk-CTLBZ33K.js} +5 -5
  11. package/dist/{chunk-36CV7CCD.js → chunk-ECVWK52H.js} +2 -2
  12. package/dist/{chunk-5DYRHSCE.js → chunk-ELBJDCC7.js} +2 -2
  13. package/dist/{chunk-DSAY7HRZ.js → chunk-GE4KNPPO.js} +2 -2
  14. package/dist/{chunk-36MBJVGG.js → chunk-J45ABSJ6.js} +2 -2
  15. package/dist/{chunk-ITF2RPEP.js → chunk-JIUX35FD.js} +3 -3
  16. package/dist/{chunk-M2327EET.js → chunk-LJMPYBT5.js} +9 -9
  17. package/dist/{chunk-HJQSY4XL.js → chunk-N6NHQWQR.js} +2 -2
  18. package/dist/{chunk-QD3T5DUB.js → chunk-NBQ457TC.js} +6 -6
  19. package/dist/{chunk-DR2ZJHCO.js → chunk-NFKNTZYT.js} +4 -4
  20. package/dist/{chunk-JHHSNZDT.js → chunk-NGXHFMA6.js} +9 -4
  21. package/dist/chunk-NGXHFMA6.js.map +1 -0
  22. package/dist/{chunk-CIHUGM4T.js → chunk-QU37LE3Y.js} +74 -12
  23. package/dist/chunk-QU37LE3Y.js.map +1 -0
  24. package/dist/{chunk-Q35UI2VQ.js → chunk-R4ITN2N2.js} +4 -4
  25. package/dist/{chunk-SA7P7PYY.js → chunk-RWK5XSUL.js} +36 -36
  26. package/dist/{chunk-R2Z4HK4B.js → chunk-SKUIP3ER.js} +2 -2
  27. package/dist/{chunk-6IBZN5NI.js → chunk-THEK5N2A.js} +2 -2
  28. package/dist/{chunk-BZUFLIVF.js → chunk-THPZO2XW.js} +4 -4
  29. package/dist/{chunk-4PWPBNDP.js → chunk-TS4GGKYN.js} +2 -2
  30. package/dist/{chunk-ELRBAHJ7.js → chunk-USHZGWDJ.js} +105 -21
  31. package/dist/chunk-USHZGWDJ.js.map +1 -0
  32. package/dist/{chunk-Q64M3PDU.js → chunk-WAVAOSH5.js} +7 -7
  33. package/dist/{chunk-E4VUJZGC.js → chunk-WWZKWC2Z.js} +3 -3
  34. package/dist/{chunk-PVGI2ZFN.js → chunk-X5IOLM33.js} +2 -2
  35. package/dist/{chunk-D3YWV3NR.js → chunk-X5R6QOF2.js} +2 -2
  36. package/dist/{doctor-live-KGKB7XIZ.js → chunk-XBSPEJ23.js} +6 -73
  37. package/dist/chunk-XBSPEJ23.js.map +1 -0
  38. package/dist/{chunk-YEM7GMVB.js → chunk-XM5MYAMC.js} +2 -2
  39. package/dist/{chunk-D7CLVTZM.js → chunk-XMMRINZK.js} +2 -2
  40. package/dist/{chunk-SNQF2GZA.js → chunk-XYK2GPUF.js} +2 -2
  41. package/dist/{chunk-VCSFP3ZN.js → chunk-YKCVPCLR.js} +2 -2
  42. package/dist/{cli-circuit-breaker-54PR2WI3.js → cli-circuit-breaker-D7NZ7YF3.js} +3 -3
  43. package/dist/cli.js +56 -53
  44. package/dist/cli.js.map +1 -1
  45. package/dist/{composite-router-UOSLHVQC.js → composite-router-JRFBB5YP.js} +2 -2
  46. package/dist/{consensus-vote-NBU47KVJ.js → consensus-vote-G2EQDVSI.js} +17 -17
  47. package/dist/{context-retriever-XOEH7NZY.js → context-retriever-BIAAVT6X.js} +8 -8
  48. package/dist/{doctor-deep-XXYYPYEJ.js → doctor-deep-PLJHEYWB.js} +3 -3
  49. package/dist/doctor-live-JTSQWZ2L.js +81 -0
  50. package/dist/doctor-live-JTSQWZ2L.js.map +1 -0
  51. package/dist/{expert-bridge-NWVCSOA5.js → expert-bridge-VLEDZGPA.js} +4 -4
  52. package/dist/{factory-QZJFG56H.js → factory-EUZWJNFU.js} +9 -9
  53. package/dist/{factory-3FLN5V36.js → factory-KBUTXBHE.js} +5 -5
  54. package/dist/{improvement-review-HAK57UYN.js → improvement-review-JXP4EZ5W.js} +6 -6
  55. package/dist/index.d.ts +46 -0
  56. package/dist/index.js +32 -31
  57. package/dist/index.js.map +1 -1
  58. package/dist/{init-opencode-3MF5EUFL.js → init-opencode-WMDH2ZUK.js} +6 -6
  59. package/dist/issue-triage-UNLRUO2O.js +17 -0
  60. package/dist/{pr-reviewer-helpers-KKLUERS5.js → pr-reviewer-helpers-JWJ4HVPW.js} +4 -4
  61. package/dist/{registry-command-4AYYYOFG.js → registry-command-IFZYXY5Y.js} +2 -2
  62. package/dist/{repo-security-plan-QO42XEJO.js → repo-security-plan-JKXJSVP2.js} +3 -3
  63. package/dist/{research-helpers-synthesize-CMFUU7VH.js → research-helpers-synthesize-QI2V4GS6.js} +4 -4
  64. package/dist/{routing-memory-D5ZSNOED.js → routing-memory-EFMYS572.js} +2 -2
  65. package/dist/{session-memory-2YVYSK2C.js → session-memory-XO5T3PJD.js} +3 -3
  66. package/dist/{setup-config-EKZMJ4WQ.js → setup-config-JRFZ5LM3.js} +3 -3
  67. package/dist/{setup-custom-api-626A7IJN.js → setup-custom-api-FH2EM46D.js} +4 -4
  68. package/dist/setup-data-dir-4APUYXVF.js +31 -0
  69. package/dist/{tool-memory-DVKDX4VO.js → tool-memory-JHJKFFIX.js} +5 -5
  70. package/dist/{unified-registry-FGBELPLI.js → unified-registry-DPL6V77X.js} +10 -10
  71. package/dist/{weather-report-D7QCLP6S.js → weather-report-CAHU2PCR.js} +2 -2
  72. package/package.json +1 -1
  73. package/dist/chunk-CIHUGM4T.js.map +0 -1
  74. package/dist/chunk-ELRBAHJ7.js.map +0 -1
  75. package/dist/chunk-JHHSNZDT.js.map +0 -1
  76. package/dist/doctor-live-KGKB7XIZ.js.map +0 -1
  77. package/dist/issue-triage-JK5VG6EE.js +0 -17
  78. package/dist/setup-data-dir-A7EY6JOZ.js +0 -30
  79. /package/dist/{ast-rule-runner-OMARWHWE.js.map → ast-rule-runner-PELERN3O.js.map} +0 -0
  80. /package/dist/{child-mcp-config-TTPPGI47.js.map → child-mcp-config-RYQSABJT.js.map} +0 -0
  81. /package/dist/{chunk-DEVIH4AT.js.map → chunk-2WCWSJES.js.map} +0 -0
  82. /package/dist/{chunk-XC6CDASQ.js.map → chunk-33RHZITC.js.map} +0 -0
  83. /package/dist/{chunk-PT36V4VS.js.map → chunk-3JFRPAYE.js.map} +0 -0
  84. /package/dist/{chunk-MGQROE5U.js.map → chunk-3PLSFD3D.js.map} +0 -0
  85. /package/dist/{chunk-ZXRSBMNL.js.map → chunk-54YTICHC.js.map} +0 -0
  86. /package/dist/{chunk-F5JVNA4I.js.map → chunk-5EEP73OA.js.map} +0 -0
  87. /package/dist/{chunk-FTDEM664.js.map → chunk-6WLN4WLY.js.map} +0 -0
  88. /package/dist/{chunk-RVWAMRVN.js.map → chunk-CTLBZ33K.js.map} +0 -0
  89. /package/dist/{chunk-36CV7CCD.js.map → chunk-ECVWK52H.js.map} +0 -0
  90. /package/dist/{chunk-5DYRHSCE.js.map → chunk-ELBJDCC7.js.map} +0 -0
  91. /package/dist/{chunk-DSAY7HRZ.js.map → chunk-GE4KNPPO.js.map} +0 -0
  92. /package/dist/{chunk-36MBJVGG.js.map → chunk-J45ABSJ6.js.map} +0 -0
  93. /package/dist/{chunk-ITF2RPEP.js.map → chunk-JIUX35FD.js.map} +0 -0
  94. /package/dist/{chunk-M2327EET.js.map → chunk-LJMPYBT5.js.map} +0 -0
  95. /package/dist/{chunk-HJQSY4XL.js.map → chunk-N6NHQWQR.js.map} +0 -0
  96. /package/dist/{chunk-QD3T5DUB.js.map → chunk-NBQ457TC.js.map} +0 -0
  97. /package/dist/{chunk-DR2ZJHCO.js.map → chunk-NFKNTZYT.js.map} +0 -0
  98. /package/dist/{chunk-Q35UI2VQ.js.map → chunk-R4ITN2N2.js.map} +0 -0
  99. /package/dist/{chunk-SA7P7PYY.js.map → chunk-RWK5XSUL.js.map} +0 -0
  100. /package/dist/{chunk-R2Z4HK4B.js.map → chunk-SKUIP3ER.js.map} +0 -0
  101. /package/dist/{chunk-6IBZN5NI.js.map → chunk-THEK5N2A.js.map} +0 -0
  102. /package/dist/{chunk-BZUFLIVF.js.map → chunk-THPZO2XW.js.map} +0 -0
  103. /package/dist/{chunk-4PWPBNDP.js.map → chunk-TS4GGKYN.js.map} +0 -0
  104. /package/dist/{chunk-Q64M3PDU.js.map → chunk-WAVAOSH5.js.map} +0 -0
  105. /package/dist/{chunk-E4VUJZGC.js.map → chunk-WWZKWC2Z.js.map} +0 -0
  106. /package/dist/{chunk-PVGI2ZFN.js.map → chunk-X5IOLM33.js.map} +0 -0
  107. /package/dist/{chunk-D3YWV3NR.js.map → chunk-X5R6QOF2.js.map} +0 -0
  108. /package/dist/{chunk-YEM7GMVB.js.map → chunk-XM5MYAMC.js.map} +0 -0
  109. /package/dist/{chunk-D7CLVTZM.js.map → chunk-XMMRINZK.js.map} +0 -0
  110. /package/dist/{chunk-SNQF2GZA.js.map → chunk-XYK2GPUF.js.map} +0 -0
  111. /package/dist/{chunk-VCSFP3ZN.js.map → chunk-YKCVPCLR.js.map} +0 -0
  112. /package/dist/{cli-circuit-breaker-54PR2WI3.js.map → cli-circuit-breaker-D7NZ7YF3.js.map} +0 -0
  113. /package/dist/{composite-router-UOSLHVQC.js.map → composite-router-JRFBB5YP.js.map} +0 -0
  114. /package/dist/{consensus-vote-NBU47KVJ.js.map → consensus-vote-G2EQDVSI.js.map} +0 -0
  115. /package/dist/{context-retriever-XOEH7NZY.js.map → context-retriever-BIAAVT6X.js.map} +0 -0
  116. /package/dist/{doctor-deep-XXYYPYEJ.js.map → doctor-deep-PLJHEYWB.js.map} +0 -0
  117. /package/dist/{expert-bridge-NWVCSOA5.js.map → expert-bridge-VLEDZGPA.js.map} +0 -0
  118. /package/dist/{factory-3FLN5V36.js.map → factory-EUZWJNFU.js.map} +0 -0
  119. /package/dist/{factory-QZJFG56H.js.map → factory-KBUTXBHE.js.map} +0 -0
  120. /package/dist/{improvement-review-HAK57UYN.js.map → improvement-review-JXP4EZ5W.js.map} +0 -0
  121. /package/dist/{init-opencode-3MF5EUFL.js.map → init-opencode-WMDH2ZUK.js.map} +0 -0
  122. /package/dist/{issue-triage-JK5VG6EE.js.map → issue-triage-UNLRUO2O.js.map} +0 -0
  123. /package/dist/{pr-reviewer-helpers-KKLUERS5.js.map → pr-reviewer-helpers-JWJ4HVPW.js.map} +0 -0
  124. /package/dist/{registry-command-4AYYYOFG.js.map → registry-command-IFZYXY5Y.js.map} +0 -0
  125. /package/dist/{repo-security-plan-QO42XEJO.js.map → repo-security-plan-JKXJSVP2.js.map} +0 -0
  126. /package/dist/{research-helpers-synthesize-CMFUU7VH.js.map → research-helpers-synthesize-QI2V4GS6.js.map} +0 -0
  127. /package/dist/{routing-memory-D5ZSNOED.js.map → routing-memory-EFMYS572.js.map} +0 -0
  128. /package/dist/{session-memory-2YVYSK2C.js.map → session-memory-XO5T3PJD.js.map} +0 -0
  129. /package/dist/{setup-config-EKZMJ4WQ.js.map → setup-config-JRFZ5LM3.js.map} +0 -0
  130. /package/dist/{setup-custom-api-626A7IJN.js.map → setup-custom-api-FH2EM46D.js.map} +0 -0
  131. /package/dist/{setup-data-dir-A7EY6JOZ.js.map → setup-data-dir-4APUYXVF.js.map} +0 -0
  132. /package/dist/{tool-memory-DVKDX4VO.js.map → tool-memory-JHJKFFIX.js.map} +0 -0
  133. /package/dist/{unified-registry-FGBELPLI.js.map → unified-registry-DPL6V77X.js.map} +0 -0
  134. /package/dist/{weather-report-D7QCLP6S.js.map → weather-report-CAHU2PCR.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-YEM7GMVB.js";
3
+ } from "./chunk-XM5MYAMC.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-4GDMHCKX.js";
@@ -21,10 +21,10 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-CIHUGM4T.js";
24
+ } from "./chunk-QU37LE3Y.js";
25
25
  import {
26
26
  executeExpert
27
- } from "./chunk-Q64M3PDU.js";
27
+ } from "./chunk-WAVAOSH5.js";
28
28
  import {
29
29
  JobStatusSchema,
30
30
  VOTER_ROLES,
@@ -58,7 +58,7 @@ import {
58
58
  toJobSummary,
59
59
  updateStage,
60
60
  writeJobCancelled
61
- } from "./chunk-M2327EET.js";
61
+ } from "./chunk-LJMPYBT5.js";
62
62
  import {
63
63
  allOf,
64
64
  anyOf
@@ -66,19 +66,19 @@ import {
66
66
  import {
67
67
  normalizeTopicToCanonical,
68
68
  synthesizeResearch
69
- } from "./chunk-E4VUJZGC.js";
69
+ } from "./chunk-WWZKWC2Z.js";
70
70
  import {
71
71
  IssueTriage,
72
72
  createDurableAuditSink,
73
73
  createDurableAuditTrail
74
- } from "./chunk-QD3T5DUB.js";
74
+ } from "./chunk-NBQ457TC.js";
75
75
  import {
76
76
  resolveEnvMode,
77
77
  sanitizeInput
78
- } from "./chunk-SNQF2GZA.js";
78
+ } from "./chunk-XYK2GPUF.js";
79
79
  import {
80
80
  withPrerequisite
81
- } from "./chunk-FTDEM664.js";
81
+ } from "./chunk-6WLN4WLY.js";
82
82
  import {
83
83
  NOOP_NOTIFIER,
84
84
  RateLimiter,
@@ -103,18 +103,18 @@ import {
103
103
  withAuditTrail,
104
104
  withProgressHeartbeat,
105
105
  wrapToolWithTimeout
106
- } from "./chunk-DR2ZJHCO.js";
106
+ } from "./chunk-NFKNTZYT.js";
107
107
  import {
108
108
  createAuditTrail,
109
109
  createGraphAuditBridge,
110
110
  emitPipelinePolicyEvent
111
- } from "./chunk-R2Z4HK4B.js";
111
+ } from "./chunk-SKUIP3ER.js";
112
112
  import {
113
113
  EventTopics,
114
114
  createEvent,
115
115
  getGlobalEventBus,
116
116
  getGlobalRegistry
117
- } from "./chunk-PT36V4VS.js";
117
+ } from "./chunk-3JFRPAYE.js";
118
118
  import {
119
119
  IDENTIFIER_RE,
120
120
  LANG_VALUES,
@@ -147,7 +147,7 @@ import {
147
147
  parseRegistry,
148
148
  sourceExistsInRegistry,
149
149
  summarizeContextForPrompt
150
- } from "./chunk-RVWAMRVN.js";
150
+ } from "./chunk-CTLBZ33K.js";
151
151
  import {
152
152
  REGISTRY_PATH,
153
153
  getProjectRoot,
@@ -155,25 +155,25 @@ import {
155
155
  loadTechniquesRegistry,
156
156
  resolveInsideRoot,
157
157
  resolveRegistryRoot
158
- } from "./chunk-DSAY7HRZ.js";
158
+ } from "./chunk-GE4KNPPO.js";
159
159
  import {
160
160
  getTokenEnvVars,
161
161
  resolveToken
162
- } from "./chunk-MGQROE5U.js";
162
+ } from "./chunk-3PLSFD3D.js";
163
163
  import {
164
164
  DEFAULT_RELEVANCE_CONFIG,
165
165
  MemoryImportance,
166
166
  MemoryType,
167
167
  calculateTextJaccardSimilarity,
168
168
  getToolMemory
169
- } from "./chunk-BZUFLIVF.js";
169
+ } from "./chunk-THPZO2XW.js";
170
170
  import {
171
171
  STOPWORDS,
172
172
  truncateWithInfo
173
173
  } from "./chunk-7LP6VJRP.js";
174
174
  import {
175
175
  createSessionMemory
176
- } from "./chunk-HJQSY4XL.js";
176
+ } from "./chunk-N6NHQWQR.js";
177
177
  import {
178
178
  BUILT_IN_EXPERTS,
179
179
  BuiltInExpertTypeSchema,
@@ -191,25 +191,25 @@ import {
191
191
  getAvailableClis,
192
192
  sleep,
193
193
  withTimeout
194
- } from "./chunk-ELRBAHJ7.js";
194
+ } from "./chunk-USHZGWDJ.js";
195
195
  import {
196
196
  BaseAdapter,
197
197
  createStream,
198
198
  requireApiKey,
199
199
  validateApiKeyPresence
200
- } from "./chunk-D3YWV3NR.js";
200
+ } from "./chunk-X5R6QOF2.js";
201
201
  import {
202
202
  DEFAULTS
203
- } from "./chunk-PVGI2ZFN.js";
203
+ } from "./chunk-X5IOLM33.js";
204
204
  import {
205
205
  getAvailabilityCache,
206
206
  getCliForModelId,
207
207
  resolveFallback
208
- } from "./chunk-4PWPBNDP.js";
208
+ } from "./chunk-TS4GGKYN.js";
209
209
  import {
210
210
  generateHyphenId,
211
211
  generateUUID
212
- } from "./chunk-VCSFP3ZN.js";
212
+ } from "./chunk-YKCVPCLR.js";
213
213
  import {
214
214
  AGENT_ROUTER_TIMEOUTS,
215
215
  API_TIMEOUTS,
@@ -321,7 +321,7 @@ import {
321
321
  selectStrategyByManifest,
322
322
  toExpertTaskAnalysisResult,
323
323
  withStep
324
- } from "./chunk-JHHSNZDT.js";
324
+ } from "./chunk-NGXHFMA6.js";
325
325
  import {
326
326
  ensureLearningDir,
327
327
  getMetaOutcomesFile,
@@ -30030,7 +30030,7 @@ function execIdFields(executionId) {
30030
30030
  async function populateUnifiedContextOnState(state, options) {
30031
30031
  const taskCandidate = state["task"];
30032
30032
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
30033
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-XOEH7NZY.js");
30033
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-BIAAVT6X.js");
30034
30034
  const category = inferTaskCategory2(taskCandidate);
30035
30035
  const executionId = options?.executionId;
30036
30036
  const execFields = execIdFields(executionId);
@@ -45763,7 +45763,7 @@ async function tryIssueTriage(task) {
45763
45763
  try {
45764
45764
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
45765
45765
  if (issueMatch === null) return null;
45766
- const { createIssueTriage } = await import("./issue-triage-JK5VG6EE.js");
45766
+ const { createIssueTriage } = await import("./issue-triage-UNLRUO2O.js");
45767
45767
  const triage = createIssueTriage();
45768
45768
  const owner = issueMatch[1] ?? "";
45769
45769
  const num = issueMatch[2] ?? "";
@@ -45791,7 +45791,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
45791
45791
  ]);
45792
45792
  async function classifyWithLLM(task) {
45793
45793
  try {
45794
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-NWVCSOA5.js");
45794
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-VLEDZGPA.js");
45795
45795
  const prompt = [
45796
45796
  "Classify this task into exactly one pipeline template.",
45797
45797
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -46165,7 +46165,7 @@ function buildVotingInput(plan, config) {
46165
46165
  }
46166
46166
  async function executeSingleVote(plan, config, log) {
46167
46167
  try {
46168
- const { executeVoting } = await import("./consensus-vote-NBU47KVJ.js");
46168
+ const { executeVoting } = await import("./consensus-vote-G2EQDVSI.js");
46169
46169
  const input = buildVotingInput(plan, config);
46170
46170
  const result = await executeVoting(input, log);
46171
46171
  return parseVotingResult(result);
@@ -47727,7 +47727,7 @@ var memoryInitPromise = null;
47727
47727
  async function initPipelineMemory() {
47728
47728
  if (cachedMemory !== null) return cachedMemory;
47729
47729
  try {
47730
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-2YVYSK2C.js");
47730
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-XO5T3PJD.js");
47731
47731
  const { getLearningDir } = await import("./learning-persistence-TQJVPLDN.js");
47732
47732
  const mem = createSessionMemory2(getLearningDir());
47733
47733
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -47789,7 +47789,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
47789
47789
  callRecord(routingMemoryCache);
47790
47790
  return;
47791
47791
  }
47792
- routingMemoryInitPromise ??= import("./routing-memory-D5ZSNOED.js").then(({ createRoutingMemory }) => {
47792
+ routingMemoryInitPromise ??= import("./routing-memory-EFMYS572.js").then(({ createRoutingMemory }) => {
47793
47793
  routingMemoryCache ??= createRoutingMemory();
47794
47794
  return routingMemoryCache;
47795
47795
  }).catch((error) => {
@@ -47823,7 +47823,7 @@ ${text}` : "";
47823
47823
  }
47824
47824
  async function getWeatherContext() {
47825
47825
  try {
47826
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-D7QCLP6S.js");
47826
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-CAHU2PCR.js");
47827
47827
  const report = generateWeatherReport2({ includeAdaptive: true });
47828
47828
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
47829
47829
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -47841,7 +47841,7 @@ ${lines}
47841
47841
  }
47842
47842
  async function getMemoryContext(task) {
47843
47843
  try {
47844
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-2YVYSK2C.js");
47844
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-XO5T3PJD.js");
47845
47845
  const { getLearningDir } = await import("./learning-persistence-TQJVPLDN.js");
47846
47846
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
47847
47847
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -47960,7 +47960,7 @@ ${contextBlock}`;
47960
47960
  const strategy = config.votingStrategy ?? "higher_order";
47961
47961
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47962
47962
  try {
47963
- const { executeVoting } = await import("./consensus-vote-NBU47KVJ.js");
47963
+ const { executeVoting } = await import("./consensus-vote-G2EQDVSI.js");
47964
47964
  const votingResult = await executeVoting(
47965
47965
  {
47966
47966
  proposal: buildVoteProposal(plan, research),
@@ -48391,7 +48391,7 @@ async function searchCodebaseForTask(task) {
48391
48391
  }
48392
48392
  async function queryResearchRegistry(task) {
48393
48393
  try {
48394
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-CMFUU7VH.js");
48394
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-QI2V4GS6.js");
48395
48395
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
48396
48396
  if (topic === void 0) return null;
48397
48397
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -48462,7 +48462,7 @@ function createScanStageWrapper() {
48462
48462
  try {
48463
48463
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
48464
48464
  if (slug !== void 0) {
48465
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-QO42XEJO.js");
48465
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-JKXJSVP2.js");
48466
48466
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
48467
48467
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
48468
48468
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -51869,7 +51869,7 @@ var GitHubTaskTracker = class {
51869
51869
  cachedProvider = null;
51870
51870
  async getProvider() {
51871
51871
  if (this.cachedProvider !== null) return this.cachedProvider;
51872
- const { createScmProvider } = await import("./factory-3FLN5V36.js");
51872
+ const { createScmProvider } = await import("./factory-KBUTXBHE.js");
51873
51873
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
51874
51874
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
51875
51875
  this.cachedProvider = result.value;
@@ -52800,7 +52800,7 @@ async function probeSource(source, includeModelIds) {
52800
52800
  }
52801
52801
  }
52802
52802
  async function defaultSources(includeOpenRouter) {
52803
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-QZJFG56H.js");
52803
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-EUZWJNFU.js");
52804
52804
  const adapters = createAllAdapters2();
52805
52805
  return buildDefaultModelSources(adapters, { includeOpenRouter });
52806
52806
  }
@@ -56870,4 +56870,4 @@ export {
56870
56870
  startPipelineEventBridge,
56871
56871
  shutdownPipelineEventBridge
56872
56872
  };
56873
- //# sourceMappingURL=chunk-SA7P7PYY.js.map
56873
+ //# sourceMappingURL=chunk-RWK5XSUL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getTimeProvider
3
- } from "./chunk-JHHSNZDT.js";
3
+ } from "./chunk-NGXHFMA6.js";
4
4
 
5
5
  // src/security/audit-trail.ts
6
6
  var MAX_EVENTS = 1e4;
@@ -214,4 +214,4 @@ export {
214
214
  createGraphAuditBridge,
215
215
  createAuditTrail
216
216
  };
217
- //# sourceMappingURL=chunk-R2Z4HK4B.js.map
217
+ //# sourceMappingURL=chunk-SKUIP3ER.js.map
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.52.0" : "dev";
3
+ var VERSION = true ? "8.52.2" : "dev";
4
4
  var NODE_ENGINE_RANGE = ">=22.5.0";
5
5
  function isNodeVersionSupported(version) {
6
6
  return semver.satisfies(version, NODE_ENGINE_RANGE);
@@ -11,4 +11,4 @@ export {
11
11
  NODE_ENGINE_RANGE,
12
12
  isNodeVersionSupported
13
13
  };
14
- //# sourceMappingURL=chunk-6IBZN5NI.js.map
14
+ //# sourceMappingURL=chunk-THEK5N2A.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-7LP6VJRP.js";
6
6
  import {
7
7
  SessionMemory
8
- } from "./chunk-HJQSY4XL.js";
8
+ } from "./chunk-N6NHQWQR.js";
9
9
  import {
10
10
  StatsOnlyAdapter,
11
11
  ensureSharedMemoryRegistry
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-MUJCGBZW.js";
16
16
  import {
17
17
  generateId
18
- } from "./chunk-VCSFP3ZN.js";
18
+ } from "./chunk-YKCVPCLR.js";
19
19
  import {
20
20
  ErrorCode,
21
21
  NexusError,
@@ -29,7 +29,7 @@ import {
29
29
  ok,
30
30
  openSqliteDatabase,
31
31
  setSharedMobiMemDbPathResolver
32
- } from "./chunk-JHHSNZDT.js";
32
+ } from "./chunk-NGXHFMA6.js";
33
33
  import {
34
34
  nexusDataPath
35
35
  } from "./chunk-BTYRPZON.js";
@@ -5825,4 +5825,4 @@ export {
5825
5825
  reinitializeMemoryBackends,
5826
5826
  ToolMemoryManager
5827
5827
  };
5828
- //# sourceMappingURL=chunk-BZUFLIVF.js.map
5828
+ //# sourceMappingURL=chunk-THPZO2XW.js.map
@@ -3,7 +3,7 @@ import {
3
3
  MODEL_IDS,
4
4
  getTimeProvider,
5
5
  resolveModelIdentitySync
6
- } from "./chunk-JHHSNZDT.js";
6
+ } from "./chunk-NGXHFMA6.js";
7
7
 
8
8
  // src/config/model-availability.ts
9
9
  var DEFAULT_TTL_MS = 6e4;
@@ -150,4 +150,4 @@ export {
150
150
  resetAvailabilityCache,
151
151
  filterAvailableModels
152
152
  };
153
- //# sourceMappingURL=chunk-4PWPBNDP.js.map
153
+ //# sourceMappingURL=chunk-TS4GGKYN.js.map
@@ -5,34 +5,34 @@ import {
5
5
  planOptionalParams,
6
6
  requireApiKey,
7
7
  validateApiKeyPresence
8
- } from "./chunk-D3YWV3NR.js";
8
+ } from "./chunk-X5R6QOF2.js";
9
9
  import {
10
10
  CUSTOM_API_DEFAULT_MODEL
11
- } from "./chunk-PVGI2ZFN.js";
11
+ } from "./chunk-X5IOLM33.js";
12
12
  import {
13
13
  CUSTOM_API_BASE_URL_ENV,
14
14
  PROVIDER_ENV_KEYS,
15
15
  assertCustomApiHostResolvesPublic,
16
16
  validateCustomApiBaseUrl
17
- } from "./chunk-D7CLVTZM.js";
17
+ } from "./chunk-XMMRINZK.js";
18
18
  import {
19
19
  nexusMkdtempSync
20
20
  } from "./chunk-T46RV7Y7.js";
21
21
  import {
22
22
  getAvailabilityCache
23
- } from "./chunk-4PWPBNDP.js";
23
+ } from "./chunk-TS4GGKYN.js";
24
24
  import {
25
25
  extractSystemPrompt
26
26
  } from "./chunk-QZUG667L.js";
27
27
  import {
28
28
  generateHyphenId
29
- } from "./chunk-VCSFP3ZN.js";
29
+ } from "./chunk-YKCVPCLR.js";
30
30
  import {
31
31
  CliCircuitBreaker,
32
32
  DEFAULT_CIRCUIT_BREAKER_CONFIG,
33
33
  getCliCircuitBreakerSnapshot,
34
34
  getDefaultCliCircuitBreakerRegistry
35
- } from "./chunk-F5JVNA4I.js";
35
+ } from "./chunk-5EEP73OA.js";
36
36
  import {
37
37
  CLI_SUBPROCESS_TIMEOUTS,
38
38
  CLI_TIMEOUTS,
@@ -58,11 +58,13 @@ import {
58
58
  getCliModelName,
59
59
  getCliTimeout,
60
60
  getDefaultModelForCli,
61
+ getDefaultRegistry,
61
62
  getErrorMessage,
62
63
  getOutcomeStore,
63
64
  getRandomProvider,
64
65
  getTimeProvider,
65
66
  getTokenEstimator,
67
+ isDurableCapacityText,
66
68
  isDynamicModelsEnabled,
67
69
  isRateLimitLikeError,
68
70
  isRateLimitText,
@@ -73,7 +75,7 @@ import {
73
75
  resolveCliModelName,
74
76
  resolveRetryAfterMs,
75
77
  retryAfterMsFromContext
76
- } from "./chunk-JHHSNZDT.js";
78
+ } from "./chunk-NGXHFMA6.js";
77
79
  import {
78
80
  parseBoolValue
79
81
  } from "./chunk-BTYRPZON.js";
@@ -1935,6 +1937,21 @@ var RETRYABLE_ERROR_CODES = /* @__PURE__ */ new Set([
1935
1937
  "RATE_LIMITED",
1936
1938
  "CONNECTION_ERROR"
1937
1939
  ]);
1940
+ function isRetryableErrorCode(code) {
1941
+ return RETRYABLE_ERROR_CODES.has(code);
1942
+ }
1943
+ function createCliError(code, message, cli, cause) {
1944
+ const retryable = isRetryableErrorCode(code) && !isDurableCapacityText(message);
1945
+ const retryAfterMs = retryable ? parseRetryAfterMs(message) : void 0;
1946
+ return {
1947
+ code,
1948
+ message,
1949
+ cli,
1950
+ retryable,
1951
+ ...retryAfterMs !== void 0 && { retryAfterMs },
1952
+ ...cause !== void 0 && { cause }
1953
+ };
1954
+ }
1938
1955
 
1939
1956
  // src/cli-adapters/cli-retry-loop.ts
1940
1957
  function calculateBackoffDelay(attempt, baseDelayMs, maxDelayMs) {
@@ -2284,16 +2301,7 @@ var BaseCliAdapter = class {
2284
2301
  * Creates a CLI error.
2285
2302
  */
2286
2303
  createError(code, message, cause) {
2287
- const retryable = ["RATE_LIMITED", "TIMEOUT", "CONNECTION_ERROR"].includes(code);
2288
- const retryAfterMs = retryable ? parseRetryAfterMs(message) : void 0;
2289
- return {
2290
- code,
2291
- message,
2292
- cli: this.name,
2293
- retryable,
2294
- ...retryAfterMs !== void 0 && { retryAfterMs },
2295
- ...cause !== void 0 && { cause }
2296
- };
2304
+ return createCliError(code, message, this.name, cause);
2297
2305
  }
2298
2306
  /**
2299
2307
  * Normalizes CLI response to common format.
@@ -2591,6 +2599,9 @@ var SIGKILL_GRACE_MS = 5e3;
2591
2599
  function isTransientError(code) {
2592
2600
  return TRANSIENT_ERROR_CODES.has(code);
2593
2601
  }
2602
+ function shouldRetryInPlace(error) {
2603
+ return isTransientError(error.code) && !isDurableCapacityText(error.message);
2604
+ }
2594
2605
  var TRANSIENT_EXIT_CODES = /* @__PURE__ */ new Set([137, 143]);
2595
2606
  var EXIT_CODE_SIGNAL_NAMES = {
2596
2607
  137: "SIGKILL (OOM or killed)",
@@ -2677,7 +2688,7 @@ var SubprocessCliAdapter = class extends BaseCliAdapter {
2677
2688
  const requestId = generateHyphenId("cli-req", 8);
2678
2689
  const result = await this.spawnSubprocess(task, options, requestId);
2679
2690
  if (result.ok || !this.transientRetry.enabled) return result;
2680
- if (!isTransientError(result.error.code)) return result;
2691
+ if (!shouldRetryInPlace(result.error)) return result;
2681
2692
  return this.retryTransient(task, options, result, 0, requestId);
2682
2693
  }
2683
2694
  /**
@@ -2700,7 +2711,7 @@ var SubprocessCliAdapter = class extends BaseCliAdapter {
2700
2711
  const retryOptions = isTimeout ? { ...options, timeoutMs: Math.round(options.timeoutMs * TIMEOUT_RETRY_MULTIPLIER) } : options;
2701
2712
  const result = await this.spawnSubprocess(task, retryOptions, requestId);
2702
2713
  if (result.ok) return result;
2703
- if (!isTransientError(result.error.code)) return result;
2714
+ if (!shouldRetryInPlace(result.error)) return result;
2704
2715
  return this.retryTransient(task, retryOptions, result, attempt + 1, requestId);
2705
2716
  }
2706
2717
  /**
@@ -3127,6 +3138,36 @@ var ClaudeResponseParser = class {
3127
3138
  return null;
3128
3139
  }
3129
3140
  }
3141
+ /**
3142
+ * The error text of an `is_error: true` envelope, with its `stop_reason`
3143
+ * (#6120).
3144
+ *
3145
+ * Before this the envelope reached the adapter only through the generic
3146
+ * unparseable-output path, whose first step scans the WHOLE stdout for
3147
+ * rate-limit text. The out-of-credits envelope carries `api_error_status:
3148
+ * 429`, so that scan matched and the error message became the first 500
3149
+ * characters of the envelope — `{"duration_api_ms":0,…` — while the one
3150
+ * field that names the cause, `result`, never reached anyone. Surfacing it
3151
+ * here routes the envelope through `classifyErrorOnlyStream`, which
3152
+ * classifies the message text rather than the envelope bytes.
3153
+ *
3154
+ * `null` when the envelope is not an error, or when `result` is empty: an
3155
+ * empty error text is not a message, and the caller's recovery order handles
3156
+ * it as before.
3157
+ */
3158
+ extractErrorMessage(raw) {
3159
+ try {
3160
+ const record = asRecord(JSON.parse(raw));
3161
+ if (record?.is_error !== true) return null;
3162
+ const result = record.result;
3163
+ if (typeof result !== "string" || result === "") return null;
3164
+ const stopReason = record.stop_reason;
3165
+ return typeof stopReason === "string" && stopReason !== "" ? `${result} (stop_reason: ${stopReason})` : result;
3166
+ } catch {
3167
+ logger.debug("Skipped malformed output line", { snippet: raw.slice(0, 100) });
3168
+ return null;
3169
+ }
3170
+ }
3130
3171
  /**
3131
3172
  * Extracts token usage from response.
3132
3173
  */
@@ -3260,6 +3301,17 @@ function buildClaudeAliasMap() {
3260
3301
  }
3261
3302
  var UNKNOWN_MODEL_DEFAULT_INPUT_COST = 5;
3262
3303
  var UNKNOWN_MODEL_DEFAULT_OUTPUT_COST = 25;
3304
+ var IN_FAMILY_FALLBACK_OPTION = "inFamilyFallback";
3305
+ function toCliAlias(internalModel) {
3306
+ return MODEL_TO_CLI_ALIAS[internalModel] ?? internalModel;
3307
+ }
3308
+ function nextClaudeAlias(alias) {
3309
+ const aliases = getDefaultRegistry().allEntries().flatMap(
3310
+ (entry) => entry.cliName === "claude" && entry.cliAlias !== void 0 ? [entry.cliAlias] : []
3311
+ );
3312
+ const at = aliases.indexOf(alias);
3313
+ return at === -1 ? void 0 : aliases[at + 1];
3314
+ }
3263
3315
  var ClaudeCliAdapter = class extends SubprocessCliAdapter {
3264
3316
  name = "claude";
3265
3317
  parser = new ClaudeResponseParser();
@@ -3298,6 +3350,37 @@ var ClaudeCliAdapter = class extends SubprocessCliAdapter {
3298
3350
  costPerMillionOutput: UNKNOWN_MODEL_DEFAULT_OUTPUT_COST
3299
3351
  };
3300
3352
  }
3353
+ /**
3354
+ * Run the task, and on an out-of-credits envelope for the requested model
3355
+ * retry ONCE with the next claude alias the registry lists (#6120).
3356
+ *
3357
+ * The credit exhaustion the claude CLI reports is per MODEL — `fable`
3358
+ * answered "You're out of usage credits" while `sonnet` answered the same
3359
+ * prompt — so it is not evidence against the CLI, and it must not reach the
3360
+ * per-CLI circuit breaker as one. The breaker records what leaves this
3361
+ * method: a substituted success records nothing, and a second capacity
3362
+ * error propagates as the typed error and counts once, because by then the
3363
+ * family, not one model, has failed. A non-capacity `is_error` (auth, a
3364
+ * server error) is returned as-is; another model would not fix it.
3365
+ *
3366
+ * The substitution is stamped on the response as `fallbackFrom` so a vote
3367
+ * record can say which model actually answered (#6115).
3368
+ */
3369
+ async executeTask(task, options) {
3370
+ const first = await super.executeTask(task, options);
3371
+ if (first.ok || !isDurableCapacityText(first.error.message)) return first;
3372
+ if (task.options?.[IN_FAMILY_FALLBACK_OPTION] === false) return first;
3373
+ const requested = toCliAlias(task.model ?? this.model);
3374
+ const next = nextClaudeAlias(requested);
3375
+ if (next === void 0) return first;
3376
+ this.logger.warn("Claude model out of usage credits; retrying once with the next alias", {
3377
+ requested,
3378
+ next
3379
+ });
3380
+ const second = await super.executeTask({ ...task, model: next }, options);
3381
+ if (!second.ok) return second;
3382
+ return ok({ ...second.value, model: next, fallbackFrom: requested });
3383
+ }
3301
3384
  /** Appends optional string-type task options to CLI args. */
3302
3385
  appendTaskOptions(args, task) {
3303
3386
  const workDir = task.options?.["workDir"];
@@ -3320,7 +3403,7 @@ var ClaudeCliAdapter = class extends SubprocessCliAdapter {
3320
3403
  getCommand(task) {
3321
3404
  const args = ["-p", "--output-format", "json"];
3322
3405
  const internalModel = task.model ?? this.model;
3323
- const cliModel = MODEL_TO_CLI_ALIAS[internalModel] ?? internalModel;
3406
+ const cliModel = toCliAlias(internalModel);
3324
3407
  args.push("--model", cliModel);
3325
3408
  if (task.systemPrompt !== void 0 && task.systemPrompt !== "") {
3326
3409
  args.push("--system-prompt", task.systemPrompt);
@@ -5090,6 +5173,7 @@ export {
5090
5173
  extractNumberField,
5091
5174
  safeJsonParse,
5092
5175
  ClaudeResponseParser,
5176
+ IN_FAMILY_FALLBACK_OPTION,
5093
5177
  ClaudeCliAdapter,
5094
5178
  GeminiCliAdapter,
5095
5179
  CodexResponseParser,
@@ -5116,4 +5200,4 @@ export {
5116
5200
  SdkAdapter,
5117
5201
  createAutoAdapter
5118
5202
  };
5119
- //# sourceMappingURL=chunk-ELRBAHJ7.js.map
5203
+ //# sourceMappingURL=chunk-USHZGWDJ.js.map