nexus-agents 2.79.3 → 2.79.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.
- package/README.md +2 -2
- package/dist/{child-mcp-config-CTO2MBRM.js → child-mcp-config-DFRYTRBK.js} +2 -2
- package/dist/{chunk-HB4MIDHJ.js → chunk-3ENBGGYA.js} +104 -61
- package/dist/{chunk-HB4MIDHJ.js.map → chunk-3ENBGGYA.js.map} +1 -1
- package/dist/{chunk-6E3NMMEY.js → chunk-3RZWLQSC.js} +2 -2
- package/dist/{chunk-6E3NMMEY.js.map → chunk-3RZWLQSC.js.map} +1 -1
- package/dist/{chunk-KT5FIBWS.js → chunk-42MM7GKW.js} +2 -2
- package/dist/{chunk-3NIPH6UP.js → chunk-45NUO4FE.js} +2 -2
- package/dist/{chunk-2YPG6PDG.js → chunk-ACP4YARI.js} +3 -3
- package/dist/{chunk-D6TM2VHX.js → chunk-BIH2CBC5.js} +44 -21
- package/dist/chunk-BIH2CBC5.js.map +1 -0
- package/dist/{chunk-SD76JZBG.js → chunk-BSQ4KTY4.js} +2 -2
- package/dist/{chunk-6TFTVW77.js → chunk-BXI6DKBU.js} +3 -3
- package/dist/{chunk-PLX6FCFC.js → chunk-DOI7RE3X.js} +2 -2
- package/dist/{chunk-SWFJU3W2.js → chunk-DW3UTO43.js} +56 -46
- package/dist/{chunk-SWFJU3W2.js.map → chunk-DW3UTO43.js.map} +1 -1
- package/dist/{chunk-7XCUZI4G.js → chunk-IPDUZJPH.js} +3 -3
- package/dist/{chunk-2UYTFLMO.js → chunk-JMRCMMZ5.js} +2 -2
- package/dist/{chunk-GONMG4NM.js → chunk-LFTK5ZQG.js} +2 -2
- package/dist/{chunk-DLXT23AC.js → chunk-NJPFN75N.js} +2 -2
- package/dist/{chunk-YXWGEIQR.js → chunk-NVSJXN4S.js} +2 -2
- package/dist/{chunk-Q5CFPIJ5.js → chunk-NXNNT5XW.js} +3 -3
- package/dist/chunk-OFRDE7MK.js +136 -0
- package/dist/chunk-OFRDE7MK.js.map +1 -0
- package/dist/{chunk-L6SCKLGO.js → chunk-OGV7J5WG.js} +3 -3
- package/dist/{chunk-ZVCED4Z4.js → chunk-PAKVXGS2.js} +2 -2
- package/dist/{chunk-DNO2INX5.js → chunk-PDCLBWH5.js} +3 -3
- package/dist/{chunk-K2QILJG4.js → chunk-PHBRELUK.js} +33 -9
- package/dist/chunk-PHBRELUK.js.map +1 -0
- package/dist/{chunk-JI7S55R3.js → chunk-SU3Y6LU2.js} +8 -8
- package/dist/chunk-SU3Y6LU2.js.map +1 -0
- package/dist/{chunk-FJWWSVWB.js → chunk-TN5ZKSGC.js} +2 -2
- package/dist/{chunk-5O6XLBPP.js → chunk-UNFS6YBY.js} +2 -2
- package/dist/{chunk-HYU4GZY6.js → chunk-UNRTM43V.js} +2 -2
- package/dist/{chunk-VIQOVK4E.js → chunk-UOR2JWFH.js} +7 -136
- package/dist/chunk-UOR2JWFH.js.map +1 -0
- package/dist/{chunk-WDYCIJWN.js → chunk-UQOSVOEU.js} +4 -3
- package/dist/{chunk-WDYCIJWN.js.map → chunk-UQOSVOEU.js.map} +1 -1
- package/dist/{chunk-FVPYP5DD.js → chunk-UWDVEMYZ.js} +4 -4
- package/dist/{cli-circuit-breaker-I74ZQ44Q.js → cli-circuit-breaker-T75HOLZK.js} +4 -4
- package/dist/cli.js +46 -45
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-V3OC57IE.js → composite-router-OPSK5FCQ.js} +2 -2
- package/dist/{consensus-vote-ESFPGEJE.js → consensus-vote-CYUPIJXR.js} +11 -11
- package/dist/{context-retriever-MB3D7KS6.js → context-retriever-6AWHCHRP.js} +5 -5
- package/dist/{doctor-deep-KQ765XZA.js → doctor-deep-XBPRQ6ZP.js} +3 -3
- package/dist/expert-bridge-5YOPK5IT.js +11 -0
- package/dist/{factory-BUUXNGIB.js → factory-DN7SJZ5Z.js} +5 -5
- package/dist/{factory-LHHYDVZX.js → factory-Y3TMP4OQ.js} +4 -4
- package/dist/index.d.ts +24 -2
- package/dist/index.js +30 -28
- package/dist/index.js.map +1 -1
- package/dist/{init-opencode-GXZN2W5S.js → init-opencode-RV6IQEMS.js} +5 -5
- package/dist/{issue-triage-RMXPDZ2K.js → issue-triage-UTWKXLKC.js} +4 -4
- package/dist/{pr-reviewer-helpers-XCY7HOPE.js → pr-reviewer-helpers-L4L324FQ.js} +2 -2
- package/dist/{registry-command-6E4YKAMT.js → registry-command-6KJWW3W7.js} +2 -2
- package/dist/{repo-security-plan-AGRU72DL.js → repo-security-plan-HNLMF7J7.js} +3 -3
- package/dist/{research-helpers-synthesize-K2UCJQQG.js → research-helpers-synthesize-77TLYSW4.js} +3 -3
- package/dist/{routing-memory-3B6DDZ76.js → routing-memory-6DV6ZPAH.js} +2 -2
- package/dist/{session-memory-L7EQIY2O.js → session-memory-XZ3NJIR4.js} +3 -3
- package/dist/{setup-command-QSAGFMGN.js → setup-command-QOXG36UV.js} +10 -9
- package/dist/{setup-config-EQT24DD4.js → setup-config-B4V4QHDP.js} +3 -3
- package/dist/{setup-custom-api-IBDV654K.js → setup-custom-api-PJ6TGHJH.js} +4 -4
- package/dist/{tool-memory-6HCHQLAN.js → tool-memory-K2QPTPKV.js} +4 -4
- package/dist/{weather-report-ER3WUZ7S.js → weather-report-ZB4AKOIA.js} +2 -2
- package/package.json +4 -4
- package/scripts/postinstall.js +1 -1
- package/dist/chunk-D6TM2VHX.js.map +0 -1
- package/dist/chunk-JI7S55R3.js.map +0 -1
- package/dist/chunk-K2QILJG4.js.map +0 -1
- package/dist/chunk-VIQOVK4E.js.map +0 -1
- package/dist/expert-bridge-JKLC57IC.js +0 -10
- /package/dist/{child-mcp-config-CTO2MBRM.js.map → child-mcp-config-DFRYTRBK.js.map} +0 -0
- /package/dist/{chunk-KT5FIBWS.js.map → chunk-42MM7GKW.js.map} +0 -0
- /package/dist/{chunk-3NIPH6UP.js.map → chunk-45NUO4FE.js.map} +0 -0
- /package/dist/{chunk-2YPG6PDG.js.map → chunk-ACP4YARI.js.map} +0 -0
- /package/dist/{chunk-SD76JZBG.js.map → chunk-BSQ4KTY4.js.map} +0 -0
- /package/dist/{chunk-6TFTVW77.js.map → chunk-BXI6DKBU.js.map} +0 -0
- /package/dist/{chunk-PLX6FCFC.js.map → chunk-DOI7RE3X.js.map} +0 -0
- /package/dist/{chunk-7XCUZI4G.js.map → chunk-IPDUZJPH.js.map} +0 -0
- /package/dist/{chunk-2UYTFLMO.js.map → chunk-JMRCMMZ5.js.map} +0 -0
- /package/dist/{chunk-GONMG4NM.js.map → chunk-LFTK5ZQG.js.map} +0 -0
- /package/dist/{chunk-DLXT23AC.js.map → chunk-NJPFN75N.js.map} +0 -0
- /package/dist/{chunk-YXWGEIQR.js.map → chunk-NVSJXN4S.js.map} +0 -0
- /package/dist/{chunk-Q5CFPIJ5.js.map → chunk-NXNNT5XW.js.map} +0 -0
- /package/dist/{chunk-L6SCKLGO.js.map → chunk-OGV7J5WG.js.map} +0 -0
- /package/dist/{chunk-ZVCED4Z4.js.map → chunk-PAKVXGS2.js.map} +0 -0
- /package/dist/{chunk-DNO2INX5.js.map → chunk-PDCLBWH5.js.map} +0 -0
- /package/dist/{chunk-FJWWSVWB.js.map → chunk-TN5ZKSGC.js.map} +0 -0
- /package/dist/{chunk-5O6XLBPP.js.map → chunk-UNFS6YBY.js.map} +0 -0
- /package/dist/{chunk-HYU4GZY6.js.map → chunk-UNRTM43V.js.map} +0 -0
- /package/dist/{chunk-FVPYP5DD.js.map → chunk-UWDVEMYZ.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-I74ZQ44Q.js.map → cli-circuit-breaker-T75HOLZK.js.map} +0 -0
- /package/dist/{composite-router-V3OC57IE.js.map → composite-router-OPSK5FCQ.js.map} +0 -0
- /package/dist/{consensus-vote-ESFPGEJE.js.map → consensus-vote-CYUPIJXR.js.map} +0 -0
- /package/dist/{context-retriever-MB3D7KS6.js.map → context-retriever-6AWHCHRP.js.map} +0 -0
- /package/dist/{doctor-deep-KQ765XZA.js.map → doctor-deep-XBPRQ6ZP.js.map} +0 -0
- /package/dist/{expert-bridge-JKLC57IC.js.map → expert-bridge-5YOPK5IT.js.map} +0 -0
- /package/dist/{factory-BUUXNGIB.js.map → factory-DN7SJZ5Z.js.map} +0 -0
- /package/dist/{factory-LHHYDVZX.js.map → factory-Y3TMP4OQ.js.map} +0 -0
- /package/dist/{init-opencode-GXZN2W5S.js.map → init-opencode-RV6IQEMS.js.map} +0 -0
- /package/dist/{issue-triage-RMXPDZ2K.js.map → issue-triage-UTWKXLKC.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-XCY7HOPE.js.map → pr-reviewer-helpers-L4L324FQ.js.map} +0 -0
- /package/dist/{registry-command-6E4YKAMT.js.map → registry-command-6KJWW3W7.js.map} +0 -0
- /package/dist/{repo-security-plan-AGRU72DL.js.map → repo-security-plan-HNLMF7J7.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-K2UCJQQG.js.map → research-helpers-synthesize-77TLYSW4.js.map} +0 -0
- /package/dist/{routing-memory-3B6DDZ76.js.map → routing-memory-6DV6ZPAH.js.map} +0 -0
- /package/dist/{session-memory-L7EQIY2O.js.map → session-memory-XZ3NJIR4.js.map} +0 -0
- /package/dist/{setup-command-QSAGFMGN.js.map → setup-command-QOXG36UV.js.map} +0 -0
- /package/dist/{setup-config-EQT24DD4.js.map → setup-config-B4V4QHDP.js.map} +0 -0
- /package/dist/{setup-custom-api-IBDV654K.js.map → setup-custom-api-PJ6TGHJH.js.map} +0 -0
- /package/dist/{tool-memory-6HCHQLAN.js.map → tool-memory-K2QPTPKV.js.map} +0 -0
- /package/dist/{weather-report-ER3WUZ7S.js.map → weather-report-ZB4AKOIA.js.map} +0 -0
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Nexus Agents makes your AI coding tools work together intelligently. It coordina
|
|
|
21
21
|
- **Consensus Voting** — Six aggregation strategies: simple/super-majority, unanimous, higher-order Bayesian, opinion-wise, proof-of-learning.
|
|
22
22
|
- **Development Pipeline** — Research → Plan → Vote → Decompose → Implement → QA → Security. Autonomous, harness, and dry-run modes.
|
|
23
23
|
- **Memory & Learning** — Multiple backends (session, belief, adaptive, routing, graph, hybrid, agentic, typed) with cross-session persistence.
|
|
24
|
-
- **MCP Tools** — Agent management, workflow execution, research, memory, codebase intelligence, repo analysis, consensus, operations. See [docs/ENTRYPOINTS.md](https://github.com/
|
|
24
|
+
- **MCP Tools** — Agent management, workflow execution, research, memory, codebase intelligence, repo analysis, consensus, operations. See [docs/ENTRYPOINTS.md](https://github.com/nexus-substrate/nexus-agents/blob/main/docs/ENTRYPOINTS.md) for the canonical list.
|
|
25
25
|
- **Research System** — Discovery across arXiv, GitHub, Semantic Scholar, and other sources with auto-catalog and synthesis.
|
|
26
26
|
- **Security** — Sandboxing, trust classification, SARIF parsing, input sanitization, red team pipeline.
|
|
27
27
|
|
|
@@ -331,7 +331,7 @@ if (result.ok) {
|
|
|
331
331
|
|
|
332
332
|
```bash
|
|
333
333
|
# Clone the repository
|
|
334
|
-
git clone https://github.com/
|
|
334
|
+
git clone https://github.com/nexus-substrate/nexus-agents.git
|
|
335
335
|
cd nexus-agents
|
|
336
336
|
|
|
337
337
|
# Install dependencies
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createLogger
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UQOSVOEU.js";
|
|
4
4
|
import "./chunk-7BMOZJYS.js";
|
|
5
5
|
import "./chunk-UP2VWCW5.js";
|
|
6
6
|
|
|
@@ -59,4 +59,4 @@ export {
|
|
|
59
59
|
generateMcpConfig,
|
|
60
60
|
getDefaultAllowedTools
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=child-mcp-config-
|
|
62
|
+
//# sourceMappingURL=child-mcp-config-DFRYTRBK.js.map
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
getTokenEnvVars,
|
|
9
9
|
resolveToken
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LFTK5ZQG.js";
|
|
11
11
|
import {
|
|
12
12
|
executeExpert
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PHBRELUK.js";
|
|
14
14
|
import {
|
|
15
15
|
EventTopics,
|
|
16
16
|
NOOP_NOTIFIER,
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
withAccessPolicy,
|
|
37
37
|
withProgressHeartbeat,
|
|
38
38
|
wrapToolWithTimeout
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-DW3UTO43.js";
|
|
40
40
|
import {
|
|
41
41
|
REGISTRY_PATH,
|
|
42
42
|
getProjectRoot,
|
|
@@ -45,14 +45,14 @@ import {
|
|
|
45
45
|
normalizeTopicToCanonical,
|
|
46
46
|
savePapersRegistry,
|
|
47
47
|
synthesizeResearch
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-UNFS6YBY.js";
|
|
49
49
|
import {
|
|
50
50
|
IssueTriage,
|
|
51
51
|
sanitizeInput
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-BXI6DKBU.js";
|
|
53
53
|
import {
|
|
54
54
|
generateSecurityPlan
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-TN5ZKSGC.js";
|
|
56
56
|
import {
|
|
57
57
|
analyzeGitHubRepo
|
|
58
58
|
} from "./chunk-7J7PNOJQ.js";
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
getContextForTask,
|
|
65
65
|
inferTaskCategory,
|
|
66
66
|
summarizeContextForPrompt
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-PDCLBWH5.js";
|
|
68
68
|
import {
|
|
69
69
|
DEFAULT_RELEVANCE_CONFIG,
|
|
70
70
|
MemoryImportance,
|
|
@@ -72,17 +72,19 @@ import {
|
|
|
72
72
|
generateHyphenId,
|
|
73
73
|
generateUUID,
|
|
74
74
|
getToolMemory
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-NXNNT5XW.js";
|
|
76
76
|
import {
|
|
77
77
|
DEFAULT_TASK_TTL_MS,
|
|
78
78
|
DEFAULT_TOOL_RATE_LIMITS,
|
|
79
|
-
clampTaskTtl
|
|
79
|
+
clampTaskTtl
|
|
80
|
+
} from "./chunk-UOR2JWFH.js";
|
|
81
|
+
import {
|
|
80
82
|
getAvailabilityCache,
|
|
81
83
|
resolveFallback
|
|
82
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-OFRDE7MK.js";
|
|
83
85
|
import {
|
|
84
86
|
DEFAULTS
|
|
85
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-UNRTM43V.js";
|
|
86
88
|
import {
|
|
87
89
|
resolveInsideRoot
|
|
88
90
|
} from "./chunk-NUBSJGQZ.js";
|
|
@@ -98,7 +100,7 @@ import {
|
|
|
98
100
|
getAvailableClis,
|
|
99
101
|
sleep,
|
|
100
102
|
withTimeout
|
|
101
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-BIH2CBC5.js";
|
|
102
104
|
import {
|
|
103
105
|
BUILT_IN_EXPERTS,
|
|
104
106
|
BuiltInExpertTypeSchema,
|
|
@@ -110,7 +112,7 @@ import {
|
|
|
110
112
|
} from "./chunk-PQHVC4BD.js";
|
|
111
113
|
import {
|
|
112
114
|
createSessionMemory
|
|
113
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-45NUO4FE.js";
|
|
114
116
|
import {
|
|
115
117
|
AGENT_ROUTER_TIMEOUTS,
|
|
116
118
|
API_TIMEOUTS,
|
|
@@ -180,7 +182,7 @@ import {
|
|
|
180
182
|
resolveModelIdentitySync,
|
|
181
183
|
toExpertTaskAnalysisResult,
|
|
182
184
|
withStep
|
|
183
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-UQOSVOEU.js";
|
|
184
186
|
import {
|
|
185
187
|
getNexusDataDir,
|
|
186
188
|
nexusDataPath
|
|
@@ -25534,7 +25536,7 @@ function getAvailableApiKeys() {
|
|
|
25534
25536
|
}
|
|
25535
25537
|
function buildErrorMessage() {
|
|
25536
25538
|
const keyList = API_KEYS.map((k) => ` - ${k.name} (${k.provider})`).join("\n");
|
|
25537
|
-
return "No model adapter available. This operation requires either:\n\n" + CLI_AUTH_INSTRUCTIONS + "\n\n2. An API key environment variable:\n" + keyList + "\n\nSee: https://github.com/
|
|
25539
|
+
return "No model adapter available. This operation requires either:\n\n" + CLI_AUTH_INSTRUCTIONS + "\n\n2. An API key environment variable:\n" + keyList + "\n\nSee: https://github.com/nexus-substrate/nexus-agents#prerequisites--environment";
|
|
25538
25540
|
}
|
|
25539
25541
|
async function detectAvailableClis(cache, log) {
|
|
25540
25542
|
try {
|
|
@@ -26674,7 +26676,7 @@ async function populateUnifiedContextOnState(state) {
|
|
|
26674
26676
|
try {
|
|
26675
26677
|
const taskCandidate = state["task"];
|
|
26676
26678
|
if (typeof taskCandidate !== "string" || taskCandidate === "") return;
|
|
26677
|
-
const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-
|
|
26679
|
+
const { getContextForTask: getContextForTask2, inferTaskCategory: inferTaskCategory2 } = await import("./context-retriever-6AWHCHRP.js");
|
|
26678
26680
|
const ctx = await getContextForTask2({
|
|
26679
26681
|
task: taskCandidate,
|
|
26680
26682
|
category: inferTaskCategory2(taskCandidate),
|
|
@@ -41898,7 +41900,7 @@ async function tryIssueTriage(task) {
|
|
|
41898
41900
|
try {
|
|
41899
41901
|
const issueMatch = task.match(/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
|
|
41900
41902
|
if (issueMatch === null) return null;
|
|
41901
|
-
const { createIssueTriage } = await import("./issue-triage-
|
|
41903
|
+
const { createIssueTriage } = await import("./issue-triage-UTWKXLKC.js");
|
|
41902
41904
|
const triage = createIssueTriage();
|
|
41903
41905
|
const owner = issueMatch[1] ?? "";
|
|
41904
41906
|
const num = issueMatch[2] ?? "";
|
|
@@ -41926,7 +41928,7 @@ var VALID_TEMPLATES = /* @__PURE__ */ new Set([
|
|
|
41926
41928
|
]);
|
|
41927
41929
|
async function classifyWithLLM(task) {
|
|
41928
41930
|
try {
|
|
41929
|
-
const { executeExpert: executeExpert2 } = await import("./expert-bridge-
|
|
41931
|
+
const { executeExpert: executeExpert2 } = await import("./expert-bridge-5YOPK5IT.js");
|
|
41930
41932
|
const prompt = [
|
|
41931
41933
|
"Classify this task into exactly one pipeline template.",
|
|
41932
41934
|
"Templates: dev (implementation/bug fix/refactor), research (investigate/evaluate/compare),",
|
|
@@ -41994,7 +41996,6 @@ async function runAdaptiveOrchestrator(task, options) {
|
|
|
41994
41996
|
confidence: classification.confidence
|
|
41995
41997
|
});
|
|
41996
41998
|
const result = await runGraphPipeline(cleanTask, template, options.stages, options);
|
|
41997
|
-
recordPipelineOutcome(template.id, classification, result.success);
|
|
41998
41999
|
return { ...result, selectionMethod, taskClassification: classification };
|
|
41999
42000
|
}
|
|
42000
42001
|
function resolveTemplate(templateId) {
|
|
@@ -42005,21 +42006,6 @@ function resolveTemplate(templateId) {
|
|
|
42005
42006
|
if (fallback !== void 0) return fallback;
|
|
42006
42007
|
return { id: "dev", name: "Development", stages: [] };
|
|
42007
42008
|
}
|
|
42008
|
-
function recordPipelineOutcome(templateId, classification, success) {
|
|
42009
|
-
try {
|
|
42010
|
-
getOutcomeStore().append({
|
|
42011
|
-
id: `pipeline-${templateId}-${String(Date.now())}`,
|
|
42012
|
-
cli: "claude",
|
|
42013
|
-
category: "code_generation",
|
|
42014
|
-
model: `pipeline-${templateId}`,
|
|
42015
|
-
success,
|
|
42016
|
-
durationMs: 0,
|
|
42017
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
42018
|
-
source: "delegate"
|
|
42019
|
-
});
|
|
42020
|
-
} catch {
|
|
42021
|
-
}
|
|
42022
|
-
}
|
|
42023
42009
|
|
|
42024
42010
|
// src/security/sarif-types.ts
|
|
42025
42011
|
import { z as z86 } from "zod";
|
|
@@ -42695,22 +42681,30 @@ var logger37 = createLogger({ component: "agent-executor" });
|
|
|
42695
42681
|
function emitStageEvent2(stage, status, details) {
|
|
42696
42682
|
emitPipelineStageEvent("dev-pipeline", stage, status, details);
|
|
42697
42683
|
}
|
|
42698
|
-
function recordOutcome(
|
|
42684
|
+
function recordOutcome(args) {
|
|
42685
|
+
if (args.cli === void 0) {
|
|
42686
|
+
logger37.debug("Skipping outcome record \u2014 no cli (bridge failed or non-CLI stage)", {
|
|
42687
|
+
taskId: args.taskId,
|
|
42688
|
+
category: args.category,
|
|
42689
|
+
success: args.success
|
|
42690
|
+
});
|
|
42691
|
+
return;
|
|
42692
|
+
}
|
|
42699
42693
|
try {
|
|
42700
42694
|
getOutcomeStore().append({
|
|
42701
|
-
id: `pipeline-${taskId}-${String(Date.now())}`,
|
|
42702
|
-
cli:
|
|
42703
|
-
category,
|
|
42695
|
+
id: `pipeline-${args.taskId}-${String(Date.now())}`,
|
|
42696
|
+
cli: args.cli,
|
|
42697
|
+
category: args.category,
|
|
42704
42698
|
model: "pipeline",
|
|
42705
|
-
success,
|
|
42706
|
-
durationMs,
|
|
42699
|
+
success: args.success,
|
|
42700
|
+
durationMs: args.durationMs,
|
|
42707
42701
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
42708
42702
|
source: "delegate",
|
|
42709
|
-
routingStage:
|
|
42710
|
-
retryCount:
|
|
42703
|
+
routingStage: args.routingStage,
|
|
42704
|
+
retryCount: args.retryCount
|
|
42711
42705
|
});
|
|
42712
42706
|
} catch (error) {
|
|
42713
|
-
logger37.debug("Failed to record outcome", { taskId, error: String(error) });
|
|
42707
|
+
logger37.debug("Failed to record outcome", { taskId: args.taskId, error: String(error) });
|
|
42714
42708
|
}
|
|
42715
42709
|
}
|
|
42716
42710
|
var cachedMemory = null;
|
|
@@ -42718,7 +42712,7 @@ var memoryInitPromise = null;
|
|
|
42718
42712
|
async function initPipelineMemory() {
|
|
42719
42713
|
if (cachedMemory !== null) return cachedMemory;
|
|
42720
42714
|
try {
|
|
42721
|
-
const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-
|
|
42715
|
+
const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-XZ3NJIR4.js");
|
|
42722
42716
|
const { getLearningDir } = await import("./learning-persistence-Q3HTOGTU.js");
|
|
42723
42717
|
const mem = createSessionMemory2(getLearningDir());
|
|
42724
42718
|
mem.startSession(`pipeline-${String(Date.now())}`);
|
|
@@ -42774,7 +42768,7 @@ function recordRoutingExperience(category, success, durationMs) {
|
|
|
42774
42768
|
callRecord(routingMemoryCache);
|
|
42775
42769
|
return;
|
|
42776
42770
|
}
|
|
42777
|
-
void import("./routing-memory-
|
|
42771
|
+
void import("./routing-memory-6DV6ZPAH.js").then(({ createRoutingMemory }) => {
|
|
42778
42772
|
routingMemoryCache = createRoutingMemory();
|
|
42779
42773
|
callRecord(routingMemoryCache);
|
|
42780
42774
|
}).catch((error) => {
|
|
@@ -42803,7 +42797,7 @@ ${text}` : "";
|
|
|
42803
42797
|
}
|
|
42804
42798
|
async function getWeatherContext() {
|
|
42805
42799
|
try {
|
|
42806
|
-
const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-
|
|
42800
|
+
const { generateWeatherReport: generateWeatherReport2 } = await import("./weather-report-ZB4AKOIA.js");
|
|
42807
42801
|
const report = generateWeatherReport2({ includeAdaptive: true });
|
|
42808
42802
|
const mappings = "recommendedMappings" in report ? report.recommendedMappings : [];
|
|
42809
42803
|
if (!Array.isArray(mappings) || mappings.length === 0) return "";
|
|
@@ -42821,7 +42815,7 @@ ${lines}
|
|
|
42821
42815
|
}
|
|
42822
42816
|
async function getMemoryContext(task) {
|
|
42823
42817
|
try {
|
|
42824
|
-
const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-
|
|
42818
|
+
const { createSessionMemory: createSessionMemory2 } = await import("./session-memory-XZ3NJIR4.js");
|
|
42825
42819
|
const { getLearningDir } = await import("./learning-persistence-Q3HTOGTU.js");
|
|
42826
42820
|
const memory = createSessionMemory2(getLearningDir(), { maxLearningsInContext: 10 });
|
|
42827
42821
|
const learnings = memory.searchLearnings(task.slice(0, 200));
|
|
@@ -42872,8 +42866,15 @@ ${task}`
|
|
|
42872
42866
|
const combined = [discover.text, analyze.text].filter(Boolean).join("\n\n");
|
|
42873
42867
|
const totalMs = discover.durationMs + analyze.durationMs;
|
|
42874
42868
|
const success = discover.success || analyze.success;
|
|
42869
|
+
const researchCli = discover.cli ?? analyze.cli;
|
|
42875
42870
|
emitStageEvent2("research", success ? "completed" : "failed", { durationMs: totalMs });
|
|
42876
|
-
recordOutcome(
|
|
42871
|
+
recordOutcome({
|
|
42872
|
+
taskId: "research",
|
|
42873
|
+
category: "research",
|
|
42874
|
+
cli: researchCli,
|
|
42875
|
+
success,
|
|
42876
|
+
durationMs: totalMs
|
|
42877
|
+
});
|
|
42877
42878
|
if (success && combined.length > 50) {
|
|
42878
42879
|
recordLearning(
|
|
42879
42880
|
`Research for "${task.slice(0, 80)}": ${combined.slice(0, 200)}`,
|
|
@@ -42904,7 +42905,13 @@ ${contextBlock}`;
|
|
|
42904
42905
|
await postProgress(config, "Plan", feedback !== void 0 ? "Revising..." : "Planning...");
|
|
42905
42906
|
const r = await executeExpert("architecture", prompt);
|
|
42906
42907
|
emitStageEvent2("plan", r.success ? "completed" : "failed", { durationMs: r.durationMs });
|
|
42907
|
-
recordOutcome(
|
|
42908
|
+
recordOutcome({
|
|
42909
|
+
taskId: "plan",
|
|
42910
|
+
category: "architecture",
|
|
42911
|
+
cli: r.cli,
|
|
42912
|
+
success: r.success,
|
|
42913
|
+
durationMs: r.durationMs
|
|
42914
|
+
});
|
|
42908
42915
|
await postProgress(config, "Plan", `Done (${r.text.length} chars, ${r.durationMs}ms)`);
|
|
42909
42916
|
return r.text || prompt;
|
|
42910
42917
|
},
|
|
@@ -42914,7 +42921,7 @@ ${contextBlock}`;
|
|
|
42914
42921
|
const strategy = config.votingStrategy ?? "higher_order";
|
|
42915
42922
|
await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
|
|
42916
42923
|
try {
|
|
42917
|
-
const { executeVoting } = await import("./consensus-vote-
|
|
42924
|
+
const { executeVoting } = await import("./consensus-vote-CYUPIJXR.js");
|
|
42918
42925
|
const votingResult = await executeVoting(
|
|
42919
42926
|
{
|
|
42920
42927
|
proposal: plan.slice(0, 4e3),
|
|
@@ -42932,7 +42939,13 @@ ${contextBlock}`;
|
|
|
42932
42939
|
const feedback = votingResult.votes.filter((v) => v.vote.decision !== "approve").map((v) => v.vote.reasoning).join("\n");
|
|
42933
42940
|
const ms = getTimeProvider().now() - start;
|
|
42934
42941
|
emitStageEvent2("vote", "completed", { durationMs: ms });
|
|
42935
|
-
recordOutcome(
|
|
42942
|
+
recordOutcome({
|
|
42943
|
+
taskId: "vote",
|
|
42944
|
+
category: "planning",
|
|
42945
|
+
cli: void 0,
|
|
42946
|
+
success: approved,
|
|
42947
|
+
durationMs: ms
|
|
42948
|
+
});
|
|
42936
42949
|
await postProgress(
|
|
42937
42950
|
config,
|
|
42938
42951
|
"Vote",
|
|
@@ -42945,7 +42958,13 @@ ${contextBlock}`;
|
|
|
42945
42958
|
} catch (error) {
|
|
42946
42959
|
const msg = error instanceof Error ? error.message : String(error);
|
|
42947
42960
|
emitStageEvent2("vote", "failed", { error: msg });
|
|
42948
|
-
recordOutcome(
|
|
42961
|
+
recordOutcome({
|
|
42962
|
+
taskId: "vote",
|
|
42963
|
+
category: "planning",
|
|
42964
|
+
cli: void 0,
|
|
42965
|
+
success: false,
|
|
42966
|
+
durationMs: getTimeProvider().now() - start
|
|
42967
|
+
});
|
|
42949
42968
|
await postProgress(config, "Vote", `Error (auto-approved): ${msg.slice(0, 200)}`);
|
|
42950
42969
|
return { kind: "approved", approvalPercentage: 0 };
|
|
42951
42970
|
}
|
|
@@ -42962,7 +42981,13 @@ ${plan}`
|
|
|
42962
42981
|
);
|
|
42963
42982
|
const tasks = parseTasksFromResponse(r.text, plan);
|
|
42964
42983
|
emitStageEvent2("decompose", "completed", { durationMs: r.durationMs });
|
|
42965
|
-
recordOutcome(
|
|
42984
|
+
recordOutcome({
|
|
42985
|
+
taskId: "decompose",
|
|
42986
|
+
category: "planning",
|
|
42987
|
+
cli: r.cli,
|
|
42988
|
+
success: r.success,
|
|
42989
|
+
durationMs: r.durationMs
|
|
42990
|
+
});
|
|
42966
42991
|
await postProgress(config, "PM", `${tasks.length} task(s)`);
|
|
42967
42992
|
return tasks;
|
|
42968
42993
|
},
|
|
@@ -42982,7 +43007,13 @@ ${task.description}${fb}`
|
|
|
42982
43007
|
emitStageEvent2(`impl-${task.id}`, r.success ? "completed" : "failed", {
|
|
42983
43008
|
durationMs: r.durationMs
|
|
42984
43009
|
});
|
|
42985
|
-
recordOutcome(
|
|
43010
|
+
recordOutcome({
|
|
43011
|
+
taskId: task.id,
|
|
43012
|
+
category: "code_generation",
|
|
43013
|
+
cli: r.cli,
|
|
43014
|
+
success: r.success,
|
|
43015
|
+
durationMs: r.durationMs
|
|
43016
|
+
});
|
|
42986
43017
|
recordRoutingExperience("code_generation", r.success, r.durationMs);
|
|
42987
43018
|
await postProgress(config, `Code [${task.id}]`, `Done (${r.durationMs}ms)`);
|
|
42988
43019
|
return r.text || `[Implementation failed: ${r.error}]`;
|
|
@@ -43005,7 +43036,13 @@ Verdict: PASS/NEEDS_WORK/REJECT`
|
|
|
43005
43036
|
emitStageEvent2(`qa-${task.id}`, review.verdict === "pass" ? "completed" : "failed", {
|
|
43006
43037
|
durationMs: r.durationMs
|
|
43007
43038
|
});
|
|
43008
|
-
recordOutcome(
|
|
43039
|
+
recordOutcome({
|
|
43040
|
+
taskId: task.id,
|
|
43041
|
+
category: "code_review",
|
|
43042
|
+
cli: r.cli,
|
|
43043
|
+
success: review.verdict === "pass",
|
|
43044
|
+
durationMs: r.durationMs
|
|
43045
|
+
});
|
|
43009
43046
|
if (review.verdict === "pass") {
|
|
43010
43047
|
recordLearning(`Task "${task.title}" passed QA`, 0.8, "pipeline-qa");
|
|
43011
43048
|
} else {
|
|
@@ -43027,7 +43064,13 @@ Verdict: PASS/NEEDS_WORK/REJECT`
|
|
|
43027
43064
|
const passed = result.verdict !== "fail";
|
|
43028
43065
|
const ms = getTimeProvider().now() - start;
|
|
43029
43066
|
emitStageEvent2("security", passed ? "completed" : "failed", { durationMs: ms });
|
|
43030
|
-
recordOutcome(
|
|
43067
|
+
recordOutcome({
|
|
43068
|
+
taskId: "security",
|
|
43069
|
+
category: "security_review",
|
|
43070
|
+
cli: void 0,
|
|
43071
|
+
success: passed,
|
|
43072
|
+
durationMs: ms
|
|
43073
|
+
});
|
|
43031
43074
|
await postProgress(config, "Security", passed ? "Passed" : `BLOCKED: ${result.details}`);
|
|
43032
43075
|
flushPipelineMemory();
|
|
43033
43076
|
return { passed, feedback: result.details };
|
|
@@ -43772,7 +43815,7 @@ async function extractSymbolsForTask(task) {
|
|
|
43772
43815
|
}
|
|
43773
43816
|
async function queryResearchRegistry(task) {
|
|
43774
43817
|
try {
|
|
43775
|
-
const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-
|
|
43818
|
+
const { synthesizeResearch: synthesizeResearch2 } = await import("./research-helpers-synthesize-77TLYSW4.js");
|
|
43776
43819
|
const topic = task.split(/[.!?\n]/).filter((s) => s.trim().length > 10)[0]?.trim();
|
|
43777
43820
|
if (topic === void 0) return null;
|
|
43778
43821
|
const result = await synthesizeResearch2(topic.slice(0, 50));
|
|
@@ -43857,7 +43900,7 @@ function createScanStageWrapper() {
|
|
|
43857
43900
|
try {
|
|
43858
43901
|
const slug = ctx.task.match(/([a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+)/)?.[1];
|
|
43859
43902
|
if (slug !== void 0) {
|
|
43860
|
-
const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-
|
|
43903
|
+
const { generateSecurityPlan: generateSecurityPlan2 } = await import("./repo-security-plan-HNLMF7J7.js");
|
|
43861
43904
|
const plan = await generateSecurityPlan2({ repo: slug, maxScanners: 10 });
|
|
43862
43905
|
const recs = plan.recommendations.slice(0, 5).map((r) => `${r.priority}: ${r.displayName} (${r.category})`).join("; ");
|
|
43863
43906
|
ctx.sharedMemory.write("scan", "decision", { recommendations: recs });
|
|
@@ -49260,7 +49303,7 @@ function createDeprecatedModeFallback(requestedMode, policyConfig) {
|
|
|
49260
49303
|
logger46.warn(`Sandbox mode "${requestedMode}" is no longer supported; using "policy" mode`, {
|
|
49261
49304
|
requestedMode,
|
|
49262
49305
|
actualMode: "policy",
|
|
49263
|
-
reason: "In-process Docker/Deno executors were deleted in #2551. Use the OpenCode sandbox bootstrap for real isolation (NEXUS_SANDBOX environment variable, see docs/
|
|
49306
|
+
reason: "In-process Docker/Deno executors were deleted in #2551. Use the OpenCode sandbox bootstrap for real isolation (NEXUS_SANDBOX environment variable, see docs/guides/SANDBOXED-USAGE.md)."
|
|
49264
49307
|
});
|
|
49265
49308
|
const executor = new PolicySandboxExecutor(policyConfig);
|
|
49266
49309
|
return {
|
|
@@ -49424,7 +49467,7 @@ var GitHubTaskTracker = class {
|
|
|
49424
49467
|
cachedProvider = null;
|
|
49425
49468
|
async getProvider() {
|
|
49426
49469
|
if (this.cachedProvider !== null) return this.cachedProvider;
|
|
49427
|
-
const { createScmProvider } = await import("./factory-
|
|
49470
|
+
const { createScmProvider } = await import("./factory-DN7SJZ5Z.js");
|
|
49428
49471
|
const result = await createScmProvider({ repo: this.config.repo ?? "" });
|
|
49429
49472
|
if (!result.ok) throw new Error(`SCM provider error: ${result.error.message}`);
|
|
49430
49473
|
this.cachedProvider = result.value;
|
|
@@ -50129,4 +50172,4 @@ export {
|
|
|
50129
50172
|
detectBackend,
|
|
50130
50173
|
createTaskTracker
|
|
50131
50174
|
};
|
|
50132
|
-
//# sourceMappingURL=chunk-
|
|
50175
|
+
//# sourceMappingURL=chunk-3ENBGGYA.js.map
|