nexus-agents 2.104.0 → 2.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/{child-mcp-config-XOIMNU6R.js → child-mcp-config-KP2XBOIB.js} +2 -2
  2. package/dist/{chunk-WDVUKSIQ.js → chunk-2DHISFDY.js} +90 -49
  3. package/dist/chunk-2DHISFDY.js.map +1 -0
  4. package/dist/{chunk-FVJ2LM2G.js → chunk-2J6HSR6X.js} +2 -2
  5. package/dist/{chunk-47FQ3BU7.js → chunk-3YWBA5GE.js} +24 -9
  6. package/dist/chunk-3YWBA5GE.js.map +1 -0
  7. package/dist/{chunk-46GXDOWQ.js → chunk-5UU6BQJ3.js} +2 -2
  8. package/dist/{chunk-M54LGBTY.js → chunk-75NKH2VD.js} +4 -4
  9. package/dist/{chunk-ETGNZ6H2.js → chunk-BEWKRRNZ.js} +2 -2
  10. package/dist/{chunk-I5QZ3PVT.js → chunk-BJQA6DSN.js} +2 -2
  11. package/dist/{chunk-WT46JLBD.js → chunk-CNIRLXNH.js} +3 -3
  12. package/dist/{chunk-TFRXRKU5.js → chunk-CUX775NF.js} +4 -4
  13. package/dist/{chunk-UFTQXDUA.js → chunk-DLFJQ6W6.js} +2 -2
  14. package/dist/{chunk-I7UDM43R.js → chunk-DOIOSEDU.js} +118 -4
  15. package/dist/chunk-DOIOSEDU.js.map +1 -0
  16. package/dist/{chunk-2B7332HE.js → chunk-E3JGMUGY.js} +4 -4
  17. package/dist/{chunk-IFO52GSQ.js → chunk-EBJJGYOQ.js} +3 -3
  18. package/dist/{chunk-VIHUOFIT.js → chunk-GMHCPEHS.js} +1418 -176
  19. package/dist/chunk-GMHCPEHS.js.map +1 -0
  20. package/dist/{chunk-2MM5MC45.js → chunk-GRHCGUBQ.js} +9 -1034
  21. package/dist/chunk-GRHCGUBQ.js.map +1 -0
  22. package/dist/{chunk-LM3BH55G.js → chunk-HNBA265P.js} +81 -44
  23. package/dist/{chunk-LM3BH55G.js.map → chunk-HNBA265P.js.map} +1 -1
  24. package/dist/{chunk-ABNHZEKO.js → chunk-KMASI7UC.js} +2 -2
  25. package/dist/{chunk-XWOLOXKN.js → chunk-KZWJ52HH.js} +2 -2
  26. package/dist/{chunk-A5UJBVCQ.js → chunk-M6JRWJZW.js} +2 -2
  27. package/dist/{chunk-RZ4A2RRN.js → chunk-MYXT7VPF.js} +2 -2
  28. package/dist/{chunk-7RE2S46N.js → chunk-OP4VPTQZ.js} +3 -3
  29. package/dist/{chunk-P5XUYJBO.js → chunk-PRPHNXUM.js} +3 -3
  30. package/dist/{chunk-4KTPDSFZ.js → chunk-R2VTDJO5.js} +5 -5
  31. package/dist/{chunk-5YMSKNUG.js → chunk-RWAI74H6.js} +9 -9
  32. package/dist/{chunk-VCLQMXVJ.js → chunk-SFIGDPAE.js} +3 -3
  33. package/dist/{chunk-3TZUEGNB.js → chunk-U3Y6AWG5.js} +2 -2
  34. package/dist/{chunk-VGHPMNDR.js → chunk-VHIRBRZF.js} +2 -2
  35. package/dist/{chunk-PGSXRUH5.js → chunk-VIXH6P3Y.js} +3 -3
  36. package/dist/{chunk-E6FIVDNH.js → chunk-WPF7G56I.js} +2 -2
  37. package/dist/{chunk-K7OKFTCH.js → chunk-YL7SS6JZ.js} +2 -2
  38. package/dist/{cli-circuit-breaker-QMCG6JGV.js → cli-circuit-breaker-PE3AYA56.js} +4 -4
  39. package/dist/cli.js +42 -42
  40. package/dist/cli.js.map +1 -1
  41. package/dist/{composite-router-ZX64CEVG.js → composite-router-GXLSZZQU.js} +2 -2
  42. package/dist/{consensus-vote-7HEHHH5S.js → consensus-vote-ZS4IDC5T.js} +12 -13
  43. package/dist/{context-retriever-J7DIPQUO.js → context-retriever-52RLYDVE.js} +6 -6
  44. package/dist/{doctor-deep-ITSJV2RH.js → doctor-deep-3463IMLO.js} +3 -3
  45. package/dist/{expert-bridge-7R4AU4DE.js → expert-bridge-OBOSFIHR.js} +6 -4
  46. package/dist/factory-SM7AIAFL.js +21 -0
  47. package/dist/{factory-Y2RF33UB.js → factory-VXD4XO7R.js} +5 -5
  48. package/dist/{improvement-review-NBVWPFXR.js → improvement-review-Y4DSR2AF.js} +4 -4
  49. package/dist/index.d.ts +51 -13
  50. package/dist/index.js +61 -63
  51. package/dist/index.js.map +1 -1
  52. package/dist/{init-opencode-QPHX4KVI.js → init-opencode-3FW2TAOR.js} +5 -5
  53. package/dist/{issue-triage-D5ADEG3V.js → issue-triage-KAVEQE5V.js} +5 -5
  54. package/dist/{pr-reviewer-helpers-R7U4EI2P.js → pr-reviewer-helpers-KORDKN6O.js} +4 -4
  55. package/dist/{registry-command-CFNNKJ5S.js → registry-command-WZK7PYVZ.js} +2 -2
  56. package/dist/{repo-security-plan-2AXFDREW.js → repo-security-plan-EO5R3S7C.js} +3 -3
  57. package/dist/{research-helpers-synthesize-YTIDNKBF.js → research-helpers-synthesize-6HFD32XJ.js} +3 -3
  58. package/dist/{routing-memory-YLX6QNY2.js → routing-memory-XPJT3Y6Z.js} +2 -2
  59. package/dist/{session-memory-Y5MUOY56.js → session-memory-TTE5YPV4.js} +3 -3
  60. package/dist/{setup-command-AS65DYIU.js → setup-command-VVHIWCD4.js} +11 -10
  61. package/dist/{setup-config-5J3R7RET.js → setup-config-NEM4KPUA.js} +3 -3
  62. package/dist/{setup-custom-api-MJ24PJA7.js → setup-custom-api-GMMHEJJ5.js} +4 -6
  63. package/dist/{setup-custom-api-MJ24PJA7.js.map → setup-custom-api-GMMHEJJ5.js.map} +1 -1
  64. package/dist/{tool-memory-YNMRI3PZ.js → tool-memory-TTLQ7MHZ.js} +5 -5
  65. package/dist/{weather-report-GZRODMYW.js → weather-report-KGAHUQFF.js} +2 -2
  66. package/package.json +1 -1
  67. package/dist/chunk-2MM5MC45.js.map +0 -1
  68. package/dist/chunk-47FQ3BU7.js.map +0 -1
  69. package/dist/chunk-BLMWODJG.js +0 -120
  70. package/dist/chunk-BLMWODJG.js.map +0 -1
  71. package/dist/chunk-I7UDM43R.js.map +0 -1
  72. package/dist/chunk-VIHUOFIT.js.map +0 -1
  73. package/dist/chunk-WDVUKSIQ.js.map +0 -1
  74. package/dist/factory-UZQ3RGFQ.js +0 -19
  75. /package/dist/{child-mcp-config-XOIMNU6R.js.map → child-mcp-config-KP2XBOIB.js.map} +0 -0
  76. /package/dist/{chunk-FVJ2LM2G.js.map → chunk-2J6HSR6X.js.map} +0 -0
  77. /package/dist/{chunk-46GXDOWQ.js.map → chunk-5UU6BQJ3.js.map} +0 -0
  78. /package/dist/{chunk-M54LGBTY.js.map → chunk-75NKH2VD.js.map} +0 -0
  79. /package/dist/{chunk-ETGNZ6H2.js.map → chunk-BEWKRRNZ.js.map} +0 -0
  80. /package/dist/{chunk-I5QZ3PVT.js.map → chunk-BJQA6DSN.js.map} +0 -0
  81. /package/dist/{chunk-WT46JLBD.js.map → chunk-CNIRLXNH.js.map} +0 -0
  82. /package/dist/{chunk-TFRXRKU5.js.map → chunk-CUX775NF.js.map} +0 -0
  83. /package/dist/{chunk-UFTQXDUA.js.map → chunk-DLFJQ6W6.js.map} +0 -0
  84. /package/dist/{chunk-2B7332HE.js.map → chunk-E3JGMUGY.js.map} +0 -0
  85. /package/dist/{chunk-IFO52GSQ.js.map → chunk-EBJJGYOQ.js.map} +0 -0
  86. /package/dist/{chunk-ABNHZEKO.js.map → chunk-KMASI7UC.js.map} +0 -0
  87. /package/dist/{chunk-XWOLOXKN.js.map → chunk-KZWJ52HH.js.map} +0 -0
  88. /package/dist/{chunk-A5UJBVCQ.js.map → chunk-M6JRWJZW.js.map} +0 -0
  89. /package/dist/{chunk-RZ4A2RRN.js.map → chunk-MYXT7VPF.js.map} +0 -0
  90. /package/dist/{chunk-7RE2S46N.js.map → chunk-OP4VPTQZ.js.map} +0 -0
  91. /package/dist/{chunk-P5XUYJBO.js.map → chunk-PRPHNXUM.js.map} +0 -0
  92. /package/dist/{chunk-4KTPDSFZ.js.map → chunk-R2VTDJO5.js.map} +0 -0
  93. /package/dist/{chunk-5YMSKNUG.js.map → chunk-RWAI74H6.js.map} +0 -0
  94. /package/dist/{chunk-VCLQMXVJ.js.map → chunk-SFIGDPAE.js.map} +0 -0
  95. /package/dist/{chunk-3TZUEGNB.js.map → chunk-U3Y6AWG5.js.map} +0 -0
  96. /package/dist/{chunk-VGHPMNDR.js.map → chunk-VHIRBRZF.js.map} +0 -0
  97. /package/dist/{chunk-PGSXRUH5.js.map → chunk-VIXH6P3Y.js.map} +0 -0
  98. /package/dist/{chunk-E6FIVDNH.js.map → chunk-WPF7G56I.js.map} +0 -0
  99. /package/dist/{chunk-K7OKFTCH.js.map → chunk-YL7SS6JZ.js.map} +0 -0
  100. /package/dist/{cli-circuit-breaker-QMCG6JGV.js.map → cli-circuit-breaker-PE3AYA56.js.map} +0 -0
  101. /package/dist/{composite-router-ZX64CEVG.js.map → composite-router-GXLSZZQU.js.map} +0 -0
  102. /package/dist/{consensus-vote-7HEHHH5S.js.map → consensus-vote-ZS4IDC5T.js.map} +0 -0
  103. /package/dist/{context-retriever-J7DIPQUO.js.map → context-retriever-52RLYDVE.js.map} +0 -0
  104. /package/dist/{doctor-deep-ITSJV2RH.js.map → doctor-deep-3463IMLO.js.map} +0 -0
  105. /package/dist/{expert-bridge-7R4AU4DE.js.map → expert-bridge-OBOSFIHR.js.map} +0 -0
  106. /package/dist/{factory-UZQ3RGFQ.js.map → factory-SM7AIAFL.js.map} +0 -0
  107. /package/dist/{factory-Y2RF33UB.js.map → factory-VXD4XO7R.js.map} +0 -0
  108. /package/dist/{improvement-review-NBVWPFXR.js.map → improvement-review-Y4DSR2AF.js.map} +0 -0
  109. /package/dist/{init-opencode-QPHX4KVI.js.map → init-opencode-3FW2TAOR.js.map} +0 -0
  110. /package/dist/{issue-triage-D5ADEG3V.js.map → issue-triage-KAVEQE5V.js.map} +0 -0
  111. /package/dist/{pr-reviewer-helpers-R7U4EI2P.js.map → pr-reviewer-helpers-KORDKN6O.js.map} +0 -0
  112. /package/dist/{registry-command-CFNNKJ5S.js.map → registry-command-WZK7PYVZ.js.map} +0 -0
  113. /package/dist/{repo-security-plan-2AXFDREW.js.map → repo-security-plan-EO5R3S7C.js.map} +0 -0
  114. /package/dist/{research-helpers-synthesize-YTIDNKBF.js.map → research-helpers-synthesize-6HFD32XJ.js.map} +0 -0
  115. /package/dist/{routing-memory-YLX6QNY2.js.map → routing-memory-XPJT3Y6Z.js.map} +0 -0
  116. /package/dist/{session-memory-Y5MUOY56.js.map → session-memory-TTE5YPV4.js.map} +0 -0
  117. /package/dist/{setup-command-AS65DYIU.js.map → setup-command-VVHIWCD4.js.map} +0 -0
  118. /package/dist/{setup-config-5J3R7RET.js.map → setup-config-NEM4KPUA.js.map} +0 -0
  119. /package/dist/{tool-memory-YNMRI3PZ.js.map → tool-memory-TTLQ7MHZ.js.map} +0 -0
  120. /package/dist/{weather-report-GZRODMYW.js.map → weather-report-KGAHUQFF.js.map} +0 -0
