nexus-agents 3.9.5 → 3.12.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 (123) hide show
  1. package/dist/{child-mcp-config-MJNB5GXS.js → child-mcp-config-63B5ZK2U.js} +2 -2
  2. package/dist/{chunk-JBSL2HKV.js → chunk-227ICA6P.js} +3 -3
  3. package/dist/{chunk-G5GOWK5T.js → chunk-3NYMGWW7.js} +2 -2
  4. package/dist/{chunk-SOCKDRK6.js → chunk-3P6G3HQA.js} +4 -4
  5. package/dist/{chunk-6VUIQQ3O.js → chunk-3VZWKZ5Q.js} +100 -4
  6. package/dist/{chunk-6VUIQQ3O.js.map → chunk-3VZWKZ5Q.js.map} +1 -1
  7. package/dist/{chunk-ABV3XE7D.js → chunk-7XFZXFXZ.js} +102 -16
  8. package/dist/chunk-7XFZXFXZ.js.map +1 -0
  9. package/dist/{chunk-M3HKW5HF.js → chunk-CV7VZTOP.js} +2 -2
  10. package/dist/{chunk-FJKMNLTU.js → chunk-E6HJPAEQ.js} +4 -4
  11. package/dist/{chunk-ZVZHNAQH.js → chunk-ENFMX6RD.js} +2 -2
  12. package/dist/{chunk-N62DDWV3.js → chunk-ENULFHFF.js} +2 -2
  13. package/dist/{chunk-G6AVXG6F.js → chunk-F3CFOOM6.js} +2 -2
  14. package/dist/{chunk-LZJT2DDT.js → chunk-FGVOWASM.js} +5 -5
  15. package/dist/{chunk-MXJEMYC7.js → chunk-FLFPY5PG.js} +2 -2
  16. package/dist/{chunk-TU4FRZWU.js → chunk-GPHU4GGE.js} +2 -2
  17. package/dist/{chunk-32AWWH4F.js → chunk-GXATLSZX.js} +2 -2
  18. package/dist/{chunk-ERCCVO4N.js → chunk-JR346MM4.js} +2 -2
  19. package/dist/{chunk-KPYPJGSD.js → chunk-KMFVYD3M.js} +7 -7
  20. package/dist/{chunk-7FJFN74H.js → chunk-LRQHJ4E3.js} +5 -5
  21. package/dist/{chunk-JJZF37X2.js → chunk-NLWMLSFQ.js} +3 -3
  22. package/dist/{chunk-QUOCOEDQ.js → chunk-NPCX34QE.js} +4 -4
  23. package/dist/{chunk-OL6TRWBA.js → chunk-NQ2CKBFI.js} +2 -2
  24. package/dist/{chunk-MAP3BVCT.js → chunk-OATAIRGV.js} +2 -2
  25. package/dist/{chunk-KLMXZRDK.js → chunk-OWYVY7W5.js} +2 -2
  26. package/dist/{chunk-DMKV7ANB.js → chunk-RAMWS524.js} +8 -8
  27. package/dist/{chunk-M7566JRS.js → chunk-RPZ3Y7OI.js} +8 -8
  28. package/dist/{chunk-JB3ZZ3Y2.js → chunk-RQWS5CIU.js} +13 -8
  29. package/dist/chunk-RQWS5CIU.js.map +1 -0
  30. package/dist/{chunk-K3TRG2CD.js → chunk-RXNSNTTE.js} +3 -3
  31. package/dist/{chunk-XMNMIMR6.js → chunk-T33KZOQK.js} +4 -4
  32. package/dist/{chunk-XMNMIMR6.js.map → chunk-T33KZOQK.js.map} +1 -1
  33. package/dist/{chunk-TJ6UFU3I.js → chunk-TRR7642Q.js} +2 -2
  34. package/dist/{chunk-JPMXFYKW.js → chunk-TSZTJORP.js} +3 -3
  35. package/dist/{chunk-3WWE26PG.js → chunk-WITM2CRW.js} +2 -2
  36. package/dist/{chunk-JBLM3UZA.js → chunk-X6XZRVXL.js} +7 -7
  37. package/dist/{chunk-RJGW6BKM.js → chunk-XLBLVP35.js} +72 -41
  38. package/dist/{chunk-RJGW6BKM.js.map → chunk-XLBLVP35.js.map} +1 -1
  39. package/dist/{chunk-VF4ZV4KG.js → chunk-YB5J4FWI.js} +2 -2
  40. package/dist/{cli-circuit-breaker-JWCKCVDX.js → cli-circuit-breaker-XJM5D7GG.js} +3 -3
  41. package/dist/cli.js +43 -43
  42. package/dist/{composite-router-5OCKHBR3.js → composite-router-C7V5QT5S.js} +2 -2
  43. package/dist/{consensus-vote-HG5BE56Y.js → consensus-vote-IAURVUZM.js} +16 -16
  44. package/dist/{context-retriever-JNXUAPWJ.js → context-retriever-FSV4WUJO.js} +8 -8
  45. package/dist/{doctor-deep-IZAAFLBC.js → doctor-deep-RN5FVTWK.js} +3 -3
  46. package/dist/{doctor-live-Z5IP2TWY.js → doctor-live-LCR7WY72.js} +9 -9
  47. package/dist/{expert-bridge-XI4BNDI7.js → expert-bridge-ZGYSKIPE.js} +4 -4
  48. package/dist/{factory-QAH46LJX.js → factory-6V2FHFQ4.js} +9 -9
  49. package/dist/{factory-WU2VY6QI.js → factory-DOLFKNUU.js} +5 -5
  50. package/dist/{improvement-review-E2PK2AEA.js → improvement-review-PVYQNV2O.js} +5 -5
  51. package/dist/index.d.ts +80 -0
  52. package/dist/index.js +31 -31
  53. package/dist/{init-opencode-BQHWMUOD.js → init-opencode-4M2SDXVS.js} +6 -6
  54. package/dist/issue-triage-QQXQQAE7.js +19 -0
  55. package/dist/{pr-reviewer-helpers-RN35E43S.js → pr-reviewer-helpers-6Q63TX3W.js} +4 -4
  56. package/dist/{registry-command-J2FV4BT2.js → registry-command-YR52T2XU.js} +2 -2
  57. package/dist/{repo-security-plan-IRILDORZ.js → repo-security-plan-XB4D56AF.js} +3 -3
  58. package/dist/{research-helpers-synthesize-KUZRNHXY.js → research-helpers-synthesize-O4PADVTR.js} +4 -4
  59. package/dist/{routing-memory-GFO76574.js → routing-memory-7BJ4KTSH.js} +2 -2
  60. package/dist/{session-memory-CY3T3XNO.js → session-memory-42EQPQ7Y.js} +3 -3
  61. package/dist/{setup-command-EJFRH3LH.js → setup-command-ATPY3JCV.js} +14 -14
  62. package/dist/{setup-config-A27SDCRY.js → setup-config-EF6WPHVK.js} +3 -3
  63. package/dist/{setup-custom-api-UZV66PZA.js → setup-custom-api-FZ7CUDQN.js} +4 -4
  64. package/dist/{tool-memory-YYEWKSC4.js → tool-memory-EDHPYAE3.js} +5 -5
  65. package/dist/{unified-registry-PKDBZ6FO.js → unified-registry-QZPQF3ZC.js} +10 -10
  66. package/dist/{weather-report-MXQTPLDG.js → weather-report-RS2IWF7C.js} +2 -2
  67. package/package.json +1 -1
  68. package/dist/chunk-ABV3XE7D.js.map +0 -1
  69. package/dist/chunk-JB3ZZ3Y2.js.map +0 -1
  70. package/dist/issue-triage-EBQFRWOQ.js +0 -18
  71. /package/dist/{child-mcp-config-MJNB5GXS.js.map → child-mcp-config-63B5ZK2U.js.map} +0 -0
  72. /package/dist/{chunk-JBSL2HKV.js.map → chunk-227ICA6P.js.map} +0 -0
  73. /package/dist/{chunk-G5GOWK5T.js.map → chunk-3NYMGWW7.js.map} +0 -0
  74. /package/dist/{chunk-SOCKDRK6.js.map → chunk-3P6G3HQA.js.map} +0 -0
  75. /package/dist/{chunk-M3HKW5HF.js.map → chunk-CV7VZTOP.js.map} +0 -0
  76. /package/dist/{chunk-FJKMNLTU.js.map → chunk-E6HJPAEQ.js.map} +0 -0
  77. /package/dist/{chunk-ZVZHNAQH.js.map → chunk-ENFMX6RD.js.map} +0 -0
  78. /package/dist/{chunk-N62DDWV3.js.map → chunk-ENULFHFF.js.map} +0 -0
  79. /package/dist/{chunk-G6AVXG6F.js.map → chunk-F3CFOOM6.js.map} +0 -0
  80. /package/dist/{chunk-LZJT2DDT.js.map → chunk-FGVOWASM.js.map} +0 -0
  81. /package/dist/{chunk-MXJEMYC7.js.map → chunk-FLFPY5PG.js.map} +0 -0
  82. /package/dist/{chunk-TU4FRZWU.js.map → chunk-GPHU4GGE.js.map} +0 -0
  83. /package/dist/{chunk-32AWWH4F.js.map → chunk-GXATLSZX.js.map} +0 -0
  84. /package/dist/{chunk-ERCCVO4N.js.map → chunk-JR346MM4.js.map} +0 -0
  85. /package/dist/{chunk-KPYPJGSD.js.map → chunk-KMFVYD3M.js.map} +0 -0
  86. /package/dist/{chunk-7FJFN74H.js.map → chunk-LRQHJ4E3.js.map} +0 -0
  87. /package/dist/{chunk-JJZF37X2.js.map → chunk-NLWMLSFQ.js.map} +0 -0
  88. /package/dist/{chunk-QUOCOEDQ.js.map → chunk-NPCX34QE.js.map} +0 -0
  89. /package/dist/{chunk-OL6TRWBA.js.map → chunk-NQ2CKBFI.js.map} +0 -0
  90. /package/dist/{chunk-MAP3BVCT.js.map → chunk-OATAIRGV.js.map} +0 -0
  91. /package/dist/{chunk-KLMXZRDK.js.map → chunk-OWYVY7W5.js.map} +0 -0
  92. /package/dist/{chunk-DMKV7ANB.js.map → chunk-RAMWS524.js.map} +0 -0
  93. /package/dist/{chunk-M7566JRS.js.map → chunk-RPZ3Y7OI.js.map} +0 -0
  94. /package/dist/{chunk-K3TRG2CD.js.map → chunk-RXNSNTTE.js.map} +0 -0
  95. /package/dist/{chunk-TJ6UFU3I.js.map → chunk-TRR7642Q.js.map} +0 -0
  96. /package/dist/{chunk-JPMXFYKW.js.map → chunk-TSZTJORP.js.map} +0 -0
  97. /package/dist/{chunk-3WWE26PG.js.map → chunk-WITM2CRW.js.map} +0 -0
  98. /package/dist/{chunk-JBLM3UZA.js.map → chunk-X6XZRVXL.js.map} +0 -0
  99. /package/dist/{chunk-VF4ZV4KG.js.map → chunk-YB5J4FWI.js.map} +0 -0
  100. /package/dist/{cli-circuit-breaker-JWCKCVDX.js.map → cli-circuit-breaker-XJM5D7GG.js.map} +0 -0
  101. /package/dist/{composite-router-5OCKHBR3.js.map → composite-router-C7V5QT5S.js.map} +0 -0
  102. /package/dist/{consensus-vote-HG5BE56Y.js.map → consensus-vote-IAURVUZM.js.map} +0 -0
  103. /package/dist/{context-retriever-JNXUAPWJ.js.map → context-retriever-FSV4WUJO.js.map} +0 -0
  104. /package/dist/{doctor-deep-IZAAFLBC.js.map → doctor-deep-RN5FVTWK.js.map} +0 -0
  105. /package/dist/{doctor-live-Z5IP2TWY.js.map → doctor-live-LCR7WY72.js.map} +0 -0
  106. /package/dist/{expert-bridge-XI4BNDI7.js.map → expert-bridge-ZGYSKIPE.js.map} +0 -0
  107. /package/dist/{factory-QAH46LJX.js.map → factory-6V2FHFQ4.js.map} +0 -0
  108. /package/dist/{factory-WU2VY6QI.js.map → factory-DOLFKNUU.js.map} +0 -0
  109. /package/dist/{improvement-review-E2PK2AEA.js.map → improvement-review-PVYQNV2O.js.map} +0 -0
  110. /package/dist/{init-opencode-BQHWMUOD.js.map → init-opencode-4M2SDXVS.js.map} +0 -0
  111. /package/dist/{issue-triage-EBQFRWOQ.js.map → issue-triage-QQXQQAE7.js.map} +0 -0
  112. /package/dist/{pr-reviewer-helpers-RN35E43S.js.map → pr-reviewer-helpers-6Q63TX3W.js.map} +0 -0
  113. /package/dist/{registry-command-J2FV4BT2.js.map → registry-command-YR52T2XU.js.map} +0 -0
  114. /package/dist/{repo-security-plan-IRILDORZ.js.map → repo-security-plan-XB4D56AF.js.map} +0 -0
  115. /package/dist/{research-helpers-synthesize-KUZRNHXY.js.map → research-helpers-synthesize-O4PADVTR.js.map} +0 -0
  116. /package/dist/{routing-memory-GFO76574.js.map → routing-memory-7BJ4KTSH.js.map} +0 -0
  117. /package/dist/{session-memory-CY3T3XNO.js.map → session-memory-42EQPQ7Y.js.map} +0 -0
  118. /package/dist/{setup-command-EJFRH3LH.js.map → setup-command-ATPY3JCV.js.map} +0 -0
  119. /package/dist/{setup-config-A27SDCRY.js.map → setup-config-EF6WPHVK.js.map} +0 -0
  120. /package/dist/{setup-custom-api-UZV66PZA.js.map → setup-custom-api-FZ7CUDQN.js.map} +0 -0
  121. /package/dist/{tool-memory-YYEWKSC4.js.map → tool-memory-EDHPYAE3.js.map} +0 -0
  122. /package/dist/{unified-registry-PKDBZ6FO.js.map → unified-registry-QZPQF3ZC.js.map} +0 -0
  123. /package/dist/{weather-report-MXQTPLDG.js.map → weather-report-RS2IWF7C.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generateSecurityPlan
3
- } from "./chunk-MXJEMYC7.js";
3
+ } from "./chunk-FLFPY5PG.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-JB3ZZ3Y2.js";
25
+ } from "./chunk-RQWS5CIU.js";
26
26
  import {
27
27
  executeExpert
28
- } from "./chunk-KPYPJGSD.js";
28
+ } from "./chunk-KMFVYD3M.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-DMKV7ANB.js";
49
+ } from "./chunk-RAMWS524.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-JBSL2HKV.js";
56
+ } from "./chunk-227ICA6P.js";
57
57
  import {
58
58
  IssueTriage
59
- } from "./chunk-ABV3XE7D.js";
59
+ } from "./chunk-7XFZXFXZ.js";
60
60
  import {
61
61
  resolveEnvMode,
62
62
  sanitizeInput
63
- } from "./chunk-XMNMIMR6.js";
63
+ } from "./chunk-T33KZOQK.js";
64
64
  import {
65
65
  withPrerequisite
66
- } from "./chunk-JJZF37X2.js";
66
+ } from "./chunk-NLWMLSFQ.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-K3TRG2CD.js";
89
+ } from "./chunk-RXNSNTTE.js";
90
90
  import {
91
91
  createAuditTrail,
92
92
  createGraphAuditBridge,
93
93
  emitPipelinePolicyEvent
94
- } from "./chunk-ZVZHNAQH.js";
94
+ } from "./chunk-ENFMX6RD.js";
95
95
  import {
96
96
  EventTopics,
97
97
  createEvent,
98
98
  getGlobalEventBus,
99
99
  getGlobalRegistry
100
- } from "./chunk-SOCKDRK6.js";
100
+ } from "./chunk-3P6G3HQA.js";
101
101
  import {
102
102
  IDENTIFIER_RE,
103
103
  LANG_VALUES,
@@ -130,31 +130,31 @@ import {
130
130
  parseRegistry,
131
131
  sourceExistsInRegistry,
132
132
  summarizeContextForPrompt
133
- } from "./chunk-JBLM3UZA.js";
134
- import {
135
- getTokenEnvVars,
136
- resolveToken
137
- } from "./chunk-G6AVXG6F.js";
133
+ } from "./chunk-X6XZRVXL.js";
138
134
  import {
139
135
  loadPapersRegistry,
140
136
  loadTechniquesRegistry
141
- } from "./chunk-MAP3BVCT.js";
137
+ } from "./chunk-OATAIRGV.js";
142
138
  import {
143
139
  resolveInsideRoot
144
140
  } from "./chunk-NUBSJGQZ.js";
