nexus-agents 2.173.6 → 2.173.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/{child-mcp-config-CPBWB4TY.js → child-mcp-config-RSM4VNFS.js} +2 -2
  2. package/dist/{chunk-NN6BBKJD.js → chunk-3PXN234X.js} +95 -37
  3. package/dist/{chunk-NN6BBKJD.js.map → chunk-3PXN234X.js.map} +1 -1
  4. package/dist/{chunk-BQ3CWH5H.js → chunk-3ZLPS4XC.js} +3 -3
  5. package/dist/{chunk-27JPMJAD.js → chunk-4IDGRIWO.js} +6 -6
  6. package/dist/chunk-4IDGRIWO.js.map +1 -0
  7. package/dist/{chunk-N7LGY3C4.js → chunk-66EE7Y2F.js} +2 -2
  8. package/dist/{chunk-75MPLAEC.js → chunk-6N2WQBJU.js} +2 -2
  9. package/dist/{chunk-QPG55YAU.js → chunk-6VT7ODBT.js} +2 -2
  10. package/dist/{chunk-PM35LR5P.js → chunk-6WYBSYJ2.js} +3 -3
  11. package/dist/{chunk-LZME2PGR.js → chunk-6XMMFCL3.js} +3 -3
  12. package/dist/{chunk-7N576XGX.js → chunk-7IIVYNLK.js} +2 -2
  13. package/dist/{chunk-IPQW2QHU.js → chunk-AEWJKZ5E.js} +2 -2
  14. package/dist/{chunk-PCFVPWA5.js → chunk-ATQZERNG.js} +2 -2
  15. package/dist/{chunk-GUKHGODJ.js → chunk-BGKDC7P5.js} +2 -2
  16. package/dist/{chunk-G66T2OIM.js → chunk-CHZF364E.js} +2 -2
  17. package/dist/{chunk-XDNDQ7M3.js → chunk-D6MTIPFD.js} +2 -2
  18. package/dist/{chunk-YN7QDYG6.js → chunk-FVSXYMVW.js} +3 -3
  19. package/dist/{chunk-VIHP2LFY.js → chunk-GWDGD7GY.js} +2 -2
  20. package/dist/{chunk-2TMWS6WT.js → chunk-H7HMKGGB.js} +8 -8
  21. package/dist/{chunk-B3LK3YIF.js → chunk-HGHPZ2W3.js} +13 -9
  22. package/dist/chunk-HGHPZ2W3.js.map +1 -0
  23. package/dist/{chunk-P52ISEJO.js → chunk-JYI63V47.js} +4 -4
  24. package/dist/{chunk-U2YQ2HG4.js → chunk-KLAVOOWV.js} +2 -2
  25. package/dist/{chunk-I7HYMCVW.js → chunk-MREBZQA6.js} +5 -5
  26. package/dist/{chunk-CMBIBZIY.js → chunk-NBLCQBR5.js} +8 -8
  27. package/dist/{chunk-AO5OIT2P.js → chunk-PL57P5LU.js} +4 -4
  28. package/dist/{chunk-KU4HIPQ4.js → chunk-Q7L6CXIO.js} +5 -5
  29. package/dist/{chunk-5D4AXZCX.js → chunk-SGQOW5SD.js} +4 -4
  30. package/dist/{chunk-6INAAUGD.js → chunk-TOIBWK5Z.js} +2 -2
  31. package/dist/{chunk-TRLXEYFT.js → chunk-V34YWUSC.js} +2 -2
  32. package/dist/{chunk-U3SXRK5O.js → chunk-VSDI6ASO.js} +20 -9
  33. package/dist/chunk-VSDI6ASO.js.map +1 -0
  34. package/dist/{chunk-E63P5GML.js → chunk-XC37XDMH.js} +2 -2
  35. package/dist/{chunk-SORESQNO.js → chunk-XPZODTJ6.js} +12 -2
  36. package/dist/{chunk-SORESQNO.js.map → chunk-XPZODTJ6.js.map} +1 -1
  37. package/dist/{chunk-HT7IBYJL.js → chunk-YBTBVOVA.js} +4 -4
  38. package/dist/{chunk-K2D2IFR6.js → chunk-YFTNNQMV.js} +6 -6
  39. package/dist/{chunk-ZM4O442V.js → chunk-YPNQPT2F.js} +2 -2
  40. package/dist/{chunk-ZM4O442V.js.map → chunk-YPNQPT2F.js.map} +1 -1
  41. package/dist/{cli-circuit-breaker-RDVBTDIT.js → cli-circuit-breaker-4HDWO5Z6.js} +3 -3
  42. package/dist/cli.js +41 -41
  43. package/dist/{composite-router-YV3MIDYM.js → composite-router-W6GXLKWB.js} +2 -2
  44. package/dist/{consensus-vote-PBHH6JW6.js → consensus-vote-KTWHGAOH.js} +19 -17
  45. package/dist/{context-retriever-KTZ54F46.js → context-retriever-67M3IABW.js} +8 -8
  46. package/dist/{dist-BNKMVSO2.js → dist-KUG63MRZ.js} +1321 -1111
  47. package/dist/dist-KUG63MRZ.js.map +1 -0
  48. package/dist/{doctor-deep-D2D3RPIR.js → doctor-deep-NPQZPZDO.js} +3 -3
  49. package/dist/{expert-bridge-6SPKMPEG.js → expert-bridge-3AW3OHAY.js} +4 -4
  50. package/dist/{expert-config-53EBA7DT.js → expert-config-5SVQQ2L6.js} +2 -2
  51. package/dist/{factory-2UAMVT6O.js → factory-PIXCR3PF.js} +5 -5
  52. package/dist/{factory-E2QXGLFH.js → factory-XSRDHJ34.js} +8 -8
  53. package/dist/{improvement-review-BWWZDFOD.js → improvement-review-JQVHCWVU.js} +5 -5
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.js +30 -30
  56. package/dist/{init-opencode-DJ42XZQZ.js → init-opencode-Q6XT7UTP.js} +5 -5
  57. package/dist/{issue-triage-P3UA4CEX.js → issue-triage-JCGAF2P3.js} +6 -6
  58. package/dist/{pr-reviewer-helpers-DCVX3GRQ.js → pr-reviewer-helpers-QBETICKQ.js} +4 -4
  59. package/dist/{registry-command-YXKTAFZX.js → registry-command-3SKGILCO.js} +2 -2
  60. package/dist/{repo-security-plan-5EPAQMIO.js → repo-security-plan-C5RDE3QO.js} +3 -3
  61. package/dist/{research-helpers-synthesize-USLAWOD2.js → research-helpers-synthesize-J4Z7MY7X.js} +4 -4
  62. package/dist/{routing-memory-XGZ6T7GS.js → routing-memory-ZZKVDP2K.js} +2 -2
  63. package/dist/{session-memory-GZCB372F.js → session-memory-2QINLWDR.js} +3 -3
  64. package/dist/{setup-command-LOGCELQL.js → setup-command-UJ5VETUJ.js} +14 -14
  65. package/dist/{setup-config-EPJD5N3U.js → setup-config-SUN272BA.js} +3 -3
  66. package/dist/{setup-custom-api-YXXKSX5F.js → setup-custom-api-AEUEX4IF.js} +3 -3
  67. package/dist/{tool-memory-KADP6IQE.js → tool-memory-VS2GRBV3.js} +5 -5
  68. package/dist/{unified-registry-DZAIN5Q2.js → unified-registry-O4FIGTBJ.js} +9 -9
  69. package/dist/{weather-report-MZMFDIDX.js → weather-report-3FB5MXHV.js} +2 -2
  70. package/package.json +11 -11
  71. package/dist/chunk-27JPMJAD.js.map +0 -1
  72. package/dist/chunk-B3LK3YIF.js.map +0 -1
  73. package/dist/chunk-U3SXRK5O.js.map +0 -1
  74. package/dist/dist-BNKMVSO2.js.map +0 -1
  75. /package/dist/{child-mcp-config-CPBWB4TY.js.map → child-mcp-config-RSM4VNFS.js.map} +0 -0
  76. /package/dist/{chunk-BQ3CWH5H.js.map → chunk-3ZLPS4XC.js.map} +0 -0
  77. /package/dist/{chunk-N7LGY3C4.js.map → chunk-66EE7Y2F.js.map} +0 -0
  78. /package/dist/{chunk-75MPLAEC.js.map → chunk-6N2WQBJU.js.map} +0 -0
  79. /package/dist/{chunk-QPG55YAU.js.map → chunk-6VT7ODBT.js.map} +0 -0
  80. /package/dist/{chunk-PM35LR5P.js.map → chunk-6WYBSYJ2.js.map} +0 -0
  81. /package/dist/{chunk-LZME2PGR.js.map → chunk-6XMMFCL3.js.map} +0 -0
  82. /package/dist/{chunk-7N576XGX.js.map → chunk-7IIVYNLK.js.map} +0 -0
  83. /package/dist/{chunk-IPQW2QHU.js.map → chunk-AEWJKZ5E.js.map} +0 -0
  84. /package/dist/{chunk-PCFVPWA5.js.map → chunk-ATQZERNG.js.map} +0 -0
  85. /package/dist/{chunk-GUKHGODJ.js.map → chunk-BGKDC7P5.js.map} +0 -0
  86. /package/dist/{chunk-G66T2OIM.js.map → chunk-CHZF364E.js.map} +0 -0
  87. /package/dist/{chunk-XDNDQ7M3.js.map → chunk-D6MTIPFD.js.map} +0 -0
  88. /package/dist/{chunk-YN7QDYG6.js.map → chunk-FVSXYMVW.js.map} +0 -0
  89. /package/dist/{chunk-VIHP2LFY.js.map → chunk-GWDGD7GY.js.map} +0 -0
  90. /package/dist/{chunk-2TMWS6WT.js.map → chunk-H7HMKGGB.js.map} +0 -0
  91. /package/dist/{chunk-P52ISEJO.js.map → chunk-JYI63V47.js.map} +0 -0
  92. /package/dist/{chunk-U2YQ2HG4.js.map → chunk-KLAVOOWV.js.map} +0 -0
  93. /package/dist/{chunk-I7HYMCVW.js.map → chunk-MREBZQA6.js.map} +0 -0
  94. /package/dist/{chunk-CMBIBZIY.js.map → chunk-NBLCQBR5.js.map} +0 -0
  95. /package/dist/{chunk-AO5OIT2P.js.map → chunk-PL57P5LU.js.map} +0 -0
  96. /package/dist/{chunk-KU4HIPQ4.js.map → chunk-Q7L6CXIO.js.map} +0 -0
  97. /package/dist/{chunk-5D4AXZCX.js.map → chunk-SGQOW5SD.js.map} +0 -0
  98. /package/dist/{chunk-6INAAUGD.js.map → chunk-TOIBWK5Z.js.map} +0 -0
  99. /package/dist/{chunk-TRLXEYFT.js.map → chunk-V34YWUSC.js.map} +0 -0
  100. /package/dist/{chunk-E63P5GML.js.map → chunk-XC37XDMH.js.map} +0 -0
  101. /package/dist/{chunk-HT7IBYJL.js.map → chunk-YBTBVOVA.js.map} +0 -0
  102. /package/dist/{chunk-K2D2IFR6.js.map → chunk-YFTNNQMV.js.map} +0 -0
  103. /package/dist/{cli-circuit-breaker-RDVBTDIT.js.map → cli-circuit-breaker-4HDWO5Z6.js.map} +0 -0
  104. /package/dist/{composite-router-YV3MIDYM.js.map → composite-router-W6GXLKWB.js.map} +0 -0
  105. /package/dist/{consensus-vote-PBHH6JW6.js.map → consensus-vote-KTWHGAOH.js.map} +0 -0
  106. /package/dist/{context-retriever-KTZ54F46.js.map → context-retriever-67M3IABW.js.map} +0 -0
  107. /package/dist/{doctor-deep-D2D3RPIR.js.map → doctor-deep-NPQZPZDO.js.map} +0 -0
  108. /package/dist/{expert-bridge-6SPKMPEG.js.map → expert-bridge-3AW3OHAY.js.map} +0 -0
  109. /package/dist/{expert-config-53EBA7DT.js.map → expert-config-5SVQQ2L6.js.map} +0 -0
  110. /package/dist/{factory-2UAMVT6O.js.map → factory-PIXCR3PF.js.map} +0 -0
  111. /package/dist/{factory-E2QXGLFH.js.map → factory-XSRDHJ34.js.map} +0 -0
  112. /package/dist/{improvement-review-BWWZDFOD.js.map → improvement-review-JQVHCWVU.js.map} +0 -0
  113. /package/dist/{init-opencode-DJ42XZQZ.js.map → init-opencode-Q6XT7UTP.js.map} +0 -0
  114. /package/dist/{issue-triage-P3UA4CEX.js.map → issue-triage-JCGAF2P3.js.map} +0 -0
  115. /package/dist/{pr-reviewer-helpers-DCVX3GRQ.js.map → pr-reviewer-helpers-QBETICKQ.js.map} +0 -0
  116. /package/dist/{registry-command-YXKTAFZX.js.map → registry-command-3SKGILCO.js.map} +0 -0
  117. /package/dist/{repo-security-plan-5EPAQMIO.js.map → repo-security-plan-C5RDE3QO.js.map} +0 -0
  118. /package/dist/{research-helpers-synthesize-USLAWOD2.js.map → research-helpers-synthesize-J4Z7MY7X.js.map} +0 -0
  119. /package/dist/{routing-memory-XGZ6T7GS.js.map → routing-memory-ZZKVDP2K.js.map} +0 -0
  120. /package/dist/{session-memory-GZCB372F.js.map → session-memory-2QINLWDR.js.map} +0 -0
  121. /package/dist/{setup-command-LOGCELQL.js.map → setup-command-UJ5VETUJ.js.map} +0 -0
  122. /package/dist/{setup-config-EPJD5N3U.js.map → setup-config-SUN272BA.js.map} +0 -0
  123. /package/dist/{setup-custom-api-YXXKSX5F.js.map → setup-custom-api-AEUEX4IF.js.map} +0 -0
  124. /package/dist/{tool-memory-KADP6IQE.js.map → tool-memory-VS2GRBV3.js.map} +0 -0
  125. /package/dist/{unified-registry-DZAIN5Q2.js.map → unified-registry-O4FIGTBJ.js.map} +0 -0
  126. /package/dist/{weather-report-MZMFDIDX.js.map → weather-report-3FB5MXHV.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-27JPMJAD.js";
3
+ } from "./chunk-4IDGRIWO.js";
4
4
  import "./chunk-AXTD4TFK.js";
