nexus-agents 3.9.2 → 3.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/{child-mcp-config-XIZWCWS3.js → child-mcp-config-MJNB5GXS.js} +2 -2
  2. package/dist/{chunk-OJCIP6W5.js → chunk-32AWWH4F.js} +2 -2
  3. package/dist/{chunk-EZXYOWCX.js → chunk-3WWE26PG.js} +2 -2
  4. package/dist/{chunk-65WAPYJ6.js → chunk-6VUIQQ3O.js} +116 -46
  5. package/dist/chunk-6VUIQQ3O.js.map +1 -0
  6. package/dist/{chunk-AENOTEID.js → chunk-7FJFN74H.js} +5 -5
  7. package/dist/{chunk-3MUJKEAQ.js → chunk-ABV3XE7D.js} +5 -5
  8. package/dist/{chunk-VCNOCG2J.js → chunk-DMKV7ANB.js} +8 -8
  9. package/dist/{chunk-KIE4R424.js → chunk-ERCCVO4N.js} +2 -2
  10. package/dist/{chunk-P5WOAEDY.js → chunk-FJKMNLTU.js} +4 -4
  11. package/dist/{chunk-7PBXPMKW.js → chunk-G5GOWK5T.js} +2 -2
  12. package/dist/{chunk-XYVYKPIB.js → chunk-G6AVXG6F.js} +2 -2
  13. package/dist/{chunk-DXL625N6.js → chunk-IAEZN2N4.js} +5 -5
  14. package/dist/{chunk-YAZW2ANJ.js → chunk-JBLM3UZA.js} +5 -5
  15. package/dist/{chunk-SXWUCWLR.js → chunk-JBSL2HKV.js} +3 -3
  16. package/dist/{chunk-SMBJQBEC.js → chunk-JJZF37X2.js} +3 -3
  17. package/dist/{chunk-2CN7DD4C.js → chunk-JPMXFYKW.js} +3 -3
  18. package/dist/{chunk-DSP6PMDI.js → chunk-K3TRG2CD.js} +3 -3
  19. package/dist/{chunk-CQAO35WX.js → chunk-KBX4JSBE.js} +8 -8
  20. package/dist/{chunk-R43Y6TXS.js → chunk-KLMXZRDK.js} +2 -2
  21. package/dist/{chunk-EGUKCGGM.js → chunk-KPYPJGSD.js} +7 -7
  22. package/dist/{chunk-AQBM5CAX.js → chunk-M3HKW5HF.js} +2 -2
  23. package/dist/{chunk-PBD5LS4B.js → chunk-M7566JRS.js} +8 -8
  24. package/dist/{chunk-ACWU2RRK.js → chunk-MAP3BVCT.js} +2 -2
  25. package/dist/{chunk-WVN62JSE.js → chunk-MXJEMYC7.js} +2 -2
  26. package/dist/{chunk-NZCBB4SP.js → chunk-N62DDWV3.js} +2 -2
  27. package/dist/{chunk-MUBJ4ROO.js → chunk-OL6TRWBA.js} +2 -2
  28. package/dist/{chunk-FZ5YJSM6.js → chunk-QUOCOEDQ.js} +4 -4
  29. package/dist/{chunk-6YEAUZBF.js → chunk-SOCKDRK6.js} +4 -4
  30. package/dist/{chunk-Q2UUVPVY.js → chunk-TJ6UFU3I.js} +2 -2
  31. package/dist/{chunk-YP25ZDI2.js → chunk-TU4FRZWU.js} +2 -2
  32. package/dist/{chunk-OM5VAEYP.js → chunk-VF4ZV4KG.js} +2 -2
  33. package/dist/{chunk-ZGAML4CX.js → chunk-XBEED5SG.js} +87 -37
  34. package/dist/chunk-XBEED5SG.js.map +1 -0
  35. package/dist/{chunk-7GA5V4L2.js → chunk-XMNMIMR6.js} +2 -2
  36. package/dist/{chunk-3ZGYVPN3.js → chunk-ZVZHNAQH.js} +2 -2
  37. package/dist/{cli-circuit-breaker-M5JY42QE.js → cli-circuit-breaker-JWCKCVDX.js} +3 -3
  38. package/dist/cli.js +41 -41
  39. package/dist/{composite-router-AU7QAE3Z.js → composite-router-5OCKHBR3.js} +2 -2
  40. package/dist/{consensus-vote-FUQNZAHI.js → consensus-vote-HG5BE56Y.js} +16 -16
  41. package/dist/{context-retriever-BJL3MZTY.js → context-retriever-JNXUAPWJ.js} +8 -8
  42. package/dist/{doctor-deep-CSIYPBWB.js → doctor-deep-IZAAFLBC.js} +3 -3
  43. package/dist/{doctor-live-Z3EUWDEM.js → doctor-live-Z5IP2TWY.js} +9 -9
  44. package/dist/{expert-bridge-NI3ZJASZ.js → expert-bridge-XI4BNDI7.js} +4 -4
  45. package/dist/{factory-663E66YC.js → factory-QAH46LJX.js} +9 -9
  46. package/dist/{factory-BQAVRQGT.js → factory-WU2VY6QI.js} +5 -5
  47. package/dist/{improvement-review-J6TNYY37.js → improvement-review-E2PK2AEA.js} +5 -5
  48. package/dist/index.d.ts +28 -1
  49. package/dist/index.js +30 -30
  50. package/dist/{init-opencode-EY7LKRNG.js → init-opencode-BQHWMUOD.js} +6 -6
  51. package/dist/{issue-triage-SVM7E5KL.js → issue-triage-EBQFRWOQ.js} +6 -6
  52. package/dist/{pr-reviewer-helpers-545VXQVR.js → pr-reviewer-helpers-RN35E43S.js} +4 -4
  53. package/dist/{registry-command-7YZHWM5F.js → registry-command-J2FV4BT2.js} +2 -2
  54. package/dist/{repo-security-plan-F32BFXAV.js → repo-security-plan-IRILDORZ.js} +3 -3
  55. package/dist/{research-helpers-synthesize-DQXRIADN.js → research-helpers-synthesize-KUZRNHXY.js} +4 -4
  56. package/dist/{routing-memory-MUUFFXDI.js → routing-memory-GFO76574.js} +2 -2
  57. package/dist/{session-memory-OPYU2ZX3.js → session-memory-CY3T3XNO.js} +3 -3
  58. package/dist/{setup-command-LWTWYEM6.js → setup-command-QI3LDW4D.js} +14 -14
  59. package/dist/{setup-config-EUBS3LFF.js → setup-config-A27SDCRY.js} +3 -3
  60. package/dist/{setup-custom-api-XT23L2NX.js → setup-custom-api-UZV66PZA.js} +4 -4
  61. package/dist/{tool-memory-HEHBDQDP.js → tool-memory-YYEWKSC4.js} +5 -5
  62. package/dist/{unified-registry-FYD2XQ43.js → unified-registry-PKDBZ6FO.js} +10 -10
  63. package/dist/{weather-report-ZG3JCRLK.js → weather-report-MXQTPLDG.js} +2 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-65WAPYJ6.js.map +0 -1
  66. package/dist/chunk-ZGAML4CX.js.map +0 -1
  67. /package/dist/{child-mcp-config-XIZWCWS3.js.map → child-mcp-config-MJNB5GXS.js.map} +0 -0
  68. /package/dist/{chunk-OJCIP6W5.js.map → chunk-32AWWH4F.js.map} +0 -0
  69. /package/dist/{chunk-EZXYOWCX.js.map → chunk-3WWE26PG.js.map} +0 -0
  70. /package/dist/{chunk-AENOTEID.js.map → chunk-7FJFN74H.js.map} +0 -0
  71. /package/dist/{chunk-3MUJKEAQ.js.map → chunk-ABV3XE7D.js.map} +0 -0
  72. /package/dist/{chunk-VCNOCG2J.js.map → chunk-DMKV7ANB.js.map} +0 -0
  73. /package/dist/{chunk-KIE4R424.js.map → chunk-ERCCVO4N.js.map} +0 -0
  74. /package/dist/{chunk-P5WOAEDY.js.map → chunk-FJKMNLTU.js.map} +0 -0
  75. /package/dist/{chunk-7PBXPMKW.js.map → chunk-G5GOWK5T.js.map} +0 -0
  76. /package/dist/{chunk-XYVYKPIB.js.map → chunk-G6AVXG6F.js.map} +0 -0
  77. /package/dist/{chunk-DXL625N6.js.map → chunk-IAEZN2N4.js.map} +0 -0
  78. /package/dist/{chunk-YAZW2ANJ.js.map → chunk-JBLM3UZA.js.map} +0 -0
  79. /package/dist/{chunk-SXWUCWLR.js.map → chunk-JBSL2HKV.js.map} +0 -0
  80. /package/dist/{chunk-SMBJQBEC.js.map → chunk-JJZF37X2.js.map} +0 -0
  81. /package/dist/{chunk-2CN7DD4C.js.map → chunk-JPMXFYKW.js.map} +0 -0
  82. /package/dist/{chunk-DSP6PMDI.js.map → chunk-K3TRG2CD.js.map} +0 -0
  83. /package/dist/{chunk-CQAO35WX.js.map → chunk-KBX4JSBE.js.map} +0 -0
  84. /package/dist/{chunk-R43Y6TXS.js.map → chunk-KLMXZRDK.js.map} +0 -0
  85. /package/dist/{chunk-EGUKCGGM.js.map → chunk-KPYPJGSD.js.map} +0 -0
  86. /package/dist/{chunk-AQBM5CAX.js.map → chunk-M3HKW5HF.js.map} +0 -0
  87. /package/dist/{chunk-PBD5LS4B.js.map → chunk-M7566JRS.js.map} +0 -0
  88. /package/dist/{chunk-ACWU2RRK.js.map → chunk-MAP3BVCT.js.map} +0 -0
  89. /package/dist/{chunk-WVN62JSE.js.map → chunk-MXJEMYC7.js.map} +0 -0
  90. /package/dist/{chunk-NZCBB4SP.js.map → chunk-N62DDWV3.js.map} +0 -0
  91. /package/dist/{chunk-MUBJ4ROO.js.map → chunk-OL6TRWBA.js.map} +0 -0
  92. /package/dist/{chunk-FZ5YJSM6.js.map → chunk-QUOCOEDQ.js.map} +0 -0
  93. /package/dist/{chunk-6YEAUZBF.js.map → chunk-SOCKDRK6.js.map} +0 -0
  94. /package/dist/{chunk-Q2UUVPVY.js.map → chunk-TJ6UFU3I.js.map} +0 -0
  95. /package/dist/{chunk-YP25ZDI2.js.map → chunk-TU4FRZWU.js.map} +0 -0
  96. /package/dist/{chunk-OM5VAEYP.js.map → chunk-VF4ZV4KG.js.map} +0 -0
  97. /package/dist/{chunk-7GA5V4L2.js.map → chunk-XMNMIMR6.js.map} +0 -0
  98. /package/dist/{chunk-3ZGYVPN3.js.map → chunk-ZVZHNAQH.js.map} +0 -0
  99. /package/dist/{cli-circuit-breaker-M5JY42QE.js.map → cli-circuit-breaker-JWCKCVDX.js.map} +0 -0
  100. /package/dist/{composite-router-AU7QAE3Z.js.map → composite-router-5OCKHBR3.js.map} +0 -0
  101. /package/dist/{consensus-vote-FUQNZAHI.js.map → consensus-vote-HG5BE56Y.js.map} +0 -0
  102. /package/dist/{context-retriever-BJL3MZTY.js.map → context-retriever-JNXUAPWJ.js.map} +0 -0
  103. /package/dist/{doctor-deep-CSIYPBWB.js.map → doctor-deep-IZAAFLBC.js.map} +0 -0
  104. /package/dist/{doctor-live-Z3EUWDEM.js.map → doctor-live-Z5IP2TWY.js.map} +0 -0
  105. /package/dist/{expert-bridge-NI3ZJASZ.js.map → expert-bridge-XI4BNDI7.js.map} +0 -0
  106. /package/dist/{factory-663E66YC.js.map → factory-QAH46LJX.js.map} +0 -0
  107. /package/dist/{factory-BQAVRQGT.js.map → factory-WU2VY6QI.js.map} +0 -0
  108. /package/dist/{improvement-review-J6TNYY37.js.map → improvement-review-E2PK2AEA.js.map} +0 -0
  109. /package/dist/{init-opencode-EY7LKRNG.js.map → init-opencode-BQHWMUOD.js.map} +0 -0
  110. /package/dist/{issue-triage-SVM7E5KL.js.map → issue-triage-EBQFRWOQ.js.map} +0 -0
  111. /package/dist/{pr-reviewer-helpers-545VXQVR.js.map → pr-reviewer-helpers-RN35E43S.js.map} +0 -0
  112. /package/dist/{registry-command-7YZHWM5F.js.map → registry-command-J2FV4BT2.js.map} +0 -0
  113. /package/dist/{repo-security-plan-F32BFXAV.js.map → repo-security-plan-IRILDORZ.js.map} +0 -0
  114. /package/dist/{research-helpers-synthesize-DQXRIADN.js.map → research-helpers-synthesize-KUZRNHXY.js.map} +0 -0
  115. /package/dist/{routing-memory-MUUFFXDI.js.map → routing-memory-GFO76574.js.map} +0 -0
  116. /package/dist/{session-memory-OPYU2ZX3.js.map → session-memory-CY3T3XNO.js.map} +0 -0
  117. /package/dist/{setup-command-LWTWYEM6.js.map → setup-command-QI3LDW4D.js.map} +0 -0
  118. /package/dist/{setup-config-EUBS3LFF.js.map → setup-config-A27SDCRY.js.map} +0 -0
  119. /package/dist/{setup-custom-api-XT23L2NX.js.map → setup-custom-api-UZV66PZA.js.map} +0 -0
  120. /package/dist/{tool-memory-HEHBDQDP.js.map → tool-memory-YYEWKSC4.js.map} +0 -0
  121. /package/dist/{unified-registry-FYD2XQ43.js.map → unified-registry-PKDBZ6FO.js.map} +0 -0
  122. /package/dist/{weather-report-ZG3JCRLK.js.map → weather-report-MXQTPLDG.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createAutoAdapter
3
- } from "./chunk-PBD5LS4B.js";
3
+ } from "./chunk-M7566JRS.js";
4
4
  import {
5
5
  mapModelErrorToCategory
6
- } from "./chunk-R43Y6TXS.js";
6
+ } from "./chunk-KLMXZRDK.js";
7
7
  import {
8
8
  CLI_NAMES,
9
9
  CircularBuffer,
@@ -21,7 +21,7 @@ import {
21
21
  ok,
22
22
  recordRateLimitEvent,
23
23
  toRateLimitError
24
- } from "./chunk-65WAPYJ6.js";
24
+ } from "./chunk-6VUIQQ3O.js";
25
25
 
