nexus-agents 4.5.1 → 4.7.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 (122) hide show
  1. package/dist/{child-mcp-config-OBOA4PE2.js → child-mcp-config-SZ7IYE3O.js} +2 -2
  2. package/dist/{chunk-TD6I5UHY.js → chunk-2MIG56ZD.js} +2 -2
  3. package/dist/{chunk-TI65NJOM.js → chunk-2ZO74IO7.js} +2 -2
  4. package/dist/{chunk-D7X2AMEB.js → chunk-3QC3IWRP.js} +2 -2
  5. package/dist/{chunk-XCUO5YUJ.js → chunk-6KPEN5OE.js} +2 -2
  6. package/dist/{chunk-34UKF4FB.js → chunk-7M566K5K.js} +3 -3
  7. package/dist/{chunk-BLY3DXM2.js → chunk-7MPLZ73P.js} +5 -5
  8. package/dist/{chunk-7BMK5VEO.js → chunk-7U5E7DJV.js} +8 -8
  9. package/dist/{chunk-7Y7UFVQ5.js → chunk-AOW5WVTT.js} +2 -2
  10. package/dist/{chunk-O32DMSG5.js → chunk-BYEBHNRS.js} +3 -3
  11. package/dist/{chunk-NH3O2D5O.js → chunk-C2DQXCIZ.js} +3 -3
  12. package/dist/{chunk-NH3O2D5O.js.map → chunk-C2DQXCIZ.js.map} +1 -1
  13. package/dist/{chunk-BAWVMEXA.js → chunk-FOBKXJMS.js} +4 -4
  14. package/dist/{chunk-NMX7AYYB.js → chunk-GBIL6A6D.js} +2 -2
  15. package/dist/{chunk-LVE7MN2F.js → chunk-GRWQU4XB.js} +6 -6
  16. package/dist/{chunk-CGJPW5BI.js → chunk-H44SVOTG.js} +74 -48
  17. package/dist/chunk-H44SVOTG.js.map +1 -0
  18. package/dist/{chunk-YY67CP2U.js → chunk-HCGUPBE3.js} +3 -3
  19. package/dist/{chunk-75K4TN5H.js → chunk-HGN5BYOW.js} +8 -8
  20. package/dist/{chunk-C6SAPXUV.js → chunk-HHRASHK4.js} +2 -2
  21. package/dist/{chunk-ESWY4Y7S.js → chunk-I5377PAC.js} +4 -4
  22. package/dist/{chunk-QNT5WS7E.js → chunk-LPPAXDV6.js} +5 -5
  23. package/dist/{chunk-5JRYCJ37.js → chunk-M5QKVRNH.js} +2 -2
  24. package/dist/{chunk-YLESXBB3.js → chunk-ND3KSSGU.js} +2 -2
  25. package/dist/{chunk-EPD5MGPB.js → chunk-PBSANZII.js} +8 -8
  26. package/dist/{chunk-ANTZOHQ6.js → chunk-RFXPWYM5.js} +5 -5
  27. package/dist/{chunk-ARTRA6YC.js → chunk-RHQNFMUW.js} +3 -3
  28. package/dist/{chunk-EYZIMY6I.js → chunk-RQ3F7KRP.js} +2 -2
  29. package/dist/{chunk-JDUTA6FI.js → chunk-S2BYGZIM.js} +2 -2
  30. package/dist/{chunk-BT6ONNFH.js → chunk-SWRXPVUQ.js} +2 -2
  31. package/dist/{chunk-6HSDJ5H6.js → chunk-V7EMWUUM.js} +2 -2
  32. package/dist/{chunk-VRJAJUUR.js → chunk-Y6C2VF2R.js} +7 -7
  33. package/dist/{chunk-KMUOL3AL.js → chunk-YAB5NYKM.js} +2 -2
  34. package/dist/{chunk-HBGA62JG.js → chunk-YMGPOFK3.js} +2 -2
  35. package/dist/{chunk-B6DNL7LG.js → chunk-YNWIXCPW.js} +4 -4
  36. package/dist/{chunk-SWUYPFXS.js → chunk-ZTQ4CHPG.js} +2 -2
  37. package/dist/{cli-circuit-breaker-TJVDSJU5.js → cli-circuit-breaker-SQHLH44A.js} +3 -3
  38. package/dist/cli.js +41 -41
  39. package/dist/{composite-router-CIC4BU6A.js → composite-router-WBT2V32V.js} +2 -2
  40. package/dist/{consensus-vote-77UCSVGM.js → consensus-vote-H6EIMQ7M.js} +16 -16
  41. package/dist/{context-retriever-CP72SNYZ.js → context-retriever-MON4VAVO.js} +8 -8
  42. package/dist/{doctor-deep-WI2ZC7Z3.js → doctor-deep-YB52D552.js} +3 -3
  43. package/dist/{doctor-live-W2KY3OIA.js → doctor-live-YCCSYF5X.js} +9 -9
  44. package/dist/{expert-bridge-HGBVHVJI.js → expert-bridge-MLP3CVUY.js} +4 -4
  45. package/dist/{factory-LEYEWZ4Y.js → factory-BOSRE2JV.js} +5 -5
  46. package/dist/{factory-GEBBVQHZ.js → factory-YRLWFERP.js} +9 -9
  47. package/dist/{improvement-review-XN2GZX3V.js → improvement-review-LTOEMHMZ.js} +5 -5
  48. package/dist/index.d.ts +64 -11
  49. package/dist/index.js +30 -30
  50. package/dist/{init-opencode-UPA3R362.js → init-opencode-ITKHZXYC.js} +6 -6
  51. package/dist/issue-triage-G7SWJLF2.js +17 -0
  52. package/dist/{pr-reviewer-helpers-KRKXKZIA.js → pr-reviewer-helpers-ISHVOYNB.js} +4 -4
  53. package/dist/{registry-command-2SCTKLEO.js → registry-command-ULIA5J5H.js} +2 -2
  54. package/dist/{repo-security-plan-NFYC64IS.js → repo-security-plan-QIXZWXKR.js} +3 -3
  55. package/dist/{research-helpers-synthesize-K5TX2WM3.js → research-helpers-synthesize-VKRSNV7Q.js} +4 -4
  56. package/dist/{routing-memory-JPDPHK7P.js → routing-memory-FVAEEVZ2.js} +2 -2
  57. package/dist/{session-memory-XIIEIJPT.js → session-memory-4U2BILBO.js} +3 -3
  58. package/dist/{setup-command-DIL56GPR.js → setup-command-TYHB2JK4.js} +14 -14
  59. package/dist/{setup-config-SUEPUZYL.js → setup-config-U6BM7PJO.js} +3 -3
  60. package/dist/{setup-custom-api-5TTLIPV3.js → setup-custom-api-WTUJWZK7.js} +4 -4
  61. package/dist/{tool-memory-ACUOYCYG.js → tool-memory-7NB5XYL3.js} +5 -5
  62. package/dist/{unified-registry-P3PLOFBN.js → unified-registry-LLMK2K43.js} +10 -10
  63. package/dist/{weather-report-464SS6FY.js → weather-report-5T7XP752.js} +2 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-CGJPW5BI.js.map +0 -1
  66. package/dist/issue-triage-QAI2FNMN.js +0 -17
  67. /package/dist/{child-mcp-config-OBOA4PE2.js.map → child-mcp-config-SZ7IYE3O.js.map} +0 -0
  68. /package/dist/{chunk-TD6I5UHY.js.map → chunk-2MIG56ZD.js.map} +0 -0
  69. /package/dist/{chunk-TI65NJOM.js.map → chunk-2ZO74IO7.js.map} +0 -0
  70. /package/dist/{chunk-D7X2AMEB.js.map → chunk-3QC3IWRP.js.map} +0 -0
  71. /package/dist/{chunk-XCUO5YUJ.js.map → chunk-6KPEN5OE.js.map} +0 -0
  72. /package/dist/{chunk-34UKF4FB.js.map → chunk-7M566K5K.js.map} +0 -0
  73. /package/dist/{chunk-BLY3DXM2.js.map → chunk-7MPLZ73P.js.map} +0 -0
  74. /package/dist/{chunk-7BMK5VEO.js.map → chunk-7U5E7DJV.js.map} +0 -0
  75. /package/dist/{chunk-7Y7UFVQ5.js.map → chunk-AOW5WVTT.js.map} +0 -0
  76. /package/dist/{chunk-O32DMSG5.js.map → chunk-BYEBHNRS.js.map} +0 -0
  77. /package/dist/{chunk-BAWVMEXA.js.map → chunk-FOBKXJMS.js.map} +0 -0
  78. /package/dist/{chunk-NMX7AYYB.js.map → chunk-GBIL6A6D.js.map} +0 -0
  79. /package/dist/{chunk-LVE7MN2F.js.map → chunk-GRWQU4XB.js.map} +0 -0
  80. /package/dist/{chunk-YY67CP2U.js.map → chunk-HCGUPBE3.js.map} +0 -0
  81. /package/dist/{chunk-75K4TN5H.js.map → chunk-HGN5BYOW.js.map} +0 -0
  82. /package/dist/{chunk-C6SAPXUV.js.map → chunk-HHRASHK4.js.map} +0 -0
  83. /package/dist/{chunk-ESWY4Y7S.js.map → chunk-I5377PAC.js.map} +0 -0
  84. /package/dist/{chunk-QNT5WS7E.js.map → chunk-LPPAXDV6.js.map} +0 -0
  85. /package/dist/{chunk-5JRYCJ37.js.map → chunk-M5QKVRNH.js.map} +0 -0
  86. /package/dist/{chunk-YLESXBB3.js.map → chunk-ND3KSSGU.js.map} +0 -0
  87. /package/dist/{chunk-EPD5MGPB.js.map → chunk-PBSANZII.js.map} +0 -0
  88. /package/dist/{chunk-ANTZOHQ6.js.map → chunk-RFXPWYM5.js.map} +0 -0
  89. /package/dist/{chunk-ARTRA6YC.js.map → chunk-RHQNFMUW.js.map} +0 -0
  90. /package/dist/{chunk-EYZIMY6I.js.map → chunk-RQ3F7KRP.js.map} +0 -0
  91. /package/dist/{chunk-JDUTA6FI.js.map → chunk-S2BYGZIM.js.map} +0 -0
  92. /package/dist/{chunk-BT6ONNFH.js.map → chunk-SWRXPVUQ.js.map} +0 -0
  93. /package/dist/{chunk-6HSDJ5H6.js.map → chunk-V7EMWUUM.js.map} +0 -0
  94. /package/dist/{chunk-VRJAJUUR.js.map → chunk-Y6C2VF2R.js.map} +0 -0
  95. /package/dist/{chunk-KMUOL3AL.js.map → chunk-YAB5NYKM.js.map} +0 -0
  96. /package/dist/{chunk-HBGA62JG.js.map → chunk-YMGPOFK3.js.map} +0 -0
  97. /package/dist/{chunk-B6DNL7LG.js.map → chunk-YNWIXCPW.js.map} +0 -0
  98. /package/dist/{chunk-SWUYPFXS.js.map → chunk-ZTQ4CHPG.js.map} +0 -0
  99. /package/dist/{cli-circuit-breaker-TJVDSJU5.js.map → cli-circuit-breaker-SQHLH44A.js.map} +0 -0
  100. /package/dist/{composite-router-CIC4BU6A.js.map → composite-router-WBT2V32V.js.map} +0 -0
  101. /package/dist/{consensus-vote-77UCSVGM.js.map → consensus-vote-H6EIMQ7M.js.map} +0 -0
  102. /package/dist/{context-retriever-CP72SNYZ.js.map → context-retriever-MON4VAVO.js.map} +0 -0
  103. /package/dist/{doctor-deep-WI2ZC7Z3.js.map → doctor-deep-YB52D552.js.map} +0 -0
  104. /package/dist/{doctor-live-W2KY3OIA.js.map → doctor-live-YCCSYF5X.js.map} +0 -0
  105. /package/dist/{expert-bridge-HGBVHVJI.js.map → expert-bridge-MLP3CVUY.js.map} +0 -0
  106. /package/dist/{factory-GEBBVQHZ.js.map → factory-BOSRE2JV.js.map} +0 -0
  107. /package/dist/{factory-LEYEWZ4Y.js.map → factory-YRLWFERP.js.map} +0 -0
  108. /package/dist/{improvement-review-XN2GZX3V.js.map → improvement-review-LTOEMHMZ.js.map} +0 -0
  109. /package/dist/{init-opencode-UPA3R362.js.map → init-opencode-ITKHZXYC.js.map} +0 -0
  110. /package/dist/{issue-triage-QAI2FNMN.js.map → issue-triage-G7SWJLF2.js.map} +0 -0
  111. /package/dist/{pr-reviewer-helpers-KRKXKZIA.js.map → pr-reviewer-helpers-ISHVOYNB.js.map} +0 -0
  112. /package/dist/{registry-command-2SCTKLEO.js.map → registry-command-ULIA5J5H.js.map} +0 -0
  113. /package/dist/{repo-security-plan-NFYC64IS.js.map → repo-security-plan-QIXZWXKR.js.map} +0 -0
  114. /package/dist/{research-helpers-synthesize-K5TX2WM3.js.map → research-helpers-synthesize-VKRSNV7Q.js.map} +0 -0
  115. /package/dist/{routing-memory-JPDPHK7P.js.map → routing-memory-FVAEEVZ2.js.map} +0 -0
  116. /package/dist/{session-memory-XIIEIJPT.js.map → session-memory-4U2BILBO.js.map} +0 -0
  117. /package/dist/{setup-command-DIL56GPR.js.map → setup-command-TYHB2JK4.js.map} +0 -0
  118. /package/dist/{setup-config-SUEPUZYL.js.map → setup-config-U6BM7PJO.js.map} +0 -0
  119. /package/dist/{setup-custom-api-5TTLIPV3.js.map → setup-custom-api-WTUJWZK7.js.map} +0 -0
  120. /package/dist/{tool-memory-ACUOYCYG.js.map → tool-memory-7NB5XYL3.js.map} +0 -0
  121. /package/dist/{unified-registry-P3PLOFBN.js.map → unified-registry-LLMK2K43.js.map} +0 -0
  122. /package/dist/{weather-report-464SS6FY.js.map → weather-report-5T7XP752.js.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createAutoAdapter
3
- } from "./chunk-7BMK5VEO.js";
3
+ } from "./chunk-7U5E7DJV.js";
4
4
  import {
5
5
  getDefaultCliCircuitBreakerRegistry,
6
6
  mapModelErrorToCategory
7
- } from "./chunk-NMX7AYYB.js";
7
+ } from "./chunk-GBIL6A6D.js";
8
8
  import {
9
9
  CLI_NAMES,
10
10
  CircularBuffer,
@@ -22,7 +22,7 @@ import {
22
22
  ok,
23
23
  recordRateLimitEvent,
24
24
  toRateLimitError
25
- } from "./chunk-NH3O2D5O.js";
25
+ } from "./chunk-C2DQXCIZ.js";
26
26
 