@@ -6,10 +6,10 @@ import {
6
6
  import {
7
7
  getTokenEnvVars,
8
8
  resolveToken
9
- } from "./chunk-46GXDOWQ.js";
9
+ } from "./chunk-5UU6BQJ3.js";
10
10
  import {
11
11
  executeExpert
12
- } from "./chunk-47FQ3BU7.js";
12
+ } from "./chunk-3YWBA5GE.js";
13
13
  import {
14
14
  EventTopics,
15
15
  JobStatusSchema,
@@ -30,7 +30,7 @@ import {
30
30
  writeJobComplete,
31
31
  writeJobFailed,
32
32
  writeJobPending
33
- } from "./chunk-2MM5MC45.js";
33
+ } from "./chunk-GRHCGUBQ.js";
34
34
  import {
35
35
  REGISTRY_PATH,
36
36
  getProjectRoot,
@@ -39,19 +39,19 @@ import {
39
39
  normalizeTopicToCanonical,
40
40
  savePapersRegistry,
41
41
  synthesizeResearch
42
- } from "./chunk-VGHPMNDR.js";
42
+ } from "./chunk-VHIRBRZF.js";
43
43
  import {
44
44
  IssueTriage,
45
45
  createAuditTrail,
46
46
  createGraphAuditBridge
47
- } from "./chunk-TFRXRKU5.js";
47
+ } from "./chunk-CUX775NF.js";
48
48
  import {
49
49
  resolveEnvMode,
50
50
  sanitizeInput
51
- } from "./chunk-I5QZ3PVT.js";
51
+ } from "./chunk-BJQA6DSN.js";
52
52
  import {
53
53
  withPrerequisite
54
- } from "./chunk-VCLQMXVJ.js";
54
+ } from "./chunk-SFIGDPAE.js";
55
55
  import {
56
56
  NOOP_NOTIFIER,
57
57
  RateLimiter,
@@ -71,10 +71,10 @@ import {
71
71
  withAccessPolicy,
72
72
  withProgressHeartbeat,
73
73
  wrapToolWithTimeout
74
- } from "./chunk-XWOLOXKN.js";
74
+ } from "./chunk-KZWJ52HH.js";
75
75
  import {
76
76
  generateSecurityPlan
77
- } from "./chunk-E6FIVDNH.js";
77
+ } from "./chunk-WPF7G56I.js";
78
78
  import {
79
79
  analyzeGitHubRepo
80
80
  } from "./chunk-HFOQKCD2.js";