26
26
  // src/agents/collaboration/event-bus-helpers.ts
27
27
  import { randomUUID } from "crypto";
@@ -833,4 +833,4 @@ export {
833
833
  getGlobalRegistry,
834
834
  resetGlobalRegistry
835
835
  };
836
- //# sourceMappingURL=chunk-6YEAUZBF.js.map
836
+ //# sourceMappingURL=chunk-SOCKDRK6.js.map
@@ -3,7 +3,7 @@ import {
3
3
  MODEL_IDS,
4
4
  getTimeProvider,
5
5
  resolveModelIdentitySync
6
- } from "./chunk-65WAPYJ6.js";
6
+ } from "./chunk-6VUIQQ3O.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-Q2UUVPVY.js.map
153
+ //# sourceMappingURL=chunk-TJ6UFU3I.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-65WAPYJ6.js";
5
+ } from "./chunk-6VUIQQ3O.js";
6
6
 
7
7
  // src/cli/doctor-deep.ts
8
8
  var CLI_NAMES = ["claude", "gemini", "codex", "opencode"];
@@ -106,4 +106,4 @@ export {
106
106
  runDeepDiagnostics,
107
107
  formatDeepDiagnostics
108
108
  };
109
- //# sourceMappingURL=chunk-YP25ZDI2.js.map
109
+ //# sourceMappingURL=chunk-TU4FRZWU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-65WAPYJ6.js";
3
+ } from "./chunk-6VUIQQ3O.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
77
77
  export {
78
78
  runConfigInitSync
79
79
  };