27
27
  // src/agents/collaboration/event-bus-helpers.ts
28
28
  import { randomUUID } from "crypto";
@@ -863,4 +863,4 @@ export {
863
863
  getGlobalRegistry,
864
864
  resetGlobalRegistry
865
865
  };
866
- //# sourceMappingURL=chunk-BAWVMEXA.js.map
866
+ //# sourceMappingURL=chunk-FOBKXJMS.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getTimeProvider,
9
9
  isRateLimitText,
10
10
  ok
11
- } from "./chunk-NH3O2D5O.js";
11
+ } from "./chunk-C2DQXCIZ.js";
12
12
 
13
13
  // src/cli-adapters/circuit-breaker-types.ts
14
14
  var CircuitErrorCode = {
@@ -540,4 +540,4 @@ export {
540
540
  CliCircuitBreakerIntegration,
541
541
  createCliCircuitBreakerIntegration
542
542
  };
543
- //# sourceMappingURL=chunk-NMX7AYYB.js.map
543
+ //# sourceMappingURL=chunk-GBIL6A6D.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-6HSDJ5H6.js";
4
+ } from "./chunk-V7EMWUUM.js";
5
5
  import {
6
6
  ROLE_DEFAULT_TRUST,
7
7
  ReputationCache,
@@ -11,20 +11,20 @@ import {
11
11
  gateWithReputation,
12
12
  resolveReputationGatingMode,
13
13
  sanitizeInput
14
- } from "./chunk-XCUO5YUJ.js";
14
+ } from "./chunk-6KPEN5OE.js";
15
15
  import {
16
16
  emitPolicyEvent
17
- } from "./chunk-EYZIMY6I.js";
17
+ } from "./chunk-RQ3F7KRP.js";
18
18
  import {
19
19
  hasToken
20
- } from "./chunk-SWUYPFXS.js";
20
+ } from "./chunk-ZTQ4CHPG.js";
21
21
  import {
22
22
  CLI_SUBPROCESS_TIMEOUTS,
23
23
  createLogger,
24
24
  err,
25
25
  getTimeProvider,
26
26
  ok
27
- } from "./chunk-NH3O2D5O.js";
27
+ } from "./chunk-C2DQXCIZ.js";
28
28
 