@@ -82,21 +82,18 @@ import {
82
82
  getContextForTask,
83
83
  inferTaskCategory,
84
84
  summarizeContextForPrompt
85
- } from "./chunk-IFO52GSQ.js";
85
+ } from "./chunk-EBJJGYOQ.js";
86
86
  import {
87
87
  DEFAULT_RELEVANCE_CONFIG,
88
88
  MemoryImportance,
89
89
  calculateTextJaccardSimilarity,
90
90
  getToolMemory
91
- } from "./chunk-M54LGBTY.js";
91
+ } from "./chunk-75NKH2VD.js";
92
92
  import {
93
93
  DEFAULT_TASK_TTL_MS,
94
94
  DEFAULT_TOOL_RATE_LIMITS,
95
95
  clampTaskTtl
96
- } from "./chunk-5YMSKNUG.js";
97
- import {
98
- DEFAULTS
99
- } from "./chunk-I7UDM43R.js";
96
+ } from "./chunk-RWAI74H6.js";
100
97
  import {
101
98
  resolveInsideRoot
102
99
  } from "./chunk-NUBSJGQZ.js";
@@ -112,16 +109,19 @@ import {
112
109
  getAvailableClis,
113
110
  sleep,
114
111
  withTimeout
115
- } from "./chunk-VIHUOFIT.js";
112
+ } from "./chunk-GMHCPEHS.js";
113
+ import {
114
+ DEFAULTS
115
+ } from "./chunk-DOIOSEDU.js";
116
116
  import {
117
117
  getAvailabilityCache,
118
118
  getCliForModelId,
119
119
  resolveFallback
120
- } from "./chunk-RZ4A2RRN.js";
120
+ } from "./chunk-MYXT7VPF.js";
121
121
  import {
122
122
  generateHyphenId,
123
123
  generateUUID
124
- } from "./chunk-A5UJBVCQ.js";
124
+ } from "./chunk-M6JRWJZW.js";
125
125
  import {
126
126
  BUILT_IN_EXPERTS,
127
127
  BuiltInExpertTypeSchema,
@@ -133,7 +133,7 @@ import {
133
133
  } from "./chunk-PQHVC4BD.js";
134
134
  import {
135
135
  createSessionMemory
136
- } from "./chunk-UFTQXDUA.js";
136
+ } from "./chunk-DLFJQ6W6.js";
137
137
  import {
138
138
  AGENT_ROUTER_TIMEOUTS,
139
139
  API_TIMEOUTS,
@@ -205,9 +205,10 @@ import {
205
205
  ok,
206
206
  resolveModelIdentity,
207
207
  resolveModelIdentitySync,
208
+ routingArmDisplaySlot,
208
209
  toExpertTaskAnalysisResult,
209
210
  withStep
210
- } from "./chunk-WDVUKSIQ.js";
211
+ } from "./chunk-2DHISFDY.js";
211
212
  import {
212
213
  nexusDataPath,
213
214
  nexusDataPathEnsure
@@ -27065,7 +27066,7 @@ async function populateUnifiedContextOnState(state) {
27065
27066
  try {
27066
27067
  const taskCandidate = state["task"];
27067
27068
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
27068
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-J7DIPQUO.js");
27069
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-52RLYDVE.js");
27069
27070
  const ctx = await getContextForTask2({
27070
27071
  task: taskCandidate,
27071
27072
  category: inferTaskCategory2(taskCandidate),
@@ -28218,6 +28219,22 @@ function emitStageFailed(options) {
28218
28219
  error: options.error
28219
28220
  });
28220
28221
  }
28222
+ function emitModelCalled(options) {
28223
+ const bus = resolveBus(options.bus);
28224
+ if (bus === void 0) return;
28225
+ bus.emit({
28226
+ type: "model.called",
28227
+ timestamp: Date.now(),
28228
+ executionId: options.executionId,
28229
+ cli: options.cli,
28230
+ model: options.model,
28231
+ tokensIn: options.tokensIn,
28232
+ tokensOut: options.tokensOut,
28233
+ durationMs: options.durationMs,
28234
+ ...options.agentId !== void 0 && { agentId: options.agentId },
28235
+ ...options.role !== void 0 && { role: options.role }
28236
+ });
28237
+ }
28221
28238
  function emitPipelineStageEvent(prefix, stage, status, details) {
28222
28239
  const executionId = `${prefix}-${stage}`;
28223
28240
  if (status === "started") {
@@ -34728,7 +34745,7 @@ var DEFAULT_CAPABILITIES2 = {
34728
34745
  cost: 6
34729
34746
  };
34730
34747
  function mapCompositeDecisionToOutput(decision, estimatedTokens) {
34731
- const modelName = decision.model ?? cliNameToModel(decision.cliName);
34748
+ const modelName = decision.model ?? cliNameToModel(routingArmDisplaySlot(decision.cliName));
34732
34749
  const caps = MODEL_CAPABILITIES2[modelName] ?? DEFAULT_CAPABILITIES2;
34733
34750
  return {
34734
34751
  recommended_model: modelName,
@@ -34736,7 +34753,7 @@ function mapCompositeDecisionToOutput(decision, estimatedTokens) {
34736
34753
  capabilities: caps,
34737
34754
  estimated_tokens: estimatedTokens,
34738
34755
  alternatives: decision.alternatives.slice(0, 3).map((alt) => ({
34739
- model: cliNameToModel(alt),
34756
+ model: cliNameToModel(routingArmDisplaySlot(alt)),
34740
34757
  score: decision.topsisScore ?? 0.7,
34741
34758
  tradeoff: "alternative option"
34742
34759
  }))
@@ -42814,7 +42831,7 @@ async function tryIssueTriage(task) {
42814
42831
  try {
42815
42832
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
42816
42833
  if (issueMatch === null) return null;
42817
- const { createIssueTriage } = await import("./issue-triage-D5ADEG3V.js");
42834
+ const { createIssueTriage } = await import("./issue-triage-KAVEQE5V.js");
42818
42835
  const triage = createIssueTriage();
42819
42836
  const owner = issueMatch[1] ?? "";
42820
42837
  const num = issueMatch[2] ?? "";
@@ -42842,7 +42859,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
42842
42859
  ]);
42843
42860
  async function classifyWithLLM(task) {
42844
42861
  try {
42845
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-7R4AU4DE.js");
42862
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-OBOSFIHR.js");
42846
42863
  const prompt = [
42847
42864
  "Classify this task into exactly one pipeline template.",
42848
42865
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -43729,7 +43746,7 @@ function recordOutcome(args) {
43729
43746
  logger40.debug("Failed to record outcome", { taskId: args.taskId, error: String(error) });
43730
43747
  }
43731
43748
  }
43732
- async function runExpert(guard, expertType, prompt) {
43749
+ async function runExpert(guard, expertType, prompt, executionId) {
43733
43750
  if (guard.isExhausted()) {
43734
43751
  return {
43735
43752
  success: false,
@@ -43741,14 +43758,28 @@ async function runExpert(guard, expertType, prompt) {
43741
43758
  }
43742
43759
  const result = await executeExpert(expertType, prompt);
43743
43760
  guard.record(result.tokensUsed);
43761
+ maybeEmitModelCalled(executionId, result);
43744
43762
  return result;
43745
43763
  }
43764
+ function maybeEmitModelCalled(executionId, result) {
43765
+ if (!result.success || executionId === void 0) return;
43766
+ if (result.cli === void 0 || result.model === void 0) return;
43767
+ if (result.tokensIn === void 0 || result.tokensOut === void 0) return;
43768
+ emitModelCalled({
43769
+ executionId,
43770
+ cli: result.cli,
43771
+ model: result.model,
43772
+ tokensIn: result.tokensIn,
43773
+ tokensOut: result.tokensOut,
43774
+ durationMs: result.durationMs
43775
+ });
43776
+ }
43746
43777
  var cachedMemory = null;
43747
43778
  var memoryInitPromise = null;
43748
43779
  async function initPipelineMemory() {
43749
43780
  if (cachedMemory !== null) return cachedMemory;
43750
43781
  try {
43751
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-Y5MUOY56.js");
43782
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-TTE5YPV4.js");
43752
43783
  const { getLearningDir } = await import("./learning-persistence-UKPO7RYK.js");
43753
43784
  const mem = createSessionMemory2(getLearningDir());
43754
43785
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -43805,7 +43836,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0)
43805
43836
  callRecord(routingMemoryCache);
43806
43837
  return;
43807
43838
  }
43808
- routingMemoryInitPromise ??= import("./routing-memory-YLX6QNY2.js").then(({ createRoutingMemory }) => {
43839
+ routingMemoryInitPromise ??= import("./routing-memory-XPJT3Y6Z.js").then(({ createRoutingMemory }) => {
43809
43840
  routingMemoryCache ??= createRoutingMemory();
43810
43841
  return routingMemoryCache;
43811
43842
  }).catch((error) => {
@@ -43839,7 +43870,7 @@ ${text}` : "";
43839
43870
  }
43840
43871
  async function getWeatherContext() {
43841
43872
  try {
43842
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-GZRODMYW.js");
43873
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-KGAHUQFF.js");
43843
43874
  const report = generateWeatherReport2({ includeAdaptive: true });
43844
43875
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
43845
43876
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -43857,7 +43888,7 @@ ${lines}
43857
43888
  }
43858
43889
  async function getMemoryContext(task) {
43859
43890
  try {
43860
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-Y5MUOY56.js");
43891
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-TTE5YPV4.js");
43861
43892
  const { getLearningDir } = await import("./learning-persistence-UKPO7RYK.js");
43862
43893
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
43863
43894
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -43899,14 +43930,16 @@ function createAgentStages(config = {}) {
43899
43930
  "research",
43900
43931
  `Use research_discover to find papers and repos related to:
43901
43932
 
43902
- ${task}${memoryCtx}`
43933
+ ${task}${memoryCtx}`,
43934
+ "research"
43903
43935
  );
43904
43936
  const analyze = await runExpert(
43905
43937
  guard,
43906
43938
  "research",
43907
43939
  `Use research_analyze focus=gaps to identify what is missing for:
43908
43940
 
43909
- ${task}`
43941
+ ${task}`,
43942
+ "research"
43910
43943
  );
43911
43944
  const combined = [discover.text, analyze.text].filter(Boolean).join("\n\n");
43912
43945
  const totalMs = discover.durationMs + analyze.durationMs;
@@ -43948,7 +43981,7 @@ ${task}
43948
43981
 
43949
43982
  ${contextBlock}`;
43950
43983
  await postProgress(config, "Plan", feedback !== void 0 ? "Revising..." : "Planning...");
43951
- const r = await runExpert(guard, "architecture", prompt);
43984
+ const r = await runExpert(guard, "architecture", prompt, "plan");
43952
43985
  emitStageEvent2("plan", r.success ? "completed" : "failed", { durationMs: r.durationMs });
43953
43986
  recordOutcome({
43954
43987
  taskId: "plan",
@@ -43966,7 +43999,7 @@ ${contextBlock}`;
43966
43999
  const strategy = config.votingStrategy ?? "higher_order";
43967
44000
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
43968
44001
  try {
43969
- const { executeVoting } = await import("./consensus-vote-7HEHHH5S.js");
44002
+ const { executeVoting } = await import("./consensus-vote-ZS4IDC5T.js");
43970
44003
  const votingResult = await executeVoting(
43971
44004
  {
43972
44005
  proposal: buildVoteProposal(plan, research),
@@ -44023,7 +44056,8 @@ ${contextBlock}`;
44023
44056
  `Decompose into tasks.
44024
44057
  Return JSON: [{id,title,description,assignedTo}]
44025
44058
 
44026
- ${plan}`
44059
+ ${plan}`,
44060
+ "decompose"
44027
44061
  );
44028
44062
  const tasks = parseTasksFromResponse(r.text, plan);
44029
44063
  emitStageEvent2("decompose", "completed", { durationMs: r.durationMs });
@@ -44049,7 +44083,8 @@ QA feedback: ${task.feedback}` : "";
44049
44083
  `Implement:
44050
44084
 
44051
44085
  ${task.title}
44052
- ${task.description}${fb}`
44086
+ ${task.description}${fb}`,
44087
+ task.id
44053
44088
  );
44054
44089
  emitStageEvent2(`impl-${task.id}`, r.success ? "completed" : "failed", {
44055
44090
  durationMs: r.durationMs
@@ -44078,7 +44113,8 @@ Task: ${task.title}
44078
44113
  Impl:
44079
44114
  ${implementation.slice(0, 3e3)}
44080
44115
 
44081
- Verdict: PASS/NEEDS_WORK/REJECT`
44116
+ Verdict: PASS/NEEDS_WORK/REJECT`,
44117
+ task.id
44082
44118
  );
44083
44119
  const review = parseQaFromResponse(r.text);
44084
44120
  emitStageEvent2(`qa-${task.id}`, review.verdict === "pass" ? "completed" : "failed", {
@@ -44961,7 +44997,7 @@ async function searchCodebaseForTask(task) {
44961
44997
  }
44962
44998
  async function queryResearchRegistry(task) {
44963
44999
  try {
44964
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-YTIDNKBF.js");
45000
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-6HFD32XJ.js");
44965
45001
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
44966
45002
  if (topic === void 0) return null;
44967
45003
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -45032,7 +45068,7 @@ function createScanStageWrapper() {
45032
45068
  try {
45033
45069
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
45034
45070
  if (slug !== void 0) {
45035
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-2AXFDREW.js");
45071
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-EO5R3S7C.js");
45036
45072
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
45037
45073
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
45038
45074
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -46558,7 +46594,7 @@ async function probeSource(source, includeModelIds) {
46558
46594
  }
46559
46595
  }
46560
46596
  async function defaultSources(includeOpenRouter) {
46561
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-UZQ3RGFQ.js");
46597
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-SM7AIAFL.js");
46562
46598
  const adapters = createAllAdapters2();
46563
46599
  return buildDefaultModelSources(adapters, { includeOpenRouter });
46564
46600
  }
@@ -49000,8 +49036,9 @@ var FeedbackIntegration = class {
49000
49036
  traceId: trace,
49001
49037
  timestamp: getTimeProvider().nowIso(),
49002
49038
  routerType: getDecisiveRouterType(decision),
49003
- selectedModel: decision.cliName,
49004
- alternativeModels: decision.alternatives,
49039
+ // Persisted telemetry is slot-level; collapse the distinct arm (#3422).
49040
+ selectedModel: routingArmDisplaySlot(decision.cliName),
49041
+ alternativeModels: decision.alternatives.map(routingArmDisplaySlot),
49005
49042
  confidence: decision.confidence,
49006
49043
  reason: decision.reason,
49007
49044
  taskProfile: serializeTaskProfile(decision.taskProfile)
@@ -50172,7 +50209,7 @@ var GitHubTaskTracker = class {
50172
50209
  cachedProvider = null;
50173
50210
  async getProvider() {
50174
50211
  if (this.cachedProvider !== null) return this.cachedProvider;
50175
- const { createScmProvider } = await import("./factory-Y2RF33UB.js");
50212
+ const { createScmProvider } = await import("./factory-VXD4XO7R.js");
50176
50213
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
50177
50214
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
50178
50215
  this.cachedProvider = result.value;
@@ -50883,4 +50920,4 @@ export {
50883
50920
  detectBackend,
50884
50921
  createTaskTracker
50885
50922
  };
50886
- //# sourceMappingURL=chunk-LM3BH55G.js.map
50923
+ //# sourceMappingURL=chunk-HNBA265P.js.map