141
+ import {
142
+ getTokenEnvVars,
143
+ resolveToken
144
+ } from "./chunk-F3CFOOM6.js";
145
145
  import {
146
146
  DEFAULT_RELEVANCE_CONFIG,
147
147
  MemoryImportance,
148
148
  calculateTextJaccardSimilarity,
149
149
  getToolMemory
150
- } from "./chunk-QUOCOEDQ.js";
150
+ } from "./chunk-NPCX34QE.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-OL6TRWBA.js";
157
+ } from "./chunk-NQ2CKBFI.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-M7566JRS.js";
175
+ } from "./chunk-RPZ3Y7OI.js";
176
176
  import {
177
177
  BaseAdapter,
178
178
  createStream,
179
179
  requireApiKey,
180
180
  validateApiKeyPresence
181
- } from "./chunk-32AWWH4F.js";
181
+ } from "./chunk-GXATLSZX.js";
182
182
  import {
183
183
  DEFAULTS
184
- } from "./chunk-G5GOWK5T.js";
184
+ } from "./chunk-3NYMGWW7.js";
185
185
  import {
186
186
  getAvailabilityCache,
187
187
  getCliForModelId,
188
188
  resolveFallback
189
- } from "./chunk-TJ6UFU3I.js";
189
+ } from "./chunk-TRR7642Q.js";
190
190
  import {
191
191
  generateHyphenId,
192
192
  generateUUID
193
- } from "./chunk-N62DDWV3.js";
193
+ } from "./chunk-ENULFHFF.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-6VUIQQ3O.js";
292
+ } from "./chunk-3VZWKZ5Q.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-JNXUAPWJ.js");
28374
+ const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-FSV4WUJO.js");
28375
28375
  const category = inferTaskCategory2(taskCandidate);