29
29
  // src/security/trust-classifier.ts
30
30
  function mapAuthorAssociation(association) {
@@ -1247,4 +1247,4 @@ export {
1247
1247
  IssueTriage,
1248
1248
  createIssueTriage
1249
1249
  };
1250
- //# sourceMappingURL=chunk-LVE7MN2F.js.map
1250
+ //# sourceMappingURL=chunk-GRWQU4XB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-C6SAPXUV.js";
3
+ } from "./chunk-HHRASHK4.js";
4
4
  import {
5
5
  analyzeGitHubRepo
6
6
  } from "./chunk-HFOQKCD2.js";
@@ -22,10 +22,10 @@ import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  DEFAULT_TOOL_RATE_LIMITS,
24
24
  clampTaskTtl
25
- } from "./chunk-EPD5MGPB.js";
25
+ } from "./chunk-PBSANZII.js";
26
26
  import {
27
27
  executeExpert
28
- } from "./chunk-VRJAJUUR.js";
28
+ } from "./chunk-Y6C2VF2R.js";
29
29
  import {
30
30
  JobStatusSchema,
31
31
  abortJob,
@@ -46,24 +46,24 @@ import {
46
46
  simulationDeniedResult,
47
47
  toJobSummary,
48
48
  writeJobCancelled
49
- } from "./chunk-75K4TN5H.js";
49
+ } from "./chunk-HGN5BYOW.js";
50
50
  import {
51
51
  allOf
52
52
  } from "./chunk-OQB3XC5O.js";