5
5
  import "./chunk-DHVMSIT5.js";
6
6
  import "./chunk-ZPWHCABL.js";
@@ -60,4 +60,4 @@ export {
60
60
  generateMcpConfig,
61
61
  getDefaultAllowedTools
62
62
  };
63
- //# sourceMappingURL=child-mcp-config-CPBWB4TY.js.map
63
+ //# sourceMappingURL=child-mcp-config-RSM4VNFS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-XDNDQ7M3.js";
3
+ } from "./chunk-D6MTIPFD.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-HFOQKCD2.js";
@@ -21,10 +21,10 @@ import {
21
21
  DEFAULT_TASK_TTL_MS,
22
22
  DEFAULT_TOOL_RATE_LIMITS,
23
23
  clampTaskTtl
24
- } from "./chunk-CMBIBZIY.js";
24
+ } from "./chunk-NBLCQBR5.js";
25
25
  import {
26
26
  executeExpert
27
- } from "./chunk-2TMWS6WT.js";
27
+ } from "./chunk-H7HMKGGB.js";
28
28
  import {
29
29
  JobStatusSchema,
30
30
  abortJob,
@@ -45,21 +45,21 @@ import {
45
45
  simulationDeniedResult,
46
46
  toJobSummary,
47
47
  writeJobCancelled
48
- } from "./chunk-U3SXRK5O.js";
48
+ } from "./chunk-VSDI6ASO.js";
49
49
  import {
50
50
  normalizeTopicToCanonical,
51
51
  synthesizeResearch
52
- } from "./chunk-BQ3CWH5H.js";
52
+ } from "./chunk-3ZLPS4XC.js";
53
53
  import {
54
54
  IssueTriage
55
- } from "./chunk-KU4HIPQ4.js";
55
+ } from "./chunk-Q7L6CXIO.js";
56
56
  import {
57
57
  resolveEnvMode,
58
58
  sanitizeInput
59
- } from "./chunk-75MPLAEC.js";
59
+ } from "./chunk-6N2WQBJU.js";
60
60
  import {
61
61
  withPrerequisite
62
- } from "./chunk-PM35LR5P.js";
62
+ } from "./chunk-6WYBSYJ2.js";
63
63
  import {
64
64
  NOOP_NOTIFIER,
65
65
  RateLimiter,
@@ -82,18 +82,18 @@ import {
82
82
  withAuditTrail,
83
83
  withProgressHeartbeat,
84
84
  wrapToolWithTimeout
85
- } from "./chunk-YN7QDYG6.js";
85
+ } from "./chunk-FVSXYMVW.js";
86
86
  import {
87
87
  createAuditTrail,
88
88
  createGraphAuditBridge,
89
89
  emitPipelinePolicyEvent
90
- } from "./chunk-U2YQ2HG4.js";
90
+ } from "./chunk-KLAVOOWV.js";
91
91
  import {
92
92
  EventTopics,
93
93
  createEvent,
94
94
  getGlobalEventBus,
95
95
  getGlobalRegistry
96
- } from "./chunk-HT7IBYJL.js";
96
+ } from "./chunk-YBTBVOVA.js";
97
97
  import {
98
98
  IDENTIFIER_RE,
99
99
  LANG_VALUES,
@@ -126,15 +126,15 @@ import {
126
126
  parseRegistry,
127
127
  sourceExistsInRegistry,
128
128
  summarizeContextForPrompt
129
- } from "./chunk-I7HYMCVW.js";
129
+ } from "./chunk-MREBZQA6.js";
130
130
  import {
131
131
  getTokenEnvVars,
132
132
  resolveToken
133
- } from "./chunk-6INAAUGD.js";
133
+ } from "./chunk-TOIBWK5Z.js";
134
134
  import {
135
135
  loadPapersRegistry,
136
136
  loadTechniquesRegistry
137
- } from "./chunk-IPQW2QHU.js";
137
+ } from "./chunk-AEWJKZ5E.js";
138
138
  import {
139
139
  resolveInsideRoot
140
140
  } from "./chunk-NUBSJGQZ.js";