80
- //# sourceMappingURL=chunk-OM5VAEYP.js.map
80
+ //# sourceMappingURL=chunk-VF4ZV4KG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-WVN62JSE.js";
3
+ } from "./chunk-MXJEMYC7.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-CQAO35WX.js";
25
+ } from "./chunk-KBX4JSBE.js";
26
26
  import {
27
27
  executeExpert
28
- } from "./chunk-EGUKCGGM.js";
28
+ } from "./chunk-KPYPJGSD.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-VCNOCG2J.js";
49
+ } from "./chunk-DMKV7ANB.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-SXWUCWLR.js";
56
+ } from "./chunk-JBSL2HKV.js";
57
57
  import {
58
58
  IssueTriage
59
- } from "./chunk-3MUJKEAQ.js";
59
+ } from "./chunk-ABV3XE7D.js";
60
60
  import {
61
61
  resolveEnvMode,
62
62
  sanitizeInput
63
- } from "./chunk-7GA5V4L2.js";
63
+ } from "./chunk-XMNMIMR6.js";
64
64
  import {
65
65
  withPrerequisite
66
- } from "./chunk-SMBJQBEC.js";
66
+ } from "./chunk-JJZF37X2.js";
67
67
  import {
68
68
  NOOP_NOTIFIER,
69
69
  RateLimiter,
@@ -86,18 +86,18 @@ import {
86
86
  withAuditTrail,
87
87
  withProgressHeartbeat,
88
88
  wrapToolWithTimeout
89
- } from "./chunk-DSP6PMDI.js";
89
+ } from "./chunk-K3TRG2CD.js";
90
90
  import {
91
91
  createAuditTrail,
92
92
  createGraphAuditBridge,
93
93
  emitPipelinePolicyEvent
94
- } from "./chunk-3ZGYVPN3.js";
94
+ } from "./chunk-ZVZHNAQH.js";
95
95
  import {
96
96
  EventTopics,
97
97
  createEvent,
98
98
  getGlobalEventBus,
99
99
  getGlobalRegistry
100
- } from "./chunk-6YEAUZBF.js";
100
+ } from "./chunk-SOCKDRK6.js";
101
101
  import {
102
102
  IDENTIFIER_RE,
103
103
  LANG_VALUES,
@@ -130,15 +130,15 @@ import {
130
130
  parseRegistry,
131
131
  sourceExistsInRegistry,
132
132
  summarizeContextForPrompt
133
- } from "./chunk-YAZW2ANJ.js";
133
+ } from "./chunk-JBLM3UZA.js";
134
134
  import {
135
135
  getTokenEnvVars,
136
136
  resolveToken
137
- } from "./chunk-XYVYKPIB.js";
137
+ } from "./chunk-G6AVXG6F.js";
138
138
  import {
139
139
  loadPapersRegistry,
140
140
  loadTechniquesRegistry
141
- } from "./chunk-ACWU2RRK.js";
141
+ } from "./chunk-MAP3BVCT.js";
142
142
  import {
143
143
  resolveInsideRoot
144
144
  } from "./chunk-NUBSJGQZ.js";