53
53
  import {
54
54
  normalizeTopicToCanonical,
55
55
  synthesizeResearch
56
- } from "./chunk-O32DMSG5.js";
56
+ } from "./chunk-BYEBHNRS.js";
57
57
  import {
58
58
  IssueTriage
59
- } from "./chunk-LVE7MN2F.js";
59
+ } from "./chunk-GRWQU4XB.js";
60
60
  import {
61
61
  resolveEnvMode,
62
62
  sanitizeInput
63
- } from "./chunk-XCUO5YUJ.js";
63
+ } from "./chunk-6KPEN5OE.js";
64
64
  import {
65
65
  withPrerequisite
66
- } from "./chunk-34UKF4FB.js";
66
+ } from "./chunk-7M566K5K.js";
67
67
  import {
68
68
  NOOP_NOTIFIER,
69
69
  RateLimiter,
@@ -87,18 +87,18 @@ import {
87
87
  withAuditTrail,
88
88
  withProgressHeartbeat,
89
89
  wrapToolWithTimeout
90
- } from "./chunk-ARTRA6YC.js";
90
+ } from "./chunk-RHQNFMUW.js";
91
91
  import {
92
92
  createAuditTrail,
93
93
  createGraphAuditBridge,
94
94
  emitPipelinePolicyEvent
95
- } from "./chunk-EYZIMY6I.js";
95
+ } from "./chunk-RQ3F7KRP.js";
96
96
  import {
97
97
  EventTopics,
98
98
  createEvent,
99
99
  getGlobalEventBus,
100
100
  getGlobalRegistry
101
- } from "./chunk-BAWVMEXA.js";
101
+ } from "./chunk-FOBKXJMS.js";
102
102
  import {
103
103
  IDENTIFIER_RE,
104
104
  LANG_VALUES,
@@ -131,31 +131,31 @@ import {
131
131
  parseRegistry,
132
132
  sourceExistsInRegistry,
133
133
  summarizeContextForPrompt
134
- } from "./chunk-ANTZOHQ6.js";
134
+ } from "./chunk-RFXPWYM5.js";
135
135
  import {
136
136
  loadPapersRegistry,
137
137
  loadTechniquesRegistry
138
- } from "./chunk-KMUOL3AL.js";
138
+ } from "./chunk-YAB5NYKM.js";
139
139
  import {
140
140
  resolveInsideRoot
141
141
  } from "./chunk-NUBSJGQZ.js";