28376
28376
  const executionId = options?.executionId;
28377
28377
  const execFields = execIdFields(executionId);
@@ -43973,7 +43973,7 @@ function classifyTask(task) {
43973
43973
  const scores = calculateTypeScores(lower);
43974
43974
  const pipelineType = selectBestType(scores);
43975
43975
  const complexity = estimateComplexity2(lower);
43976
- const maxScore = Math.max(...Object.values(scores), 1);
43976
+ const maxScore = Math.max(...Object.values(scores));
43977
43977
  const keywords = extractMatchedKeywords(lower, pipelineType);
43978
43978
  return {
43979
43979
  pipelineType,
@@ -44022,11 +44022,14 @@ var TRIAGE_CATEGORY_MAP = {
44022
44022
  security: "audit",
44023
44023
  research: "research"
44024
44024
  };
44025
+ function llmClassificationEnabled() {
44026
+ return process.env["NEXUS_LLM_CLASSIFICATION"] === "1";
44027
+ }
44025
44028
  async function tryIssueTriage(task) {
44026
44029
  try {
44027
44030
  const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
44028
44031
  if (issueMatch === null) return null;
44029
- const { createIssueTriage } = await import("./issue-triage-EBQFRWOQ.js");
44032
+ const { createIssueTriage } = await import("./issue-triage-QQXQQAE7.js");
44030
44033
  const triage = createIssueTriage();
44031
44034
  const owner = issueMatch[1] ?? "";
44032
44035
  const num = issueMatch[2] ?? "";
@@ -44054,7 +44057,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
44054
44057
  ]);
44055
44058
  async function classifyWithLLM(task) {
44056
44059
  try {
44057
- const { executeExpert: executeExpert2 } = await import("./expert-bridge-XI4BNDI7.js");
44060
+ const { executeExpert: executeExpert2 } = await import("./expert-bridge-ZGYSKIPE.js");
44058
44061
  const prompt = [
44059
44062
  "Classify this task into exactly one pipeline template.",
44060
44063
  "Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
@@ -44100,7 +44103,7 @@ async function runAdaptiveOrchestrator(task, options) {
44100
44103
  enriched: enriched.pipelineType
44101
44104
  });
44102
44105
  classification = enriched;
44103
- } else {
44106
+ } else if (llmClassificationEnabled()) {
44104
44107
  const llmResult = await classifyWithLLM(cleanTask);
44105
44108
  if (llmResult !== null) {
44106
44109
  logger39.info("Classification refined via LLM", {
@@ -45780,7 +45783,7 @@ var memoryInitPromise = null;
45780
45783
  async function initPipelineMemory() {
45781
45784
  if (cachedMemory !== null) return cachedMemory;
45782
45785
  try {
45783
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-CY3T3XNO.js");
45786
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-42EQPQ7Y.js");
45784
45787
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45785
45788
  const mem = createSessionMemory2(getLearningDir());
45786
45789
  mem.startSession(`pipeline-${String(getTimeProvider().now())}`);
@@ -45842,7 +45845,7 @@ function recordRoutingExperience(category, success, durationMs, tokensUsed = 0,
45842
45845
  callRecord(routingMemoryCache);
45843
45846
  return;
45844
45847
  }
45845
- routingMemoryInitPromise ??= import("./routing-memory-GFO76574.js").then(({ createRoutingMemory }) => {
45848
+ routingMemoryInitPromise ??= import("./routing-memory-7BJ4KTSH.js").then(({ createRoutingMemory }) => {
45846
45849
  routingMemoryCache ??= createRoutingMemory();
45847
45850
  return routingMemoryCache;
45848
45851
  }).catch((error) => {
@@ -45876,7 +45879,7 @@ ${text}` : "";
45876
45879
  }
45877
45880
  async function getWeatherContext() {
45878
45881
  try {
45879
- const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-MXQTPLDG.js");
45882
+ const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-RS2IWF7C.js");
45880
45883
  const report = generateWeatherReport2({ includeAdaptive: true });
45881
45884
  const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
45882
45885
  if (!Array.isArray(mappings) || mappings.length === 0) return "";
@@ -45894,7 +45897,7 @@ ${lines}
45894
45897
  }
45895
45898
  async function getMemoryContext(task) {
45896
45899
  try {
45897
- const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-CY3T3XNO.js");
45900
+ const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-42EQPQ7Y.js");
45898
45901
  const { getLearningDir } = await import("./learning-persistence-EGY4VKKO.js");
45899
45902
  const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
45900
45903
  const learnings = memory.searchLearnings(task.slice(0, 200));
@@ -46009,7 +46012,7 @@ ${contextBlock}`;
46009
46012
  const strategy = config.votingStrategy ?? "higher_order";
46010
46013
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
46011
46014
  try {
46012
- const { executeVoting } = await import("./consensus-vote-HG5BE56Y.js");
46015
+ const { executeVoting } = await import("./consensus-vote-IAURVUZM.js");
46013
46016
  const votingResult = await executeVoting(
46014
46017
  {
46015
46018
  proposal: buildVoteProposal(plan, research),
@@ -46448,7 +46451,7 @@ async function searchCodebaseForTask(task) {
46448
46451
  }
46449
46452
  async function queryResearchRegistry(task) {
46450
46453
  try {
46451
- const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-KUZRNHXY.js");
46454
+ const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-O4PADVTR.js");
46452
46455
  const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
46453
46456
  if (topic === void 0) return null;
46454
46457
  const result = await synthesizeResearch2(topic.slice(0, 50));
@@ -46519,7 +46522,7 @@ function createScanStageWrapper() {
46519
46522
  try {
46520
46523
  const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
46521
46524
  if (slug !== void 0) {
46522
- const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-IRILDORZ.js");
46525
+ const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-XB4D56AF.js");
46523
46526
  const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
46524
46527
  const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
46525
46528
  return output(PIPELINE_STATE_KEYS.FINDINGS, recs, getTimeProvider().now() - start, true);
@@ -48899,6 +48902,29 @@ function guardAuthority(strategy, actionClass) {
48899
48902
  throw decision.refusal;
48900
48903
  }
48901
48904
  }
48905
+ var ExecuteEnvelopeRefusalError = class extends Error {
48906
+ code = "envelope_undeclared";
48907
+ strategy;
48908
+ constructor(strategy) {
48909
+ super(
48910
+ `Strategy '${strategy}' was dispatched for EXECUTION but declares no executeEnvelope. Refused fail-closed (ADR-0017, #4655): an undeclared envelope means "cannot execute", never "unbounded". Declare one in governance/strategy-manifests.yaml (and its in-tree mirror).`
48911
+ );
48912
+ this.name = "ExecuteEnvelopeRefusalError";
48913
+ this.strategy = strategy;
48914
+ }
48915
+ };
48916
+ function evaluateExecuteEnvelope(strategy) {
48917
+ const envelope = getStrategyManifest(strategy)?.executeEnvelope;
48918
+ if (envelope === void 0) {
48919
+ return { permitted: false, refusal: new ExecuteEnvelopeRefusalError(strategy) };
48920
+ }
48921
+ return { permitted: true, envelope };
48922
+ }
48923
+ function guardExecuteEnvelope(strategy) {
48924
+ const decision = evaluateExecuteEnvelope(strategy);
48925
+ if (!decision.permitted) throw decision.refusal;
48926
+ return decision.envelope;
48927
+ }
48902
48928
 
48903
48929
  // src/orchestration/meta-orchestrator.ts
48904
48930
  function createAuditLogSink(logger59) {
@@ -48955,6 +48981,9 @@ function createMetaOrchestrator(options) {
48955
48981
  if (input.requiredAuthority !== void 0) {
48956
48982
  guardAuthority(decision.strategy, input.requiredAuthority);
48957
48983
  }
48984
+ if (input.requiresExecuteEnvelope === true) {
48985
+ guardExecuteEnvelope(decision.strategy);
48986
+ }
48958
48987
  const timestamp = new Date(getTimeProvider().now()).toISOString();
48959
48988
  sink.record(toRecord(decision, input.goal, forced, timestamp));
48960
48989
  if (shadowSelector !== void 0 && shadowSink !== void 0) {
@@ -49582,7 +49611,7 @@ var GitHubTaskTracker = class {
49582
49611
  cachedProvider = null;
49583
49612
  async getProvider() {
49584
49613
  if (this.cachedProvider !== null) return this.cachedProvider;
49585
- const { createScmProvider } = await import("./factory-WU2VY6QI.js");
49614
+ const { createScmProvider } = await import("./factory-DOLFKNUU.js");
49586
49615
  const result = await createScmProvider({ repo: this.config.repo ?? "" });
49587
49616
  if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
49588
49617
  this.cachedProvider = result.value;
@@ -50172,7 +50201,7 @@ var RunInputSchema = z107.object({
50172
50201
  "Dispatch mode (#3732). 'sync' (default): run inline. 'async' (only with execute:true): return a jobId immediately + run in background (poll get_job_result)."
50173
50202
  )
50174
50203
  });
50175
- var NOTE = "Routing decision only (read-only). Invoke the recommendedTool to execute, or wait for inline execution (run execute: true) in a later release. The other pipeline tools remain available as advanced force-strategy paths.";
50204
+ var NOTE = "Routing decision only (read-only). Invoke the recommendedTool to execute, or re-run with execute: true for inline execution. The other pipeline tools remain available as advanced force-strategy paths.";
50176
50205
  function toMetaInput(input, mode) {
50177
50206
  const signals = {};
50178
50207
  if (input.requiresConsensus !== void 0) signals.requiresConsensus = input.requiresConsensus;
@@ -50182,6 +50211,8 @@ function toMetaInput(input, mode) {
50182
50211
  return {
50183
50212
  goal: input.goal,
50184
50213
  requiredAuthority: dispatchActionClass(mode),
50214
+ // #4655: an executing dispatch must also clear the envelope precondition.
50215
+ requiresExecuteEnvelope: mode === "execute",
50185
50216
  ...Object.keys(signals).length > 0 ? { signals } : {},
50186
50217
  ...input.forceStrategy !== void 0 ? { forceStrategy: input.forceStrategy } : {}
50187
50218
  };
@@ -50424,7 +50455,7 @@ async function probeSource(source, includeModelIds) {
50424
50455
  }
50425
50456
  }
50426
50457
  async function defaultSources(includeOpenRouter) {
50427
- const { createAllAdapters: createAllAdapters2 } = await import("./factory-QAH46LJX.js");
50458
+ const { createAllAdapters: createAllAdapters2 } = await import("./factory-6V2FHFQ4.js");
50428
50459
  const adapters = createAllAdapters2();
50429
50460
  return buildDefaultModelSources(adapters, { includeOpenRouter });
50430
50461
  }
@@ -54456,4 +54487,4 @@ export {
54456
54487
  shutdownFeedbackSubscriber,
54457
54488
  createEventBusBridge
54458
54489
  };
54459
- //# sourceMappingURL=chunk-RJGW6BKM.js.map
54490
+ //# sourceMappingURL=chunk-XLBLVP35.js.map