@@ -147,14 +147,14 @@ import {
147
147
  MemoryImportance,
148
148
  calculateTextJaccardSimilarity,
149
149
  getToolMemory
150
- } from "./chunk-FZ5YJSM6.js";
150
+ } from "./chunk-QUOCOEDQ.js";
151
151
  import {
152
152
  STOPWORDS,
153
153
  truncateWithInfo
154
154
  } from "./chunk-6T3EPABN.js";
155
155
  import {
156
156
  createSessionMemory
157
- } from "./chunk-MUBJ4ROO.js";
157
+ } from "./chunk-OL6TRWBA.js";
158
158
  import {
159
159
  BUILT_IN_EXPERTS,
160
160
  BuiltInExpertTypeSchema,
@@ -172,25 +172,25 @@ import {
172
172
  getAvailableClis,
173
173
  sleep,
174
174
  withTimeout
175
- } from "./chunk-PBD5LS4B.js";
175
+ } from "./chunk-M7566JRS.js";
176
176
  import {
177
177
  BaseAdapter,
178
178
  createStream,
179
179
  requireApiKey,
180
180
  validateApiKeyPresence
181
- } from "./chunk-OJCIP6W5.js";
181
+ } from "./chunk-32AWWH4F.js";
182
182
  import {
183
183
  DEFAULTS
184
- } from "./chunk-7PBXPMKW.js";
184
+ } from "./chunk-G5GOWK5T.js";
185
185
  import {
186
186
  getAvailabilityCache,
187
187
  getCliForModelId,
188
188
  resolveFallback
189
- } from "./chunk-Q2UUVPVY.js";
189
+ } from "./chunk-TJ6UFU3I.js";
190
190
  import {
191
191
  generateHyphenId,
192
192
  generateUUID
193
- } from "./chunk-NZCBB4SP.js";
193
+ } from "./chunk-N62DDWV3.js";
194
194
  import {
195
195
  AGENT_ROUTER_TIMEOUTS,
196
196
  API_TIMEOUTS,
@@ -289,7 +289,7 @@ import {
289
289
  selectStrategyByManifest,
290
290
  toExpertTaskAnalysisResult,
291
291
  withStep
292
- } from "./chunk-65WAPYJ6.js";
292
+ } from "./chunk-6VUIQQ3O.js";
293
293
  import {
294
294
  ensureLearningDir,
295
295
  getMetaOutcomesFile,
@@ -28371,7 +28371,7 @@ function execIdFields(executionId) {
28371
28371
  async function populateUnifiedContextOnState(state, options) {
28372
28372
  const taskCandidate = state["task"];
28373
28373
  if (typeof taskCandidate !== "string" || taskCandidate === "") return;
28374
- const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-BJL3MZTY.js");
28374
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-JNXUAPWJ.js");
28375
28375
  const category = inferTaskCategory2(taskCandidate);
28376
28376
  const executionId = options?.executionId;
28377
28377
  const execFields = execIdFields(executionId);
@@ -41819,6 +41819,29 @@ function registerSearchCodebaseTool(server, deps) {
41819
41819
  // src/mcp/tools/extract-symbols-tool.ts
41820
41820
  import { extname as extname3, resolve as resolve9, sep as sep4 } from "path";
41821
41821
  import { z as z81 } from "zod";
41822
+
41823
+ // src/core/task-analysis/tool-refusal-gap.ts
41824
+ function toolRefusalGapName(tool, capability) {
41825
+ return `${tool}:${capability}`.toLowerCase();
41826
+ }
41827
+ function recordToolRefusal(refusal, context, ledger = getGapLedger()) {
41828
+ const capability = refusal.capability.trim();
41829
+ if (capability === "") return;
41830
+ const report = {
41831
+ gaps: [
41832
+ {
41833
+ type: "tool_refusal",
41834
+ name: toolRefusalGapName(refusal.tool, capability),
41835
+ suggestion: refusal.suggestion
41836
+ }
41837
+ ],
41838
+ available: { tools: [], experts: [] },
41839
+ allSatisfied: false
41840
+ };
41841
+ ledger.record(report, context);
41842
+ }
41843
+
41844
+ // src/mcp/tools/extract-symbols-tool.ts
41822
41845
  var DEFAULT_EXTRACT_MAX_CHARS = 2e4;
41823
41846
  var DEFAULT_EXTRACT_MAX_SYMBOLS = 200;
41824
41847
  var ExtractSymbolsInputSchema = z81.object({
@@ -41935,6 +41958,7 @@ async function extractSymbolsHandler(args, ctx) {
41935
41958
  }
41936
41959
  const result = await extractSymbolIndexResult(resolvedPath);
41937
41960
  if (result.kind === "empty") {
41961
+ recordRefusalIfUnsupported(result.reason, resolvedPath);
41938
41962
  return toolSuccess(emptyIndexMessage(result.reason, resolvedPath));
41939
41963
  }
41940
41964
  return toolSuccess(result.index);
@@ -41947,6 +41971,18 @@ async function extractSymbolsHandler(args, ctx) {
41947
41971
  });
41948
41972
  }
41949
41973
  }
41974
+ function recordRefusalIfUnsupported(reason, resolvedPath) {
41975
+ if (reason !== "unsupported") return;
41976
+ const ext = extname3(resolvedPath).toLowerCase();
41977
+ recordToolRefusal(
41978
+ {
41979
+ tool: "extract_symbols",
41980
+ capability: ext,
41981
+ suggestion: `extract_symbols parses ${SUPPORTED_EXTENSIONS.join(", ")} only. Supporting ${ext === "" ? "extensionless files" : ext} needs a parser for it.`
41982
+ },
41983
+ { goal: `extract_symbols ${resolvedPath}` }
41984
+ );
41985
+ }
41950
41986
  function emptyIndexMessage(reason, filePath) {
41951
41987
  if (reason === "unsupported") {
41952
41988
  const ext = extname3(filePath).toLowerCase();
@@ -43498,6 +43534,20 @@ function gapTaskId(gap) {
43498
43534
  return `gap-${gap.type}-${gap.name.toLowerCase().replace(/[^a-z0-9]+/g, "-")}`;
43499
43535
  }
43500
43536
  var DEFAULT_MIN_OCCURRENCES = 3;
43537
+ function gapTaskTitle(gap) {
43538
+ if (gap.type === "tool_refusal") {
43539
+ return `Extend capability: ${gap.name}`;
43540
+ }
43541
+ return `Build capability: ${gap.type} "${gap.name}"`;
43542
+ }
43543
+ function gapTaskDescription(gap) {
43544
+ const examples = gap.exampleGoals.join("; ") || "(none recorded)";
43545
+ const seen = `observed ${String(gap.count)}x across sessions`;
43546
+ if (gap.type === "tool_refusal") {
43547
+ return `Auto-suggested from the capability-gap ledger (#4651): a tool ran and declined work it cannot do \u2014 ${seen}. Suggestion: ${gap.suggestion}. Example requests: ${examples}. Assess whether extending the tool is worth it; the count is the demand evidence.`;
43548
+ }
43549
+ return `Auto-suggested from the capability-gap ledger (#3555): ${seen} in routing decisions. Suggestion: ${gap.suggestion}. Example goals: ${examples}. Assess whether to add this ${gap.type} (e.g. route the goal through the MetaOrchestrator, #3540).`;
43550
+ }
43501
43551
  function checkForCapabilityGapTriggers(config = {}) {
43502
43552
  const minOccurrences = config.minOccurrences ?? DEFAULT_MIN_OCCURRENCES;
43503
43553
  const maxTriggers = config.maxTriggers ?? DEFAULT_MAX_TRIGGERS;
@@ -43506,8 +43556,8 @@ function checkForCapabilityGapTriggers(config = {}) {
43506
43556
  const qualified = ledger.summarize().filter((gap) => gap.count >= minOccurrences).filter((gap) => !existing.has(gapTaskId(gap)));
43507
43557
  const tasks = qualified.slice(0, maxTriggers).map((gap) => ({
43508
43558
  id: gapTaskId(gap),
43509
- title: `Build capability: ${gap.type} "${gap.name}"`,
43510
- description: `Auto-suggested from the capability-gap ledger (#3555): observed ${String(gap.count)}x in routing decisions. Suggestion: ${gap.suggestion}. Example goals: ${gap.exampleGoals.join("; ") || "(none recorded)"}. Assess whether to add this ${gap.type} (e.g. route the goal through the MetaOrchestrator, #3540).`,
43559
+ title: gapTaskTitle(gap),
43560
+ description: gapTaskDescription(gap),
43511
43561
  assignedTo: "researcher",
43512
43562
  status: "pending"
43513
43563
  }));
@@ -43976,7 +44026,7 @@ async function tryIssueTriage(task) {
43976
44026
  try {
43977
44027
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
43978
44028
  if (issueMatch === null) return null;
43979
- const { createIssueTriage } = await import("./issue-triage-SVM7E5KL.js");
44029
+ const { createIssueTriage } = await import("./issue-triage-EBQFRWOQ.js");
43980
44030
  const triage = createIssueTriage();
43981
44031
  const owner = issueMatch[1] ?? "";
43982
44032
  const num = issueMatch[2] ?? "";
@@ -44004,7 +44054,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
44004
44054
  ]);
44005
44055
  async function classifyWithLLM(task) {
44006
44056
  try {
44007
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-NI3ZJASZ.js");
44057
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-XI4BNDI7.js");
44008
44058
  const prompt = [
44009
44059
  "Classify this task into exactly one pipeline template.",
44010
44060
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -45730,7 +45780,7 @@ var memoryInitPromise = null;
45730
45780
  async function initPipelineMemory() {
45731
45781
  if (cachedMemory !== null) return cachedMemory;
45732
45782
  try {
45733
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-OPYU2ZX3.js");
45783
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-CY3T3XNO.js");
45734
45784
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45735
45785
  const mem = createSessionMemory2(getLearningDir());
45736
45786
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -45792,7 +45842,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
45792
45842
  callRecord(routingMemoryCache);
45793
45843
  return;
45794
45844
  }
45795
- routingMemoryInitPromise ??= import("./routing-memory-MUUFFXDI.js").then(({ createRoutingMemory }) => {
45845
+ routingMemoryInitPromise ??= import("./routing-memory-GFO76574.js").then(({ createRoutingMemory }) => {
45796
45846
  routingMemoryCache ??= createRoutingMemory();
45797
45847
  return routingMemoryCache;
45798
45848
  }).catch((error) => {
@@ -45826,7 +45876,7 @@ ${text}` : "";
45826
45876
  }
45827
45877
  async function getWeatherContext() {
45828
45878
  try {
45829
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-ZG3JCRLK.js");
45879
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-MXQTPLDG.js");
45830
45880
  const report = generateWeatherReport2({ includeAdaptive: true });
45831
45881
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
45832
45882
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -45844,7 +45894,7 @@ ${lines}
45844
45894
  }
45845
45895
  async function getMemoryContext(task) {
45846
45896
  try {
45847
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-OPYU2ZX3.js");
45897
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-CY3T3XNO.js");
45848
45898
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45849
45899
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
45850
45900
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -45959,7 +46009,7 @@ ${contextBlock}`;
45959
46009
  const strategy = config.votingStrategy ?? "higher_order";
45960
46010
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
45961
46011
  try {
45962
- const { executeVoting } = await import("./consensus-vote-FUQNZAHI.js");
46012
+ const { executeVoting } = await import("./consensus-vote-HG5BE56Y.js");
45963
46013
  const votingResult = await executeVoting(
45964
46014
  {
45965
46015
  proposal: buildVoteProposal(plan, research),
@@ -46398,7 +46448,7 @@ async function searchCodebaseForTask(task) {
46398
46448
  }
46399
46449
  async function queryResearchRegistry(task) {
46400
46450
  try {
46401
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-DQXRIADN.js");
46451
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-KUZRNHXY.js");
46402
46452
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
46403
46453
  if (topic === void 0) return null;
46404
46454
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -46469,7 +46519,7 @@ function createScanStageWrapper() {
46469
46519
  try {
46470
46520
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
46471
46521
  if (slug !== void 0) {
46472
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-F32BFXAV.js");
46522
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-IRILDORZ.js");
46473
46523
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
46474
46524
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
46475
46525
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -49532,7 +49582,7 @@ var GitHubTaskTracker = class {
49532
49582
  cachedProvider = null;
49533
49583
  async getProvider() {
49534
49584
  if (this.cachedProvider !== null) return this.cachedProvider;
49535
- const { createScmProvider } = await import("./factory-BQAVRQGT.js");
49585
+ const { createScmProvider } = await import("./factory-WU2VY6QI.js");
49536
49586
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
49537
49587
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
49538
49588
  this.cachedProvider = result.value;
@@ -50374,7 +50424,7 @@ async function probeSource(source, includeModelIds) {
50374
50424
  }
50375
50425
  }
50376
50426
  async function defaultSources(includeOpenRouter) {
50377
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-663E66YC.js");
50427
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-QAH46LJX.js");
50378
50428
  const adapters = createAllAdapters2();
50379
50429
  return buildDefaultModelSources(adapters, { includeOpenRouter });
50380
50430
  }
@@ -54406,4 +54456,4 @@ export {
54406
54456
  shutdownFeedbackSubscriber,
54407
54457
  createEventBusBridge
54408
54458
  };
54409
- //# sourceMappingURL=chunk-ZGAML4CX.js.map
54459
+ //# sourceMappingURL=chunk-XBEED5SG.js.map