142
142
  import {
143
143
  getTokenEnvVars,
144
144
  resolveToken
145
- } from "./chunk-SWUYPFXS.js";
145
+ } from "./chunk-ZTQ4CHPG.js";
146
146
  import {
147
147
  DEFAULT_RELEVANCE_CONFIG,
148
148
  MemoryImportance,
149
149
  calculateTextJaccardSimilarity,
150
150
  getToolMemory
151
- } from "./chunk-B6DNL7LG.js";
151
+ } from "./chunk-YNWIXCPW.js";
152
152
  import {
153
153
  STOPWORDS,
154
154
  truncateWithInfo
155
155
  } from "./chunk-6T3EPABN.js";
156
156
  import {
157
157
  createSessionMemory
158
- } from "./chunk-D7X2AMEB.js";
158
+ } from "./chunk-3QC3IWRP.js";
159
159
  import {
160
160
  BUILT_IN_EXPERTS,
161
161
  BuiltInExpertTypeSchema,
@@ -173,25 +173,25 @@ import {
173
173
  getAvailableClis,
174
174
  sleep,
175
175
  withTimeout
176
- } from "./chunk-7BMK5VEO.js";
176
+ } from "./chunk-7U5E7DJV.js";
177
177
  import {
178
178
  BaseAdapter,
179
179
  createStream,
180
180
  requireApiKey,
181
181
  validateApiKeyPresence
182
- } from "./chunk-TI65NJOM.js";
182
+ } from "./chunk-2ZO74IO7.js";
183
183
  import {
184
184
  DEFAULTS
185
- } from "./chunk-5JRYCJ37.js";
185
+ } from "./chunk-M5QKVRNH.js";
186
186
  import {
187
187
  getAvailabilityCache,
188
188
  getCliForModelId,
189
189
  resolveFallback
190
- } from "./chunk-TD6I5UHY.js";
190
+ } from "./chunk-2MIG56ZD.js";
191
191
  import {
192
192
  generateHyphenId,
193
193
  generateUUID
194
- } from "./chunk-BT6ONNFH.js";
194
+ } from "./chunk-SWRXPVUQ.js";
195
195
  import {
196
196
  AGENT_ROUTER_TIMEOUTS,
197
197
  API_TIMEOUTS,
@@ -291,7 +291,7 @@ import {
291
291
  selectStrategyByManifest,
292
292
  toExpertTaskAnalysisResult,
293
293
  withStep
294
- } from "./chunk-NH3O2D5O.js";
294
+ } from "./chunk-C2DQXCIZ.js";
295
295
  import {
296
296
  ensureLearningDir,
297
297
  getMetaOutcomesFile,
@@ -8308,10 +8308,14 @@ var AdaptiveProtocolSelector = class {
8308
8308
  this.log = config?.logger ?? logger3;
8309
8309
  }
8310
8310
  /**
8311
- * Select the optimal protocol for a task.
8311
+ * Classify a task and report which protocol adaptation would choose.
8312
8312
  *
8313
- * @param config - Collaboration config (pattern may be overridden)
8314
- * @returns Selection result with chosen pattern and reasoning
8313
+ * The returned `pattern` is always `config.pattern`: `CollaborationPattern`
8314
+ * has no `auto` member, so there is no way for a caller to defer to
8315
+ * adaptation. `adaptivePattern` carries the advisory choice (#4833).
8316
+ *
8317
+ * @param config - Collaboration config; its `pattern` is always honoured
8318
+ * @returns The pattern in use, the advisory choice, and the classification
8315
8319
  */
8316
8320
  selectProtocol(config) {
8317
8321
  const explicitPattern = config.pattern;
@@ -8324,16 +8328,20 @@ var AdaptiveProtocolSelector = class {
8324
8328
  const selectedPattern = mapping[classification.type] ?? DEFAULT_PROTOCOL_MAPPING[classification.type];
8325
8329
  const wasOverridden = explicitPattern !== selectedPattern;
8326
8330
  if (this.config.logDecisions) {
8327
- this.log.info("Protocol selection", {
8331
+ this.log.info("Protocol classification (advisory)", {
8328
8332
  taskType: classification.type,
8329
8333
  confidence: classification.confidence,
8330
- selectedPattern,
8331
- explicitPattern,
8332
- wasOverridden
8334
+ adaptivePattern: selectedPattern,
8335
+ patternInUse: explicitPattern,
8336
+ differsFromAdaptive: wasOverridden
8333
8337
  });
8334
8338
  }
8335
8339
  return {
8336
- pattern: wasOverridden ? explicitPattern : selectedPattern,
8340
+ // Always the caller's pattern — the ternary this replaced returned
8341
+ // `explicitPattern` in both branches, since the false branch is reached
8342
+ // only when the two are equal (#4833).
8343
+ pattern: explicitPattern,
8344
+ adaptivePattern: selectedPattern,
8337
8345
  classification,
8338
8346
  wasOverridden
8339
8347
  };
@@ -8363,16 +8371,18 @@ var AdaptiveProtocolSelector = class {
8363
8371
  return this.factory.execute(adaptedConfig, agents);
8364
8372
  }
8365
8373
  /**
8366
- * Get recommended protocol for a task without executing.
8374
+ * Get the recommended protocol for a task without executing.
8367
8375
  *
8368
- * Useful for preview/explanation of what protocol would be selected.
8376
+ * Returns the *adaptive* choice. It previously returned `selection.pattern`
8377
+ * — the caller's own input — so the "recommendation" echoed the question
8378
+ * back with reasoning attached that read as an answer (#4833).
8369
8379
  */
8370
8380
  getRecommendation(config) {
8371
8381
  const selection = this.selectProtocol(config);
8372
8382
  const { type, confidence } = selection.classification;
8373
8383
  const reasoning = type === "unknown" ? "Task type could not be determined with sufficient confidence. Using default protocol." : `Task classified as "${type}" type (confidence: ${(confidence * 100).toFixed(0)}%). ${type === "reasoning" ? "Voting/parallel protocols work better for reasoning tasks (+13.2%)." : "Consensus protocols work better for knowledge tasks (+2.8%)."}`;
8374
8384
  return {
8375
- recommendedPattern: selection.pattern,
8385
+ recommendedPattern: selection.adaptivePattern,
8376
8386
  taskType: type,
8377
8387
  confidence,
8378
8388
  reasoning
@@ -8680,12 +8690,13 @@ var OrchestratorCollaborationHelper = class {
8680
8690
  async executeCollaboration(config, agents, results) {
8681
8691
  const recommendation = this.protocolSelector.getRecommendation(config);
8682
8692
  this.logger.info("Protocol recommendation", {
8683
- pattern: recommendation.recommendedPattern,
8693
+ recommendedPattern: recommendation.recommendedPattern,
8694
+ patternInUse: config.pattern,
8684
8695
  taskType: recommendation.taskType,
8685
8696
  confidence: recommendation.confidence
8686
8697
  });
8687
8698
  const collaborationResult = await this.protocolSelector.execute(
8688
- { ...config, pattern: recommendation.recommendedPattern },
8699
+ { ...config, pattern: config.pattern },
8689
8700
  agents
8690
8701
  );
8691
8702
  if (!collaborationResult.ok) {
@@ -28254,7 +28265,7 @@ function execIdFields(executionId) {
28254
28265
  async function populateUnifiedContextOnState(state, options) {
28255
28266
  const taskCandidate = state["task"];
28256
28267
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
28257
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-CP72SNYZ.js");
28268
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-MON4VAVO.js");
28258
28269
  const category = inferTaskCategory2(taskCandidate);
28259
28270
  const executionId = options?.executionId;
28260
28271
  const execFields = execIdFields(executionId);
@@ -30371,7 +30382,11 @@ function createStep(id, action, output2, durationMs) {
30371
30382
  action,
30372
30383
  output: output2,
30373
30384
  durationMs,
30385
+ // `OrchestratorAgentLike.execute` returns `Result<unknown, unknown>` — no
30386
+ // usage metadata reaches this seam, so there is nothing to count. Say so
30387
+ // rather than reporting a zero that reads as a measurement (#4829).
30374
30388
  tokensUsed: 0,
30389
+ tokensMeasured: false,
30375
30390
  status: "success",
30376
30391
  error: void 0
30377
30392
  };
@@ -30383,7 +30398,9 @@ function createResult(execId, type, steps, output2, durationMs) {
30383
30398
  steps,
30384
30399
  output: output2,
30385
30400
  totalDurationMs: durationMs,
30401
+ // Every step is unmeasured (see createStep), so the total is too (#4829).
30386
30402
  totalTokensUsed: 0,
30403
+ tokensMeasured: steps.every((s) => s.tokensMeasured !== false),
30387
30404
  agentsUsed: steps.map((s) => s.agentId)
30388
30405
  };
30389
30406
  }
@@ -31102,6 +31119,14 @@ var OrchestrateOutputSchema = z50.object({
31102
31119
  metadata: z50.object({
31103
31120
  durationMs: z50.number(),
31104
31121
  tokensUsed: z50.number(),
31122
+ /**
31123
+ * Whether `tokensUsed` is a measurement (#4829).
31124
+ *
31125
+ * `false` means no usage was reported, so `tokensUsed` is a placeholder
31126
+ * `0` and not a count. Without it a caller cannot tell a run that spent
31127
+ * nothing from a run nobody counted.
31128
+ */
31129
+ tokensMeasured: z50.boolean().optional(),
31105
31130
  expertsUsed: z50.array(z50.string()),
31106
31131
  /**
31107
31132
  * Populated only when the outer wall-clock deadline fires before
@@ -35247,6 +35272,7 @@ function buildOutputFromOrchestratorResult(taskId, orchResult, durationMs, routi
35247
35272
  metadata: {
35248
35273
  durationMs,
35249
35274
  tokensUsed: orchResult.totalTokensUsed,
35275
+ ...orchResult.tokensMeasured === void 0 ? {} : { tokensMeasured: orchResult.tokensMeasured },
35250
35276
  expertsUsed: orchResult.agentsUsed
35251
35277
  }
35252
35278
  };
@@ -43938,7 +43964,7 @@ async function tryIssueTriage(task) {
43938
43964
  try {
43939
43965
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
43940
43966
  if (issueMatch === null) return null;
43941
- const { createIssueTriage } = await import("./issue-triage-QAI2FNMN.js");
43967
+ const { createIssueTriage } = await import("./issue-triage-G7SWJLF2.js");
43942
43968
  const triage = createIssueTriage();
43943
43969
  const owner = issueMatch[1] ?? "";
43944
43970
  const num = issueMatch[2] ?? "";
@@ -43966,7 +43992,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
43966
43992
  ]);
43967
43993
  async function classifyWithLLM(task) {
43968
43994
  try {
43969
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-HGBVHVJI.js");
43995
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-MLP3CVUY.js");
43970
43996
  const prompt = [
43971
43997
  "Classify this task into exactly one pipeline template.",
43972
43998
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -45707,7 +45733,7 @@ var memoryInitPromise = null;
45707
45733
  async function initPipelineMemory() {
45708
45734
  if (cachedMemory !== null) return cachedMemory;
45709
45735
  try {
45710
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-XIIEIJPT.js");
45736
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-4U2BILBO.js");
45711
45737
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45712
45738
  const mem = createSessionMemory2(getLearningDir());
45713
45739
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -45769,7 +45795,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
45769
45795
  callRecord(routingMemoryCache);
45770
45796
  return;
45771
45797
  }
45772
- routingMemoryInitPromise ??= import("./routing-memory-JPDPHK7P.js").then(({ createRoutingMemory }) => {
45798
+ routingMemoryInitPromise ??= import("./routing-memory-FVAEEVZ2.js").then(({ createRoutingMemory }) => {
45773
45799
  routingMemoryCache ??= createRoutingMemory();
45774
45800
  return routingMemoryCache;
45775
45801
  }).catch((error) => {
@@ -45803,7 +45829,7 @@ ${text}` : "";
45803
45829
  }
45804
45830
  async function getWeatherContext() {
45805
45831
  try {
45806
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-464SS6FY.js");
45832
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-5T7XP752.js");
45807
45833
  const report = generateWeatherReport2({ includeAdaptive: true });
45808
45834
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
45809
45835
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -45821,7 +45847,7 @@ ${lines}
45821
45847
  }
45822
45848
  async function getMemoryContext(task) {
45823
45849
  try {
45824
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-XIIEIJPT.js");
45850
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-4U2BILBO.js");
45825
45851
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45826
45852
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
45827
45853
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -45940,7 +45966,7 @@ ${contextBlock}`;
45940
45966
  const strategy = config.votingStrategy ?? "higher_order";
45941
45967
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
45942
45968
  try {
45943
- const { executeVoting } = await import("./consensus-vote-77UCSVGM.js");
45969
+ const { executeVoting } = await import("./consensus-vote-H6EIMQ7M.js");
45944
45970
  const votingResult = await executeVoting(
45945
45971
  {
45946
45972
  proposal: buildVoteProposal(plan, research),
@@ -46379,7 +46405,7 @@ async function searchCodebaseForTask(task) {
46379
46405
  }
46380
46406
  async function queryResearchRegistry(task) {
46381
46407
  try {
46382
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-K5TX2WM3.js");
46408
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-VKRSNV7Q.js");
46383
46409
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
46384
46410
  if (topic === void 0) return null;
46385
46411
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -46450,7 +46476,7 @@ function createScanStageWrapper() {
46450
46476
  try {
46451
46477
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
46452
46478
  if (slug !== void 0) {
46453
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-NFYC64IS.js");
46479
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-QIXZWXKR.js");
46454
46480
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
46455
46481
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
46456
46482
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -49573,7 +49599,7 @@ var GitHubTaskTracker = class {
49573
49599
  cachedProvider = null;
49574
49600
  async getProvider() {
49575
49601
  if (this.cachedProvider !== null) return this.cachedProvider;
49576
- const { createScmProvider } = await import("./factory-LEYEWZ4Y.js");
49602
+ const { createScmProvider } = await import("./factory-BOSRE2JV.js");
49577
49603
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
49578
49604
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
49579
49605
  this.cachedProvider = result.value;
@@ -50464,7 +50490,7 @@ async function probeSource(source, includeModelIds) {
50464
50490
  }
50465
50491
  }
50466
50492
  async function defaultSources(includeOpenRouter) {
50467
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-GEBBVQHZ.js");
50493
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-YRLWFERP.js");
50468
50494
  const adapters = createAllAdapters2();
50469
50495
  return buildDefaultModelSources(adapters, { includeOpenRouter });
50470
50496
  }
@@ -54506,4 +54532,4 @@ export {
54506
54532
  shutdownFeedbackSubscriber,
54507
54533
  createEventBusBridge
54508
54534
  };
54509
- //# sourceMappingURL=chunk-CGJPW5BI.js.map
54535
+ //# sourceMappingURL=chunk-H44SVOTG.js.map