@@ -143,20 +143,20 @@ import {
143
143
  MemoryImportance,
144
144
  calculateTextJaccardSimilarity,
145
145
  getToolMemory
146
- } from "./chunk-P52ISEJO.js";
146
+ } from "./chunk-JYI63V47.js";
147
147
  import {
148
148
  STOPWORDS,
149
149
  truncateWithInfo
150
150
  } from "./chunk-6T3EPABN.js";
151
151
  import {
152
152
  createSessionMemory
153
- } from "./chunk-QPG55YAU.js";
153
+ } from "./chunk-6VT7ODBT.js";
154
154
  import {
155
155
  BUILT_IN_EXPERTS,
156
156
  BuiltInExpertTypeSchema,
157
157
  ExpertConfigSchema,
158
158
  getSecurityKnowledgePrompt
159
- } from "./chunk-ZM4O442V.js";
159
+ } from "./chunk-YPNQPT2F.js";
160
160
  import {
161
161
  getMemoryRegistry
162
162
  } from "./chunk-KSQSWEFH.js";
@@ -168,25 +168,25 @@ import {
168
168
  getAvailableClis,
169
169
  sleep,
170
170
  withTimeout
171
- } from "./chunk-B3LK3YIF.js";
171
+ } from "./chunk-HGHPZ2W3.js";
172
172
  import {
173
173
  BaseAdapter,
174
174
  createStream,
175
175
  requireApiKey,
176
176
  validateApiKeyPresence
177
- } from "./chunk-PCFVPWA5.js";
177
+ } from "./chunk-ATQZERNG.js";
178
178
  import {
179
179
  DEFAULTS
180
- } from "./chunk-VIHP2LFY.js";
180
+ } from "./chunk-GWDGD7GY.js";
181
181
  import {
182
182
  getAvailabilityCache,
183
183
  getCliForModelId,
184
184
  resolveFallback
185
- } from "./chunk-TRLXEYFT.js";
185
+ } from "./chunk-V34YWUSC.js";
186
186
  import {
187
187
  generateHyphenId,
188
188
  generateUUID
189
- } from "./chunk-E63P5GML.js";
189
+ } from "./chunk-XC37XDMH.js";
190
190
  import {
191
191
  AGENT_ROUTER_TIMEOUTS,
192
192
  API_TIMEOUTS,
@@ -283,7 +283,7 @@ import {
283
283
  selectStrategyByManifest,
284
284
  toExpertTaskAnalysisResult,
285
285
  withStep
286
- } from "./chunk-27JPMJAD.js";
286
+ } from "./chunk-4IDGRIWO.js";
287
287
  import {
288
288
  ensureLearningDir,
289
289
  getMetaOutcomesFile,
@@ -28344,7 +28344,7 @@ function execIdFields(executionId) {
28344
28344
  async function populateUnifiedContextOnState(state, options) {
28345
28345
  const taskCandidate = state["task"];
28346
28346
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
28347
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-KTZ54F46.js");
28347
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-67M3IABW.js");
28348
28348
  const category = inferTaskCategory2(taskCandidate);
28349
28349
  const executionId = options?.executionId;
28350
28350
  const execFields = execIdFields(executionId);
@@ -43488,6 +43488,14 @@ var PIPELINE_STATE_KEYS = {
43488
43488
 
43489
43489
  // src/pipeline/pipeline-graph.ts
43490
43490
  var logger36 = createLogger({ component: "pipeline-graph" });
43491
+ var StageFailureError = class extends Error {
43492
+ constructor(stageId, stageError) {
43493
+ super(`Stage '${stageId}' failed: ${stageError ?? "no error message"}`);
43494
+ this.stageId = stageId;
43495
+ this.name = "StageFailureError";
43496
+ }
43497
+ stageId;
43498
+ };
43491
43499
  function compilePipelineGraph(template, stages) {
43492
43500
  const missing = findMissingStages(template, stages);
43493
43501
  if (missing.length > 0) {
@@ -43549,6 +43557,9 @@ function createNodeHandler(stage, template) {
43549
43557
  state
43550
43558
  };
43551
43559
  const output2 = await stage.execute(context);
43560
+ if (!output2.success) {
43561
+ throw new StageFailureError(stage.id, output2.error);
43562
+ }
43552
43563
  return { [output2.stateKey]: output2.value };
43553
43564
  };
43554
43565
  }
@@ -43620,6 +43631,20 @@ async function executeAndReport(task, template, graph, options, startTime) {
43620
43631
  emitPipelineStageEvent(template.id, "pipeline", "failed", { error: result.error.message });
43621
43632
  return buildError(template.id, result.error.message, startTime);
43622
43633
  }
43634
+ const failures = describeFailedNodes(result.value.nodeResults);
43635
+ if (failures !== null) {
43636
+ emitPipelineStageEvent(template.id, "pipeline", "failed", { error: failures });
43637
+ return {
43638
+ success: false,
43639
+ templateId: template.id,
43640
+ stepsExecuted: result.value.stepsExecuted,
43641
+ durationMs,
43642
+ // Keep whatever earlier stages produced — callers inspect finalState to
43643
+ // see how far the run got before it failed.
43644
+ finalState: result.value.finalState,
43645
+ error: failures
43646
+ };
43647
+ }
43623
43648
  emitPipelineStageEvent(template.id, "pipeline", "completed", { durationMs });
43624
43649
  return {
43625
43650
  success: true,
@@ -43629,6 +43654,12 @@ async function executeAndReport(task, template, graph, options, startTime) {
43629
43654
  finalState: result.value.finalState
43630
43655
  };
43631
43656
  }
43657
+ function describeFailedNodes(nodeResults) {
43658
+ const failed = nodeResults.filter((n) => n.status === "failed");
43659
+ if (failed.length === 0) return null;
43660
+ const detail = failed.map((n) => `${n.nodeId}: ${n.error ?? "no error message"}`).join("; ");
43661
+ return `${String(failed.length)} stage(s) failed \u2014 ${detail}`;
43662
+ }
43632
43663
  function resolveEffectiveTemplate(template, options) {
43633
43664
  if (options?.dryRun !== true) return template;
43634
43665
  if (template.dryRunStopAfter === void 0) return template;
@@ -43848,7 +43879,7 @@ async function tryIssueTriage(task) {
43848
43879
  try {
43849
43880
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
43850
43881
  if (issueMatch === null) return null;
43851
- const { createIssueTriage } = await import("./issue-triage-P3UA4CEX.js");
43882
+ const { createIssueTriage } = await import("./issue-triage-JCGAF2P3.js");
43852
43883
  const triage = createIssueTriage();
43853
43884
  const owner = issueMatch[1] ?? "";
43854
43885
  const num = issueMatch[2] ?? "";
@@ -43876,7 +43907,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
43876
43907
  ]);
43877
43908
  async function classifyWithLLM(task) {
43878
43909
  try {
43879
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-6SPKMPEG.js");
43910
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-3AW3OHAY.js");
43880
43911
  const prompt = [
43881
43912
  "Classify this task into exactly one pipeline template.",
43882
43913
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -45517,7 +45548,7 @@ var memoryInitPromise = null;
45517
45548
  async function initPipelineMemory() {
45518
45549
  if (cachedMemory !== null) return cachedMemory;
45519
45550
  try {
45520
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-GZCB372F.js");
45551
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-2QINLWDR.js");
45521
45552
  const { getLearningDir } = await import("./learning-persistence-6D5GGT7D.js");
45522
45553
  const mem = createSessionMemory2(getLearningDir());
45523
45554
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -45579,7 +45610,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
45579
45610
  callRecord(routingMemoryCache);
45580
45611
  return;
45581
45612
  }
45582
- routingMemoryInitPromise ??= import("./routing-memory-XGZ6T7GS.js").then(({ createRoutingMemory }) => {
45613
+ routingMemoryInitPromise ??= import("./routing-memory-ZZKVDP2K.js").then(({ createRoutingMemory }) => {
45583
45614
  routingMemoryCache ??= createRoutingMemory();
45584
45615
  return routingMemoryCache;
45585
45616
  }).catch((error) => {
@@ -45613,7 +45644,7 @@ ${text}` : "";
45613
45644
  }
45614
45645
  async function getWeatherContext() {
45615
45646
  try {
45616
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-MZMFDIDX.js");
45647
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-3FB5MXHV.js");
45617
45648
  const report = generateWeatherReport2({ includeAdaptive: true });
45618
45649
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
45619
45650
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -45631,7 +45662,7 @@ ${lines}
45631
45662
  }
45632
45663
  async function getMemoryContext(task) {
45633
45664
  try {
45634
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-GZCB372F.js");
45665
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-2QINLWDR.js");
45635
45666
  const { getLearningDir } = await import("./learning-persistence-6D5GGT7D.js");
45636
45667
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
45637
45668
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -45746,7 +45777,7 @@ ${contextBlock}`;
45746
45777
  const strategy = config.votingStrategy ?? "higher_order";
45747
45778
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
45748
45779
  try {
45749
- const { executeVoting } = await import("./consensus-vote-PBHH6JW6.js");
45780
+ const { executeVoting } = await import("./consensus-vote-KTWHGAOH.js");
45750
45781
  const votingResult = await executeVoting(
45751
45782
  {
45752
45783
  proposal: buildVoteProposal(plan, research),
@@ -46187,7 +46218,7 @@ async function searchCodebaseForTask(task) {
46187
46218
  }
46188
46219
  async function queryResearchRegistry(task) {
46189
46220
  try {
46190
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-USLAWOD2.js");
46221
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-J4Z7MY7X.js");
46191
46222
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
46192
46223
  if (topic === void 0) return null;
46193
46224
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -46258,7 +46289,7 @@ function createScanStageWrapper() {
46258
46289
  try {
46259
46290
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
46260
46291
  if (slug !== void 0) {
46261
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-5EPAQMIO.js");
46292
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-C5RDE3QO.js");
46262
46293
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
46263
46294
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
46264
46295
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -49230,7 +49261,7 @@ var GitHubTaskTracker = class {
49230
49261
  cachedProvider = null;
49231
49262
  async getProvider() {
49232
49263
  if (this.cachedProvider !== null) return this.cachedProvider;
49233
- const { createScmProvider } = await import("./factory-2UAMVT6O.js");
49264
+ const { createScmProvider } = await import("./factory-PIXCR3PF.js");
49234
49265
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
49235
49266
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
49236
49267
  this.cachedProvider = result.value;
@@ -49922,6 +49953,18 @@ async function executeGoal(input, opts = {}) {
49922
49953
  result: dispatch.result
49923
49954
  };
49924
49955
  }
49956
+ function detectEngineFailure(result) {
49957
+ if (typeof result !== "object" || result === null) return null;
49958
+ const record = result;
49959
+ if (record["success"] === false) {
49960
+ const detail = typeof record["error"] === "string" ? record["error"] : "no error message";
49961
+ return `Engine reported failure: ${detail}`;
49962
+ }
49963
+ if (record["completed"] === false) {
49964
+ return "Engine reported failure: the dev pipeline did not complete";
49965
+ }
49966
+ return null;
49967
+ }
49925
49968
  async function executeRunBody(input, logger58, trustTier, gatewayAdapters) {
49926
49969
  try {
49927
49970
  const exec2 = await executeGoal(input, {
@@ -49934,6 +49977,14 @@ async function executeRunBody(input, logger58, trustTier, gatewayAdapters) {
49934
49977
  strategy: exec2.strategy,
49935
49978
  durationMs: exec2.durationMs
49936
49979
  });
49980
+ const engineFailure = detectEngineFailure(exec2.result);
49981
+ if (engineFailure !== null) {
49982
+ logger58.warn("run: engine reported failure", {
49983
+ decisionId: exec2.decisionId,
49984
+ strategy: exec2.strategy
49985
+ });
49986
+ return toolStructuredError({ errorCategory: "business", message: engineFailure });
49987
+ }
49937
49988
  return toolSuccess(JSON.stringify(exec2, null, 2));
49938
49989
  } catch (err2) {
49939
49990
  const noExecutor = err2 instanceof MetaDispatchError && err2.code === "no_executor";
@@ -49944,6 +49995,13 @@ async function executeRunBody(input, logger58, trustTier, gatewayAdapters) {
49944
49995
  });
49945
49996
  }
49946
49997
  }
49998
+ async function executeRunBodyOrThrow(input, logger58, trustTier, gatewayAdapters) {
49999
+ const result = await executeRunBody(input, logger58, trustTier, gatewayAdapters);
50000
+ if (result.isError === true) {
50001
+ throw new Error(result.content[0]?.text ?? "run failed");
50002
+ }
50003
+ return result;
50004
+ }
49947
50005
  async function runHandler(args, logger58, trustTier, gatewayAdapters) {
49948
50006
  const parsed = RunInputSchema.safeParse(args);
49949
50007
  if (!parsed.success) {
@@ -49959,7 +50017,7 @@ async function runHandler(args, logger58, trustTier, gatewayAdapters) {
49959
50017
  toolName: "run",
49960
50018
  input,
49961
50019
  freshJobId: () => `rn-${randomUUID17()}`,
49962
- run: () => executeRunBody(input, logger58, trustTier, gatewayAdapters),
50020
+ run: () => executeRunBodyOrThrow(input, logger58, trustTier, gatewayAdapters),
49963
50021
  logger: logger58
49964
50022
  });
49965
50023
  }
@@ -50037,7 +50095,7 @@ async function probeSource(source, includeModelIds) {
50037
50095
  }
50038
50096
  }
50039
50097
  async function defaultSources(includeOpenRouter) {
50040
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-E2QXGLFH.js");
50098
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-XSRDHJ34.js");
50041
50099
  const adapters = createAllAdapters2();
50042
50100
  return buildDefaultModelSources(adapters, { includeOpenRouter });
50043
50101
  }
@@ -54057,4 +54115,4 @@ export {
54057
54115
  shutdownFeedbackSubscriber,
54058
54116
  createEventBusBridge
54059
54117
  };
54060
- //# sourceMappingURL=chunk-NN6BBKJD.js.map
54118
+ //# sourceMappingURL=chunk-3PXN234X.js.map